Free during launch
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.
Answers HTTP 200 without x402 payment termsour last check, 2026-10-18
0 of 1checks answered this week
n/amedian answer time
$0.02listed price per call
n/aprice it asked us
Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.
Endpoint
POST https://verify.sarnai.dev/verify/deliverable
| Category | Code and developer |
|---|---|
| Provider host | verify.sarnai.dev |
| Networks | eip155:8453, solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp |
| Payment schemes | exact |
| Self-reported calls, 30 days | 3 from 1 payers (the provider's figure, not ours) |
Our checks, last 30 days
| Day | Result | HTTP | Asked | Time |
|---|---|---|---|---|
| 2026-10-18 | no x402 terms | 200 | 269 ms |
Example input (from the provider)
{
"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"
}
Promised output schema (from the provider)
{
"$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\u2026",
"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\u2026",
"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\u2026",
"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",