# Agent Evidence Utility skill Use this HTTP service for U.S. weather forecasts and alerts, deterministic PDF, JSON, and CSV utilities, and evidence-linked structured extraction. Read [OpenAPI](/openapi.json) for request and response schemas and [x402 resources](/.well-known/x402) for the current payment requirements. For UBL or CII e-invoice XML, see [/examples/ubl-invoice-extract](/examples/ubl-invoice-extract). - To extract e-invoice XML, POST {"xml":"..."} to [/v1/ubl-invoice-extract](/v1/ubl-invoice-extract). It accepts UBL Invoice 2.x and UN/CEFACT CII CrossIndustryInvoice XML, including Factur-X/ZUGFeRD XML. Price: 0.005 USDC on Base, Arbitrum, or Polygon. It returns selected invoice fields, up to 100 line items, tax subtotals, totals, and limited arithmetic checks. It is deterministic, makes no model call, fetches no URL, retains no source XML, and is not an EN 16931 compliance validator. - To extract searchable text page by page, GET [/v1/pdf-text](/v1/pdf-text)?url=https%3A%2F%2Fexample.org%2Freport.pdf or POST JSON {"pdf_url":"https://example.org/report.pdf"}. Price: 0.005 USDC. Public HTTPS only; up to 10 MiB and 20 pages; no OCR/model calls. Query strings are redacted in Worker logs, and the URL/PDF are not retained. Scans without text are refused. See [/examples/pdf-text](/examples/pdf-text). - To convert CSV rows into JSON objects, POST JSON such as {"csv":"sku,quantity\nA1,003"} to [/v1/csv-to-json](/v1/csv-to-json). Price: 0.005 USDC on Base, Arbitrum, or Polygon. Comma, semicolon, tab, or pipe delimiters are detected automatically and reported in the response. Values remain strings; blank rows are skipped and counted. Duplicate/empty headers, malformed quoting, and ragged rows are rejected. No source data is retained. See [/examples/csv-to-json](/examples/csv-to-json). - To convert flat JSON objects to CSV, POST JSON such as {"records":[{"sku":"001","note":"A, quoted value"}]} to [/v1/json-to-csv](/v1/json-to-csv). Price: 0.005 USDC on Base, Arbitrum, or Polygon. Values remain text, commas/quotes/line breaks are escaped, and columns can be ordered explicitly. Null or missing values become empty cells; formula-like text is preserved, not sanitized. See [/examples/json-to-csv](/examples/json-to-csv). - To convert JSON records to JSON Lines or parse JSON Lines back into JSON, POST to [/v1/jsonl-convert](/v1/jsonl-convert) with direction json_to_jsonl and records, or direction jsonl_to_json and a jsonl string. Price: 0.005 USDC on Base, Arbitrum, or Polygon; up to 1,000 values, nested to 64 levels, no model call or source retention. See [/examples/jsonl-convert](/examples/jsonl-convert). - To prepare CSV for ETL/database import, POST to [/v1/csv-import-ready](/v1/csv-import-ready); optionally clean selected columns with explicit trim, whitespace, case, or control-character rules, then profile, validate caller-defined rules, and convert passing rows to JSON in one call. Price: 0.005 USDC on Base, Arbitrum, or Polygon. Transformations run before validation; failed imports return issue codes without cell values. See [/examples/csv-import-ready](/examples/csv-import-ready). - To validate CSV against a caller schema and convert it to JSON without profiling, POST to [/v1/csv-import-json](/v1/csv-import-json). You can optionally clean selected columns first with explicit trim, whitespace, case, or control-character rules. Price: 0.005 USDC on Base, Arbitrum, or Polygon. JSON rows are returned only when every record passes; failed validation returns row/column issue codes without cell values, and the detected delimiter is reported. See [/examples/csv-import-json](/examples/csv-import-json). - To discover a schema from CSV, POST JSON to [/v1/csv-profile](/v1/csv-profile). Price: 0.005 USDC on Base, Arbitrum, or Polygon. It returns aggregate column counts and a draft JSON Schema 2020-12 without cell values or model calls. Treat inferred types and required fields as sample-based suggestions and review before production use. - To profile a CSV and validate it against a supplied schema in one request, POST JSON to [/v1/csv-import-audit](/v1/csv-import-audit). Price: 0.005 USDC on Base, Arbitrum, or Polygon; deterministic, no model call, and returns no cell values. See [/examples/csv-import-audit](/examples/csv-import-audit). - To validate JSON records against a contract, POST JSON to [/v1/json-preflight](/v1/json-preflight). Price: 0.005 USDC on Base, Arbitrum, or Polygon; checks nested objects and arrays, required fields, types, allowed values, numeric/string/array bounds, duplicates, and unexpected properties without returning record values or using a model. See [/examples/json-preflight](/examples/json-preflight). - To validate CSV rows before database import or ETL, POST JSON to [/v1/csv-preflight](/v1/csv-preflight). Supply expected column types and optionally required headers, allowed values, numeric bounds, unique/composite keys, duplicate-row checks, or formula-like-cell flags. The deterministic $0.005 USDC call returns row-numbered issue codes without cell values and makes no model call. Formula-like-cell detection is a review heuristic, not a sanitizer. - To batch-classify 2 to 5 short texts with shared caller-defined categories, POST JSON to [/v1/batch-text-insights](/v1/batch-text-insights). Price: 0.02 USDC per batch; one medium-effort gpt-6-luna pass per text, exact quote checks, no independent cross-check. See [/examples/batch-text-insights](/examples/batch-text-insights). - To preflight 2 to 5 CSV files with the same schema in one paid call, POST items plus shared columns/rules to [/v1/batch-csv-preflight](/v1/batch-csv-preflight). Price: 0.01 USDC per batch; combined CSV input is limited to 262,144 characters; deterministic and no model call. See [/examples/batch-csv-preflight](/examples/batch-csv-preflight). - To compare snapshots for recurring CSV schema drift, POST JSON to [/v1/csv-diff](/v1/csv-diff). Price: 0.005 USDC on Base, Arbitrum, or Polygon; deterministic, reports missing-rate changes, numeric-bound counts, and optional required/allowed header contract violations without returning cell values. - To compare successive feed uploads, POST the latest csv and the same private random monitor_token to [/v1/csv-monitor](/v1/csv-monitor). Price: 0.005 USDC per update; only aggregate profile metadata is retained for up to 30 days. Use forget:true to delete it. - For a cheaper one-pass extraction, POST to [/v1/extract-lite](/v1/extract-lite). Price: 0.005 USDC on Base, Arbitrum, or Polygon; no independent model cross-check. - For an intermediate three-pass tier, POST to [/v1/extract-balanced](/v1/extract-balanced). Price: 0.01 USDC on Base, Arbitrum, or Polygon; two independent extractions are reconciled against the source. This is not an accuracy guarantee. - For common invoice header fields from caller-supplied OCR/text, POST only text to [/v1/invoice-extract](/v1/invoice-extract). Price: 0.01 USDC on Base, Arbitrum, or Polygon; three gpt-6-luna medium-effort passes with exact source quotes. Printed dates and amount strings are preserved. It does not extract line items or calculate totals. See [/examples/invoice-extract](/examples/invoice-extract). - To parse an invoice or receipt into header fields and up to 30 printed line items, POST caller-supplied text or OCR output to [/v1/invoice-parse](/v1/invoice-parse). Price: 0.02 USDC on Base, Arbitrum, or Polygon; three gpt-6-luna medium-effort passes with quotes checked against the source. Values stay as printed; no calculations. See [/examples/invoice-parse](/examples/invoice-parse). - For invoice or receipt PDF OCR to structured JSON, POST standard Base64 as pdf_base64 to [/v1/invoice-pdf-parse](/v1/invoice-pdf-parse). Price: 0.01 USDC on Base, Arbitrum, or Polygon. Accepts text or scanned unencrypted PDFs up to two pages and 256 KiB; returns header fields and up to 10 line items with quotes checked against generated OCR text, not PDF bytes. Review all fields against the original. See [/examples/invoice-pdf-parse](/examples/invoice-pdf-parse). - For a cheaper one-pass invoice or receipt parse, POST text or OCR output to [/v1/invoice-parse-lite](/v1/invoice-parse-lite). Price: 0.005 USDC on Base, Arbitrum, or Polygon; one gpt-6-luna medium-effort pass, up to 10 printed line items, and exact quote checks with no independent cross-check. See [/examples/invoice-parse-lite](/examples/invoice-parse-lite). - For cheap multi-record extraction, POST 2 to 5 texts plus a field map to [/v1/batch-extract-lite](/v1/batch-extract-lite). Price: 0.02 USDC per batch, one gpt-6-luna pass per item, no independent cross-check. See [/examples/batch-extract-lite](/examples/batch-extract-lite). - For seven-pass extraction, use [/v1/extract-fields](/v1/extract-fields) or [/v1/extract](/v1/extract). For reviewed multi-record extraction use [/v1/batch-extract](/v1/batch-extract) at 0.05 USDC per batch; for revisions use [/v1/compare](/v1/compare). - Handle the HTTP 402 response with an x402 v2-compatible EVM client on Base (eip155:8453), Arbitrum One (eip155:42161), or Polygon (eip155:137). Use the returned payment requirements and do not retry by bypassing payment. - For JavaScript clients, see the Node.js x402 quick start on the homepage. Use the x402 fetch and EVM packages with a signer for a supported chain; plain fetch will receive the unpaid 402 challenge. - Only /v1/pdf-text fetches validated public HTTPS PDF URLs; redirects and downloads are bounded, and neither URLs nor PDFs are retained. Other routes process caller-supplied data. Verify inferred schemas and model-generated values before consequential use.