{"uid":"cap_aXNOHVbuubwfJkVlStOhF","slug":"nero-labs-dataset-filter-transform-6685a76a","name":"Nero Labs Dataset Filter & Transform","description":"Pay-per-call tools for AI agents, 31 in all: read web pages and RSS feeds, OCR, PDF text, transcription; email, phone and domain checks; UK, Irish and Polish company lookups and UK risk reports; website contacts, tech stack and SEO audits; PageSpeed; AI review, job post and row enrichment; data cleaning, joins, dedupe and diffs; US and EU compliance rules. No account or API key: pay each call in USDC on Base over x402.","url":"https://x402-agent-tools.nerolabs.workers.dev/data/filter?utm_source=zero.xyz","method":"POST","headers":{},"bodySchema":{"type":"object","properties":{"rows":{"type":"array","items":{"type":"object"},"description":"The rows to process. Each row is a JSON object. Keys may differ between rows."},"limit":{"type":"integer","description":"Return at most this many rows."},"offset":{"type":"integer","description":"Skip this many rows after filtering and sorting."},"sortBy":{"type":"array","items":{"type":"object"},"description":"Sort the kept rows, for example [{\"field\":\"price\",\"direction\":\"desc\"}]."},"filters":{"type":"array","items":{"type":"object"},"description":"Conditions a row must satisfy to be kept, for example {\"field\":\"country\",\"operator\":\"equals\",\"value\":\"UK\"} or {\"field\":\"price\",\"operator\":\"greaterThan\",\"value\":100}. Dot paths like \"address.city\" work. Call list_capabilities for all 25 operators."},"distinctBy":{"type":"array","items":{"type":"string"},"description":"Keep only the first row for each combination of these fields. Applied after sorting, so sorting first lets you keep the newest row per key."},"transforms":{"type":"array","items":{"type":"object"},"description":"Transform steps applied to every row, in order. Each step is an object with an \"op\" key, for example {\"op\":\"cast\",\"field\":\"price\",\"to\":\"number\"} or {\"op\":\"compute\",\"field\":\"total\",\"expression\":\"price * qty\"} or {\"op\":\"rename\",\"from\":\"e_mail\",\"to\":\"email\"}. Call list_capabilities for all 26 operations."},"lenientNumbers":{"type":"boolean","description":"On by default: values like \"$1,234.50\", \"49 USD\" and \"12%\" are read as numbers. Set false to require real numeric values."},"filterCombineMode":{"enum":["AND","OR"],"type":"string","description":"Whether a row must match every filter (AND, the default) or any one of them (OR)."},"caseSensitiveFilters":{"type":"boolean","description":"Text comparisons are case-insensitive by default. Set true to make them exact."}}},"responseSchema":{"type":"json","example":{"rows":[{"city":"Bristol","name":"Acme Ltd","revenue":"120000"},{"city":"Bristol","name":"Crane plc","revenue":"980000"}],"summary":{"sortedBy":[{"field":"name","direction":"asc"}],"warnings":[],"keptRowCount":2,"inputRowCount":3,"droppedByLimit":0,"filtersApplied":1,"transformIssues":{},"excludedByFilter":1,"duplicatesRemoved":0,"filterCombineMode":"AND","transformsApplied":0},"_example_note":"Real output, trimmed: long lists cut to their first items and long text shortened."}},"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.002","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"probe","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.002/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.002","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.002","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_GCyq_szy4sA89CVggGy5k","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.002","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Filters, transforms, sorts, and deduplicates up to 500 JSON rows in a single call, returning kept rows with drop-reason counts","exampleAgentPrompt":"I have a list of 200 UK company records as JSON — can you filter it to only rows where city equals 'Bristol' and revenue is greater than 100000, rename the field 'e_mail' to 'email', sort by revenue descending, and remove any duplicates by company name?","exampleUseCases":[{"title":"Clean scraped product listings","prompt":"I scraped 400 product rows from a site and need to clean them up — filter out any rows where price is empty, cast the price field from strings like '$1,234.50' to a real number, sort by price ascending, and deduplicate by product SKU keeping the cheapest one."},{"title":"Segment leads by region and score","prompt":"Here are 300 CRM lead records as JSON. Filter to only leads where country equals 'UK' and score is greater than 70, rename 'lead_score' to 'score', and return the top 50 sorted by score descending."},{"title":"Normalize survey response data","prompt":"I have 150 survey response rows where some text fields have mixed case and extra whitespace. Can you trim all text fields, convert the 'status' field to lowercase, filter out rows where 'response' is empty, and return the cleaned rows with a count of how many were dropped?"}],"resultDescription":"A JSON object containing: 'rows' (the kept rows after all filters, transforms, sort, dedup, offset, and limit are applied) and a 'summary' object with inputRowCount, keptRowCount, excludedByFilter, duplicatesRemoved, droppedByLimit, filtersApplied, transformsApplied, sortedBy, filterCombineMode, transformIssues, and warnings.","failureModes":["More than 500 rows sent — batch must be split","Invalid operator name in filter — call list_capabilities to see all 25 operators","Invalid transform op — call list_capabilities to see all 26 operations","Dot-path field reference doesn't exist in rows — row silently skipped or warning returned","Expression in compute op references undefined field — transform issue recorded in summary","Malformed JSON body — HTTP 400 returned","Payment not attached or insufficient — HTTP 402 returned (minimum $0.002 USDC)"],"whenToPreferThis":"Choose this endpoint when you have a JSON array of up to 500 rows and need to combine filtering, field transformation, sorting, and deduplication in a single atomic call without writing custom code. It is especially useful inside agentic pipelines that process scraped data, API responses, or spreadsheet exports before passing them downstream. Prefer it over writing ad-hoc JavaScript or Python when you want auditable drop-reason counts. If you need AI-powered per-row classification rather than deterministic rules, use the sibling AI-transform endpoint instead.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-10-22T12:41:36.451Z","isFirstParty":false,"canonicalSlug":"nero-labs-dataset-filter-transform-6685a76a"}