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

WhenResultHTTPTimePrice
4 h agoServed content without asking for payment200198 ms-
8 h agoServed content without asking for payment200432 ms-
12 h agoServed content without asking for payment200210 ms-
17 h agoServed content without asking for payment2003.2 s-
21 h agoServed content without asking for payment200420 ms-
25 h agoServed content without asking for payment200453 ms-
29 h agoServed content without asking for payment200225 ms-
33 h agoServed content without asking for payment200444 ms-
37 h agoServed content without asking for payment200198 ms-
41 h agoServed content without asking for payment200413 ms-
45 h agoServed content without asking for payment200531 ms-
2 days agoServed content without asking for payment200461 ms-
2 days agoServed content without asking for payment200164 ms-
2 days agoServed content without asking for payment200201 ms-
3 days agoServed content without asking for payment200229 ms-