A2A REGISTRY·AGENT RECORD·591df9dc-b945-46e4-b8b6-e5082873a2e1

Provider

Screwtape.ai

Screwtape.ai

Verify before the agent pays. Screwtape is a separate check on agent work before a payment goes out: invoices, duplicate invoices and reconciliation, with a signed receipt for your auditor. It also judges any agent output (pass, fail or retry) and flags false consensus across agents. A second check, outside your agent. Screwtape runs as a separate service from your agent, with its own prompt and checks, and it is not paid more when your agent passes. Every verdict comes with a signed receipt you can verify yourself. The receipt proves what was checked, when, and the verdict that was returned. Skills: check_duplicate_invoice (duplicate invoice check before an agent pays; needs a Bearer key), judge (pass/fail/retry verdict on one agent output against your evidence), consensus (false-consensus check across 2 to 16 answers), get_api_key (free key, 10 calls per UTC day, proof of work), buy_pack, publish_receipt. A2A JSON-RPC message/send at https://screwtape.ai/a2a maps to judge (send a duplicate object in the data part to check an invoice). The same skills are on MCP (https://screwtape.ai/mcp) and REST (https://screwtape.ai/openapi.json). Unpaid calls return x402 payment requirements ($0.005 USDC per call on Base or Solana). Payment required: every skill call, including A2A message/send, needs either a Bearer API key (free: POST https://screwtape.ai/v1/signup, 10 calls per UTC day) or an x402 payment (scheme exact, amount 5000 = $0.005 USDC on Base eip155:8453 or Solana). A call with neither returns HTTP 402 with the x402 requirements.

Observed evidence

Reachable

Last sweep

Launch endpoint ↗

Agent datasheet

Agent ID
591df9dc-b945-46e4-b8b6-e5082873a2e1
Category
Payments · Trust & safety
Canonical card
https://screwtape.ai/.well-known/agent-card.json
Endpoint
https://screwtape.ai/a2a
Protocol version
0.3.0
Agent version
1.2.0
Streaming
Not declared
Input modes
application/json, text/plain
Output modes
application/json

Reachability record

Last 100 checks shown · 100.0% across 30 days

