15trust / 100
Verify Schema
by Agent Output Verifier in Security & trust
x402 APIFailing, checked 4 h ago
Independently verify an agent's output before you pay: an invoice or any deliverable, checked against your JSON Schema and rules like sums matching totals. Pass/fail, % passed, fix hints and a signed receipt. $0.02 USDC, no signup, x402 v2.
POST https://fastapi-service-5ag4.onrender.com/verify/schema
Last 30 days
All checks passedSome failedAll failedNot checked
- Uptime
- 0.0%
- Response time
- - typical, - slowest 5%
- Last check
- 4 h ago: Served content without asking for payment
- Next check
- any minute now
How to call it
# bash or zsh: see the payment challenge (nothing is charged)
curl -g -i -X POST 'https://fastapi-service-5ag4.onrender.com/verify/schema' \
-H 'content-type: application/json' \
--data-raw '{"agent_id":"example-seller-001","enforce_rules":true,"expected_schema":{"properties":{"currency":{"enum":["USD","EUR"]},"invoice_id":{"pattern":"^INV-[0-9]{4}$","type":"string"},"line_items":{"items":{"properties":{"line_total":{"minimum":0,"type":"number"},"qty":{"minimum":1,"type":"integer"},"sku":{"type":"string"}},"required":["sku","qty","line_total"],"type":"object"},"minItems":1,"type":"array"},"total":{"type":"number"}},"required":["invoice_id","currency","line_items","total"],"type":"object"},"rules":[{"equals_field":"total","field":"line_items[].line_total","type":"sum_equals"}],"submitted_output":{"currency":"USD","invoice_id":"INV-7731","line_items":[{"line_total":87,"qty":3,"sku":"CRWL-100"},{"line_total":42.5,"qty":1,"sku":"CRWL-200"}],"total":129.5},"task_id":"example-task-001"}'import { wrapFetchWithPayment } from "@x402/fetch";
import { x402Client } from "@x402/core/client";
import { ExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";
const client = new x402Client().register(
"eip155:8453",
new ExactEvmScheme(privateKeyToAccount(process.env.AGENT_KEY)),
);
const pay = wrapFetchWithPayment(fetch, client);
// Not sure it's safe to pay? Preflight it first for $0.005:
// GET https://toolvet.app/api/v1/check?url=https%3A%2F%2Ffastapi-service-5ag4.onrender.com%2Fverify%2Fschema
const res = await pay("https://fastapi-service-5ag4.onrender.com/verify/schema", {
method: "POST",
headers: { "content-type": "application/json" },
body: "{\"agent_id\":\"example-seller-001\",\"enforce_rules\":true,\"expected_schema\":{\"properties\":{\"currency\":{\"enum\":[\"USD\",\"EUR\"]},\"invoice_id\":{\"pattern\":\"^INV-[0-9]{4}$\",\"type\":\"string\"},\"line_items\":{\"items\":{\"properties\":{\"line_total\":{\"minimum\":0,\"type\":\"number\"},\"qty\":{\"minimum\":1,\"type\":\"integer\"},\"sku\":{\"type\":\"string\"}},\"required\":[\"sku\",\"qty\",\"line_total\"],\"type\":\"object\"},\"minItems\":1,\"type\":\"array\"},\"total\":{\"type\":\"number\"}},\"required\":[\"invoice_id\",\"currency\",\"line_items\",\"total\"],\"type\":\"object\"},\"rules\":[{\"equals_field\":\"total\",\"field\":\"line_items[].line_total\",\"type\":\"sum_equals\"}],\"submitted_output\":{\"currency\":\"USD\",\"invoice_id\":\"INV-7731\",\"line_items\":[{\"line_total\":87,\"qty\":3,\"sku\":\"CRWL-100\"},{\"line_total\":42.5,\"qty\":1,\"sku\":\"CRWL-200\"}],\"total\":129.5},\"task_id\":\"example-task-001\"}",
});
console.log(await res.json());Example input
{
"agent_id": "example-seller-001",
"enforce_rules": true,
"expected_schema": {
"properties": {
"currency": {
"enum": [
"USD",
"EUR"
]
},
"invoice_id": {
"pattern": "^INV-[0-9]{4}$",
"type": "string"
},
"line_items": {
"items": {
"properties": {
"line_total": {
"minimum": 0,
"type": "number"
},
"qty": {
"minimum": 1,
"type": "integer"
},
"sku": {
"type": "string"
}
},
"required": [
"sku",
"qty",
"line_total"
],
"type": "object"
},
"minItems": 1,
"type": "array"
},
"total": {
"type": "number"
}
},
"required": [
"invoice_id",
"currency",
"line_items",
"total"
],
"type": "object"
},
"rules": [
{
"equals_field": "total",
"field": "line_items[].line_total",
"type": "sum_equals"
}
],
"submitted_output": {
"currency": "USD",
"invoice_id": "INV-7731",
"line_items": [
{
"line_total": 87,
"qty": 3,
"sku": "CRWL-100"
},
{
"line_total": 42.5,
"qty": 1,
"sku": "CRWL-200"
}
],
"total": 129.5
},
"task_id": "example-task-001"
}Example output
{
"agent_id": "example-seller-001",
"attestation": {
"algorithm": "Ed25519",
"key_version": "v1-example",
"signature": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"timestamp": "2026-01-01T00:00:00+00:00"
},
"enforce_rules": true,
"errors": [],
"errors_detail": [],
"errors_detail_omitted": 0,
"errors_detail_total": 0,
"errors_omitted": 0,
"errors_total": 0,
"flags": [],
"flags_omitted": 0,
"flags_total": 0,
"hints": [],
"hints_omitted": 0,
"hints_total": 0,
"integrity_checks": {
"passed": 8,
"ratio": 1,
"total": 8
},
"next_actions": [
{
"action": "attach_receipt",
"for": "seller"
},
{
"action": "proceed_to_payment",
"for": "buyer"
}
],
"output_hash": "39e3d0a1431e3ce9cda89a1d2873e1ffb4e34f4eeded2ffa87946fbd941a34c3",
"overall": {
"passed": 30,
"ratio": 1,
"total": 30
},
"request_hash": "5ff8a7a8bb5984b5340bf5cf02ccda5d0d401587674c7dad7ed5f5402db25e7a",
"result": "pass",
"rules_hash": "2acb6de92b88cfbca279ea6d5bd74b7a1e7dec0839dd093dbe041e25df3364d2",
"schema_compliance": {
"passed": 22,
"ratio": 1,
"total": 22
},
"schema_hash": "23ea3213715cfaf2011dabe2a9a69d4ac25b6eceec7ce3d4bfef9a1298b69b2a",
"strict_content_check": false,
"summary": {
"blocking_checks": [],
"result": "pass"
},
"task_id": "example-task-001",
"verification_id": "c30d3398-9717-46de-9a3e-cb38f1074676",
"verified_at": "2026-01-01T00:00:00+00:00",
"verifier_version": "0.4.1",
"verify": {
"canonicalization": "RFC 8785 (JCS)",
"hash_algorithm": "SHA-256",
"key_version": "v1-2026-09c",
"mcp": "https://fastapi-service-5ag4.onrender.com/mcp",
"public_key_url": "https://fastapi-service-5ag4.onrender.com/.well-known/agent-card.json",
"service": "Agent Output Verifier"
}
}Security scan
- No findings. We scan names, descriptions and tool definitions for hidden instructions and other prompt-injection patterns.
Recent checks
| When | Result | HTTP | Time | Price |
|---|---|---|---|---|
| 4 h ago | Served content without asking for payment | 200 | 198 ms | - |
| 8 h ago | Served content without asking for payment | 200 | 432 ms | - |
| 12 h ago | Served content without asking for payment | 200 | 210 ms | - |
| 17 h ago | Served content without asking for payment | 200 | 3.2 s | - |
| 21 h ago | Served content without asking for payment | 200 | 420 ms | - |
| 25 h ago | Served content without asking for payment | 200 | 453 ms | - |
| 29 h ago | Served content without asking for payment | 200 | 225 ms | - |
| 33 h ago | Served content without asking for payment | 200 | 444 ms | - |
| 37 h ago | Served content without asking for payment | 200 | 198 ms | - |
| 41 h ago | Served content without asking for payment | 200 | 413 ms | - |
| 45 h ago | Served content without asking for payment | 200 | 531 ms | - |
| 2 days ago | Served content without asking for payment | 200 | 461 ms | - |
| 2 days ago | Served content without asking for payment | 200 | 164 ms | - |
| 2 days ago | Served content without asking for payment | 200 | 201 ms | - |
| 3 days ago | Served content without asking for payment | 200 | 229 ms | - |