{"slug":"verify-sarnai-dev-verify-deliverable-deb742","title":"Free during launch","host":"verify.sarnai.dev","method":"POST","resource":"https://verify.sarnai.dev/verify/deliverable","category":"code","description":"Free during launch: check AI agent output before you accept or pay for a deliverable against your JSON Schema and rules. Pass/fail, % of checks passed, fix hints, signed attestation and receipt. $0.02 USDC after, x402 v2.","price_listed":0.02,"price_asked":null,"state":"no_terms","state_label":"Answers HTTP 200 without x402 payment terms","checks_7d":1,"answered_7d":0,"latency_ms_median":null,"reported_calls_30d":3,"reported_payers_30d":1,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"badge":"unverified","paid_checks_7d":0,"paid_ok_7d":0,"example_input":{"body":{"agent_id":"example-agent-001","enforce_rules":true,"expected_schema":{"properties":{"findings":{"items":{"properties":{"id":{"type":"string"},"summary":{"minLength":1,"type":"string"}},"required":["id","summary"],"type":"object"},"minItems":1,"type":"array"},"report_title":{"minLength":1,"type":"string"}},"required":["report_title","findings"],"type":"object"},"rules":[{"field":"findings[].id","type":"unique"}],"submitted_output":{"findings":[{"id":"F-1","summary":"Vendor A raised its entry plan by 10%."},{"id":"F-2","summary":"Vendor B added a free tier."}],"report_title":"Q3 competitor pricing scan"},"task_id":"example-task-002"},"bodyType":"json","method":"POST","type":"http"},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"body":{"properties":{"agent_id":{"description":"Optional label identifying the AI agent that produced submitted_output (for example, the seller), used for /reputation and the trust score: records and scores belong to the producer, not to whoever calls this endpoint. It is an unauthenticated label. agent_ids starting with 'test-' are reserved for testing: the verification runs normally but is never recorded, so it cannot affect any reputation or trust score. 1-200…","type":["string","null"]},"bounds":{"description":"Optional per-field min/max, keyed by dotted path with '[]' array wildcard (e.g. 'items[].price'). Numbers or ISO-8601 dates. Violations are reported as informational flags unless enforce_rules is true.","type":["object","null"]},"detail":{"description":"'full' (default) returns everything; 'compact' returns only the summary, next actions, receipt and signature. Use compact inside verify-repair loops to save tokens. 'compact' fields: summary, next_actions, result, the receipt fields (verification_id, task_id, agent_id, output_hash, schema_hash, rules_hash, verified_at, verifier_version, enforce_rules, strict_content_check), verify and attestation - errors, errors_de…","enum":["full","compact"],"type":"string"},"enforce_rules":{"description":"Opt-in. When true, every configured bound and consistency rule must hold, or the result is 'fail' (like strict_content_check), with an 'enforce_rules: ...' entry in errors. That includes a rule or bound that cannot run (its path is missing, a value is not comparable, a value has nothing to be compared against): it fails rather than passing silently, so omitting a field, in the whole path or in any array element the…","type":"boolean"},"expected_schema":{"description":"Required. The JSON Schema (draft-04 to 2020-12) that submitted_output must satisfy: your own requirements, as a JSON object.","type":"object"},"rules":{"description":"Optional cross-field rules: sum_equals, gte, lte, exists_in, unique (duplicate detection). Violations are reported as informational flags unless enforce_rules is true.","items":{"properties":{"equals":{"type":["integer","number","null"]},"equals_field":{"type":["string","null"]},"field":{"type":"string"},"if_present":{"type":"boolean"},"in_field":{"type":["string","null"]},"other_field":{"type":["string","null"]},"tolerance":{"type":"number"},"type":{"type":"string"},"value":{"type":["integer","number","string","null"]},"values":{"type":["array","null"]}},"required":["type","field"],"type":"object"},"type":["array","null"]},"strict_content_check":{"description":"Opt-in. When true, any string in submitted_output containing control characters (e.g. null bytes) or embedded HTML/script markup makes the result 'fail'. When false (default) this is not checked at all.","type":"boolean"},"submitted_output":{"description":"Required. The output being checked: any JSON value (object, array, string, number, boolean or null), exactly as the AI agent produced it."},"task_id":{"description":"Your own identifier for this verification. 1-200 printable characters, no control characters and no lone Unicode surrogate; a request outside that range is rejected (422), not truncated.","type":"string"}},"required":["task_id","expected_schema","submitted_output"],"type":"object"},"bodyType":{"enum":["json","form-data","text"],"type":"string"},"method":{"enum":["POST","PUT","PATCH"],"type":"string"},"type":{"const":"http","type":"string"}},"required":["type","method","bodyType","body"],"type":"object"},"output":{"properties":{"example":{"properties":{"agent_id":{"description":"Echo of the agent_id label supplied in the request; null if none","type":["string","null"]},"attestation":{"description":"Ed25519 signature over this response (every field above, including the receipt fields) plus the timestamp and…","type":"object"},"enforce_rules":{"description":"Whether the request had enforce_rules on: true means every rule and bound had to hold (violations and unrunna…","type":"boolean"},"errors":{"description":"Every violation (schema, then strict-content, then enforce_rules), capped at the first 100 schema-validation…","items":{"type":"string"},"type":"array"},"errors_detail":{"description":"The structured form of the leading entries in `errors`, same order, so a caller can act (check, path, expecte…","items":{"properties":{"check":{"type":"string"},"expected":{"type":"string"},"found":{"type":"string"},"message":{"type":"string"},"path":{"type":"string"}},"required":["check","path","expected","found","message"],"type":"object"},"type":"array"},"errors_detail_omitted":{"description":"errors_total minus errors_detail_total; 0 when every error has a structured form","type":"integer"},"errors_detail_total":{"description":"How many entries in `errors` have a structured form available","type":"integer"},"errors_omitted":{"description":"errors_total minus len(errors); 0 when nothing was cut off","type":"integer"},"errors_total":{"description":"How many errors exist in total","type":"integer"},"flags":{"description":"Integrity findings (placeholder text, possible truncation, bounds and consistency-rule violations)","items":{"properties":{"check":{"type":"string"},"detail":{"type":"string"},"field":{"type":"string"},"severity":{"type":"string"}},"required":["check","field","detail"],"type":"object"},"type":"array"},"flags_omitted":{"description":"Integrity flags beyond the 100 returned; 0 when nothing was cut off","type":"integer"},"flags_total":{"description":"How many flags exist in total (flags holds at most the first 100, plus a flags_truncated marker when there ar…","type":"integer"},"hints":{"description":"Machine-actionable, template-based fix hints: one per schema validation failure (first, in the same order as…","items":{"properties":{"check":{"type":"string"},"expected":{"type":"string"},"found":{"type":"string"},"path":{"type":"string"},"source":{"type":"string"}},"required":["source","check","path","expected","found"],"type":"object"},"type":"array"},"hints_omitted":{"description":"hints_total minus len(hints)","type":"integer"},"hints_total":{"description":"How many hints exist in total (hints holds at most the first 20)","type":"integer"},"integrity_checks":{"description":"Integrity checks that passed out of those evaluated (per string: placeholder and truncation, plus strict cont…","type":"object"},"next_actions":{"description":"What to do next, machine-readable","items":{"type":"object"},"type":"array"},"output_hash":{"description":"SHA-256 (64 lowercase hex chars = 32 bytes; add 0x to use it as a bytes32) of the JCS canonical JSON of submi…","type":["string","null"]},"overall":{"description":"A pooled count across both groups: (schema_compliance.passed + integrity_checks.passed) / (schema_compliance.…","type":"object"},"request_hash":{"description":"SHA-256 (64 lowercase hex chars, no 0x prefix) of the RFC 8785 (JCS) canonical JSON of the request as parsed:…","type":["string","null"]},"result":{"enum":["pass","fail"],"type":"string"},"rules_hash":{"description":"SHA-256 (64 lowercase hex chars) of the RFC 8785 (JCS) canonical JSON of {\"bounds\": <the bounds you supplied…","type":["string","null"]},"schema_compliance":{"description":"JSON Schema assertions that passed out of those evaluated (each keyword such as type/required/minimum, at eac…","type":"object"},"schema_hash":{"description":"SHA-256 (64 lowercase hex chars) of the JCS canonical JSON of expected_schema","type":["string","null"]},"strict_content_check":{"description":"Whether the request had strict_content_check on: true means control characters and embedded HTML/script marku…","type":"boolean"},"summary":{"description":"Compact digest of the verdict: the same `result`, and `blocking_checks` (the distinct check codes that caused…","type":"object"},"task_id":{"type":"string"},"verification_id":{"description":"Unique UUID (v4) for this verification","type":"string"},"verified_at":{"description":"ISO-8601 UTC time this service ran the verification","type":"string"},"verifier_version":{"type":"string"},"verify":{"description":"How to verify this attestation and receipt without any other lookup than this response and public_key_url: ca…","type":"object"}},"required":["summary","next_actions","result","verification_id","task_id","agent_id","output_hash","schema_hash","rules_hash","request_hash","verified_at","verifier_version","enforce_rules","strict_content_check","errors","errors_total","errors_omitted","errors_detail_total","errors_detail_omitted","flags_total","flags_omitted","hints","hints_total","hints_omitted","schema_compliance","integrity_checks","overall","verify","attestation"],"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"},"history":[{"day":"2026-10-18","reachable":true,"status":200,"valid_402":false,"asked_usdc":null,"price_match":null,"latency_ms":269,"error":null}],"description_full":"Free during launch: check AI agent output before you accept or pay for a deliverable against your JSON Schema and rules. Pass/fail, % of checks passed, fix hints, signed attestation and receipt. $0.02 USDC after, x402 v2.","last_updated":"2026-10-15T01:14:40.691Z","schemes":["exact"]}