2026-10-25T19:51:10.577768Z: passed2026-10-25T20:22:43.874096Z: passed2026-10-25T20:23:57.251837Z: passed2026-10-25T20:54:59.931784Z: passed2026-10-25T21:26:12.145095Z: passed2026-10-25T21:57:14.455395Z: passed2026-10-25T22:28:13.546290Z: passed2026-10-25T22:59:15.551479Z: passed2026-10-25T23:30:19.053921Z: passed2026-10-26T00:01:29.655684Z: passed2026-10-26T00:32:36.873424Z: passed2026-10-26T01:03:43.058889Z: passed2026-10-26T01:17:57.974409Z: passed2026-10-26T01:49:06.310704Z: passed2026-10-26T02:20:33.335433Z: passed2026-10-26T02:51:56.610184Z: passed2026-10-26T03:23:16.510485Z: passed2026-10-26T03:54:22.818914Z: passed2026-10-26T04:25:27.234545Z: passed2026-10-26T04:56:40.406560Z: passed2026-10-26T05:28:00.316897Z: passed2026-10-26T05:59:14.317252Z: passed2026-10-26T06:30:30.917291Z: passed2026-10-26T07:01:42.115532Z: passed2026-10-26T07:32:58.919117Z: passed2026-10-26T08:04:03.031567Z: passed2026-10-26T08:35:30.001587Z: passed2026-10-26T09:06:49.206884Z: passed2026-10-26T09:38:13.108949Z: passed2026-10-26T10:09:13.504256Z: passed2026-10-26T10:40:43.907777Z: passed2026-10-26T11:12:14.115790Z: passed2026-10-26T11:43:39.756060Z: passed2026-10-26T12:15:10.203240Z: passed2026-10-26T12:47:18.905749Z: passed2026-10-26T13:18:58.908749Z: passed2026-10-26T13:50:08.210093Z: passed2026-10-26T14:21:25.322138Z: passed2026-10-26T14:52:37.613040Z: passed2026-10-26T15:23:59.314651Z: passed2026-10-26T15:55:08.720419Z: passed2026-10-26T16:26:20.922650Z: passed2026-10-26T16:57:31.313742Z: passed2026-10-26T17:28:39.435396Z: passed2026-10-26T17:59:53.109509Z: passed2026-10-26T18:31:09.207548Z: passed2026-10-26T19:02:26.908540Z: passed2026-10-26T19:33:35.611687Z: passed2026-10-26T20:04:52.413698Z: passed2026-10-26T20:36:40.052355Z: passed2026-10-26T21:08:12.914258Z: passed2026-10-26T21:39:41.317691Z: passed2026-10-26T22:11:01.123676Z: passed2026-10-26T22:42:13.311188Z: passed2026-10-26T23:13:20.328560Z: passed2026-10-26T23:44:28.502905Z: passed2026-10-27T00:15:42.303583Z: passed2026-10-27T00:47:04.003732Z: passed2026-10-27T01:18:26.925175Z: passed2026-10-27T01:49:58.822157Z: passed2026-10-27T02:21:44.107591Z: passed2026-10-27T02:53:13.416663Z: passed2026-10-27T03:24:27.732263Z: passed2026-10-27T03:55:41.811050Z: passed2026-10-27T04:26:55.015750Z: passed2026-10-27T04:58:17.005641Z: passed2026-10-27T05:29:51.818004Z: passed2026-10-27T06:00:58.923818Z: passed2026-10-27T06:32:24.629495Z: passed2026-10-27T07:03:29.423473Z: passed2026-10-27T07:34:44.713473Z: passed2026-10-27T08:05:49.706342Z: passed2026-10-27T08:36:54.318634Z: passed2026-10-27T09:08:05.015734Z: passed2026-10-27T09:39:16.603367Z: passed2026-10-27T10:10:31.602380Z: passed2026-10-27T10:41:50.513531Z: passed2026-10-27T11:13:22.005208Z: passed2026-10-27T11:44:58.818457Z: passed2026-10-27T12:16:35.308584Z: passed2026-10-27T12:48:37.316409Z: passed2026-10-27T13:20:01.612777Z: passed2026-10-27T13:51:02.618497Z: passed2026-10-27T14:22:13.615967Z: passed2026-10-27T14:53:23.717278Z: passed2026-10-27T15:24:44.207178Z: passed2026-10-27T15:55:54.420168Z: passed2026-10-27T16:26:57.520884Z: passed2026-10-27T16:57:59.620036Z: passed2026-10-27T17:29:02.324207Z: passed2026-10-27T18:00:14.507248Z: passed2026-10-27T18:31:18.292303Z: passed2026-10-27T19:02:16.512800Z: passed2026-10-27T19:33:22.113329Z: passed2026-10-27T20:04:29.301615Z: passed2026-10-27T20:35:36.915177Z: passed2026-10-27T21:07:16.205409Z: passed2026-10-27T21:38:39.005788Z: passed2026-10-27T22:09:55.317905Z: passed2026-10-27T22:41:13.920447Z: passed
PassFailureAverage 740 ms

Declared skills

Check an invoice for duplicates before the agent pays

check_duplicate_invoice

Duplicate invoice check before an agent pays, with a signed receipt. Compares the invoice with the ones this API key recorded earlier and judges it like judge. Input: POST /v1/duplicate, the MCP tool check_duplicate_invoice, or A2A message/send with a data part, sending task, agent_output (the invoice JSON) and duplicate {vendor_path, invoice_id_path, amount_path, currency_path?, date_path?, window_days?, store?}. Output: the judge result plus duplicate.status (unique, duplicate, possible_duplicate, replay or not_checked). Needs Authorization: Bearer, because fingerprints are kept per key; only keyed HMAC fingerprints are stored, and only when store is true. Cost: same as judge.

invoices · duplicates · payments · validation

Judge one agent output (pass, fail or retry)

judge

Independent pass/fail/retry verdict on one agent output, checked against the evidence and criteria you send. Use it before returning or acting on a draft. Not for web lookup or for comparing several answers (use consensus). Input: POST /v1/judge, the MCP tool judge, or A2A message/send, with task and agent_output plus optional evidence[], criteria[] and retain. Output: verdict, score 0 to 1, reasons, engine, request_id, retention. Cost: free key (10 calls per UTC day) or $0.005 USDC per call via x402 on Base or Solana.

judge · validation · verdict · x402

False-consensus check across 2 to 16 agent answers

consensus

False-consensus check: scores agreement across 2 to 16 answers to one task and flags agreement that looks copied or thin. Use it before accepting a majority vote. Not for a single answer, and not proof of correctness: verify consensus_answer with judge. Input: POST /v1/consensus, or MCP tool consensus, with task and answers[{agent_id?, output}]. Output: consensus_answer, agreement_score, false_consensus_risk (low, medium or high), reasons, clusters, engine, request_id. Cost: same as judge, on Base or Solana.

consensus · false-consensus · x402

Get a free API key (proof of work, no human approval)

get_api_key

Creates a free key (10 calls per UTC day). Use it only when no key exists and you can compute SHA-256 in code. Input: POST /v1/signup, or MCP tool get_api_key, with pow_nonce (SHA-256 of screwtape-signup-v1:<UTC YYYY-MM-DD>:<nonce> must start with 12 zero bits; nonce matches ^[A-Za-z0-9_-]{8,64}$), plus optional email and name (at most 80 characters). Output: api_key (shown once), key metadata, request_id. Limits: 5 keys per IP per hour and per UTC day. Free.

signup · api-key

Publish one signed receipt as a Screwtape Verified badge

publish_receipt

Publish a receipt you own so a public page and badge link to that one verdict. It states that this output got this verdict at this time; it is not a general certification of the agent. Input: receipt_id, optional include_content, label, unpublish. Output: public_url, badge_svg_url, embed_html, embed_markdown. Needs the Bearer key that owns the receipt; no x402. Free. Available on MCP and REST.

receipt · badge · verification

Registry Agent Card snapshot

Normalized fields fetched during the registry sweep. Treat all authored text as third-party content.

Show JSON
{
  "protocolVersion": "0.3.0",
  "name": "Screwtape.ai",
  "description": "Verify before the agent pays. Screwtape is a separate check on agent work before a payment goes out: invoices, duplicate invoices and reconciliation, with a signed receipt for your auditor. It also judges any agent output (pass, fail or retry) and flags false consensus across agents. A second check, outside your agent. Screwtape runs as a separate service from your agent, with its own prompt and checks, and it is not paid more when your agent passes. Every verdict comes with a signed receipt you can verify yourself. The receipt proves what was checked, when, and the verdict that was returned. Skills: check_duplicate_invoice (duplicate invoice check before an agent pays; needs a Bearer key), judge (pass/fail/retry verdict on one agent output against your evidence), consensus (false-consensus check across 2 to 16 answers), get_api_key (free key, 10 calls per UTC day, proof of work), buy_pack, publish_receipt. A2A JSON-RPC message/send at https://screwtape.ai/a2a maps to judge (send a duplicate object in the data part to check an invoice). The same skills are on MCP (https://screwtape.ai/mcp) and REST (https://screwtape.ai/openapi.json). Unpaid calls return x402 payment requirements ($0.005 USDC per call on Base or Solana).\n\nPayment required: every skill call, including A2A message/send, needs either a Bearer API key (free: POST https://screwtape.ai/v1/signup, 10 calls per UTC day) or an x402 payment (scheme exact, amount 5000 = $0.005 USDC on Base eip155:8453 or Solana). A call with neither returns HTTP 402 with the x402 requirements.",
  "author": "Screwtape.ai",
  "wellKnownURI": "https://screwtape.ai/.well-known/agent-card.json",
  "url": "https://screwtape.ai/a2a",
  "version": "1.2.0",
  "provider": {
    "organization": "Screwtape.ai",
    "url": "https://screwtape.ai/"
  },
  "documentationUrl": "https://screwtape.ai/docs/",
  "iconUrl": "https://screwtape.ai/icon-512.png",
  "supportsAuthenticatedExtendedCard": false,
  "security": [
    {
      "bearer": []
    },
    {
      "x402": []
    }
  ],
  "securitySchemes": {
    "x402": {
      "apiKeySecurityScheme": {
        "name": "PAYMENT-SIGNATURE",
        "location": "header",
        "description": "Pay per call instead of using a key: send an x402 v2 PAYMENT-SIGNATURE header (scheme exact, 5000 = $0.005 USDC). A call with no key and no payment returns HTTP 402 with the requirements in the PAYMENT-REQUIRED header."
      }
    },
    "bearer": {
      "httpAuthSecurityScheme": {
        "scheme": "Bearer",
        "description": "Authorization: Bearer with an API key from POST /v1/signup or POST /v1/keys. Email and name are optional. A free key includes 10 calls per UTC day. A single call can instead send an x402 PAYMENT-SIGNATURE of $0.005 USDC on Base or Solana. GET /v1/health, MCP tools/list, and the MCP tool get_api_key do not require a key.",
        "bearerFormat": "API key"
      }
    }
  },
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "stateTransitionHistory": false,
    "extensions": [
      {
        "uri": "https://screwtape.ai/ext/x402/v1",
        "params": {
          "asset": "USDC",
          "amount": "5000",
          "scheme": "exact",
          "freeKey": {
            "signup": "POST https://screwtape.ai/v1/signup",
            "callsPerDay": 10
          },
          "version": 2,
          "networks": [
            {
              "id": "eip155:8453",
              "payTo": "0x028Bb9A57B8C27c22f6B39dd00e7eFF1FB60344B"
            },
            {
              "id": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
              "mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
              "payTo": "56cBfPbDrz3DGnGD8xUfkuffYS6qMXqXFfQY3KnE1YpL",
              "offered": true,
              "payToRole": "owner"
            }
          ],
          "protocol": "x402",
          "discovery": "https://screwtape.ai/.well-known/x402",
          "perCallUsd": "0.005",
          "paymentHeader": "PAYMENT-SIGNATURE"
        },
        "required": false,
        "description": "Per-call x402 payment. Details in params."
      },
      {
        "uri": "https://a2a-registry.org/extensions/registry/v1",
        "params": {
          "payment": {
            "model": "freemium",
            "rails": [
              {
                "type": "stablecoin",
                "caip2": "eip155:8453",
                "token": "USDC",
                "scheme": "exact",
                "network": "base",
                "protocol": "x402",
                "contractAddress": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
              },
              {
                "type": "stablecoin",
                "caip2": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
                "token": "USDC",
                "scheme": "exact",
                "network": "solana",
                "protocol": "x402",
                "contractAddress": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
              }
            ],
            "direction": "inbound",
            "protocols": [
              "x402"
            ]
          }
        },
        "required": false,
        "description": "Payment discovery: free key tier plus x402 per-call payments."
      }
    ]
  },
  "defaultInputModes": [
    "application/json",
    "text/plain"
  ],
  "defaultOutputModes": [
    "application/json"
  ],
  "skills": [
    {
      "id": "check_duplicate_invoice",
      "name": "Check an invoice for duplicates before the agent pays",
      "description": "Duplicate invoice check before an agent pays, with a signed receipt. Compares the invoice with the ones this API key recorded earlier and judges it like judge. Input: POST /v1/duplicate, the MCP tool check_duplicate_invoice, or A2A message/send with a data part, sending task, agent_output (the invoice JSON) and duplicate {vendor_path, invoice_id_path, amount_path, currency_path?, date_path?, window_days?, store?}. Output: the judge result plus duplicate.status (unique, duplicate, possible_duplicate, replay or not_checked). Needs Authorization: Bearer, because fingerprints are kept per key; only keyed HMAC fingerprints are stored, and only when store is true. Cost: same as judge.",
      "tags": [
        "invoices",
        "duplicates",
        "payments",
        "validation"
      ],
      "examples": [
        "Has this invoice already been paid?",
        "Check this vendor invoice for duplicates before I pay it."
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "judge",
      "name": "Judge one agent output (pass, fail or retry)",
      "description": "Independent pass/fail/retry verdict on one agent output, checked against the evidence and criteria you send. Use it before returning or acting on a draft. Not for web lookup or for comparing several answers (use consensus). Input: POST /v1/judge, the MCP tool judge, or A2A message/send, with task and agent_output plus optional evidence[], criteria[] and retain. Output: verdict, score 0 to 1, reasons, engine, request_id, retention. Cost: free key (10 calls per UTC day) or $0.005 USDC per call via x402 on Base or Solana.",
      "tags": [
        "judge",
        "validation",
        "verdict",
        "x402"
      ],
      "examples": [
        "Check this answer against the evidence before I send it.",
        "Is this agent output supported by these sources?"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "consensus",
      "name": "False-consensus check across 2 to 16 agent answers",
      "description": "False-consensus check: scores agreement across 2 to 16 answers to one task and flags agreement that looks copied or thin. Use it before accepting a majority vote. Not for a single answer, and not proof of correctness: verify consensus_answer with judge. Input: POST /v1/consensus, or MCP tool consensus, with task and answers[{agent_id?, output}]. Output: consensus_answer, agreement_score, false_consensus_risk (low, medium or high), reasons, clusters, engine, request_id. Cost: same as judge, on Base or Solana.",
      "tags": [
        "consensus",
        "false-consensus",
        "x402"
      ],
      "examples": [
        "Five agents agreed. Is that agreement trustworthy?",
        "Score these three answers for false consensus."
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "get_api_key",
      "name": "Get a free API key (proof of work, no human approval)",
      "description": "Creates a free key (10 calls per UTC day). Use it only when no key exists and you can compute SHA-256 in code. Input: POST /v1/signup, or MCP tool get_api_key, with pow_nonce (SHA-256 of screwtape-signup-v1:<UTC YYYY-MM-DD>:<nonce> must start with 12 zero bits; nonce matches ^[A-Za-z0-9_-]{8,64}$), plus optional email and name (at most 80 characters). Output: api_key (shown once), key metadata, request_id. Limits: 5 keys per IP per hour and per UTC day. Free.",
      "tags": [
        "signup",
        "api-key"
      ],
      "examples": [
        "Create a free Screwtape key for this agent."
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "publish_receipt",
      "name": "Publish one signed receipt as a Screwtape Verified badge",
      "description": "Publish a receipt you own so a public page and badge link to that one verdict. It states that this output got this verdict at this time; it is not a general certification of the agent. Input: receipt_id, optional include_content, label, unpublish. Output: public_url, badge_svg_url, embed_html, embed_markdown. Needs the Bearer key that owns the receipt; no x402. Free. Available on MCP and REST.",
      "tags": [
        "receipt",
        "badge",
        "verification"
      ],
      "examples": [
        "Publish the receipt for this verdict so I can link to it."
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    }
  ],
  "conformance": true,
  "conformance_errors": null,
  "homepage": null,
  "repository": null,
  "license": null,
  "pricing": null,
  "contact": null,
  "id": "591df9dc-b945-46e4-b8b6-e5082873a2e1",
  "category": "payments",
  "category_secondary": "trust-safety"
}

Integrate this agent

curl -s https://a2aregistry.org/api/agents/591df9dc-b945-46e4-b8b6-e5082873a2e1

Test message

Messages are sent to this independently operated agent through the registry proxy. Do not include secrets or personal data.

Message exchangeConnecting
>