{"id":499066,"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.","card_url":"https://screwtape.ai/.well-known/agent-card.json","endpoint":"https://screwtape.ai/a2a","protocol_version":"0.3","first_seen":"2026-10-28T15:06:20.908108+00:00","last_verified":"2026-10-28T15:06:20.908108+00:00","card":{"url":"https://screwtape.ai/a2a","name":"Screwtape.ai","skills":[{"id":"check_duplicate_invoice","name":"Check an invoice for duplicates before the agent pays","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"],"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.","outputModes":["application/json"]},{"id":"judge","name":"Judge one agent output (pass, fail or retry)","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"],"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.","outputModes":["application/json"]},{"id":"consensus","name":"False-consensus check across 2 to 16 agent answers","tags":["consensus","false-consensus","x402"],"examples":["Five agents agreed. Is that agreement trustworthy?","Score these three answers for false consensus."],"inputModes":["application/json"],"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.","outputModes":["application/json"]},{"id":"get_api_key","name":"Get a free API key (proof of work, no human approval)","tags":["signup","api-key"],"examples":["Create a free Screwtape key for this agent."],"inputModes":["application/json"],"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.","outputModes":["application/json"]},{"id":"publish_receipt","name":"Publish one signed receipt as a Screwtape Verified badge","tags":["receipt","badge","verification"],"examples":["Publish the receipt for this verdict so I can link to it."],"inputModes":["application/json"],"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.","outputModes":["application/json"]}],"iconUrl":"https://screwtape.ai/icon-512.png","version":"1.2.0","provider":{"url":"https://screwtape.ai","organization":"Screwtape.ai"},"security":[{"bearer":[]},{"x402":[]}],"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.","capabilities":{"streaming":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."}],"extendedAgentCard":false,"pushNotifications":false},"protocolVersion":"0.3.0","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"}}},"documentationUrl":"https://screwtape.ai/docs/","defaultInputModes":["application/json","text/plain"],"defaultOutputModes":["application/json"],"preferredTransport":"JSONRPC","supportedInterfaces":[{"url":"https://screwtape.ai/a2a","protocolBinding":"JSONRPC","protocolVersion":"0.3"}],"additionalInterfaces":[{"url":"https://screwtape.ai/a2a","transport":"JSONRPC"}],"securityRequirements":[{"schemes":{"bearer":{"list":[]}}},{"schemes":{"x402":{"list":[]}}}]},"status":"verified","publisher_domain":"screwtape.ai","signature_status":"unsigned","signature_detail":"No card signature supplied","signature_key_url":null,"signature_checked_at":"2026-10-28T15:06:20.908108+00:00","domain_claimed_at":null,"domain_proof_checked_at":null,"source_name":"Publisher Agent Card","source_url":"https://screwtape.ai/.well-known/agent-card.json","last_check":{"checked_at":"2026-10-28T15:06:20.908108+00:00","success":true,"http_status":304,"detail":"Agent Card unchanged; conditional HTTP 304 validated"},"also_published_at":[],"history_urls":["https://screwtape.ai/.well-known/agent-card.json"],"skills":[{"skill_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"],"quality_warning":false},{"skill_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"],"quality_warning":false},{"skill_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"],"quality_warning":false},{"skill_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"],"quality_warning":false},{"skill_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"],"quality_warning":false}],"quality_flags":[],"check_history":{"checks":1,"passed":1},"recent_checks":[{"card_url":"https://screwtape.ai/.well-known/agent-card.json","checked_at":"2026-10-28T15:06:20.908108+00:00","success":true,"http_status":304,"detail":"Agent Card unchanged; conditional HTTP 304 validated"}],"endpoint_tls_check":{"checked_at":"2026-10-28T15:06:20.908108+00:00","success":true,"detail":"Valid TLS connection to advertised endpoint host; no A2A request sent"},"protocol_check":{"checked_at":"2026-10-28T15:06:20.908108+00:00","endpoint":"https://screwtape.ai/a2a","protocol_binding":"JSONRPC","protocol_version":"0.3","state":"unconfirmed","http_status":402,"detail":"Endpoint response did not match the JSON-RPC request","request_diagnostics":{"requests":[{"path":"/a2a","allow":[],"method":"POST","status":402,"version_header":"0.3","protocol_method":"tasks/get","redirect_followed":false}],"capture_version":1}},"declared_primary_endpoint":"https://screwtape.ai/a2a","selected_connection_interface":{"url":"https://screwtape.ai/a2a","protocolBinding":"JSONRPC","protocolVersion":"0.3"},"protocol_interface_checks":[{"endpoint":"https://screwtape.ai/a2a","protocol_binding":"JSONRPC","protocol_version":"0.3","selected":true,"state":"unconfirmed","checked_at":"2026-10-28T15:06:20.908108+00:00","http_status":402,"detail":"Endpoint response did not match the JSON-RPC request","binding_recorded":true},{"endpoint":"https://screwtape.ai/a2a","protocol_binding":"JSONRPC","protocol_version":"0.3.0","selected":false,"state":"unconfirmed","checked_at":"2026-10-28T15:06:20.908108+00:00","http_status":402,"detail":"Endpoint response did not match the JSON-RPC request","binding_recorded":true}],"connection_selection_note":"The selected connection uses an address advertised in the publisher card. Read-only observations do not establish task quality or safety.","x402_price_check":null,"events":[],"relationships":[],"verification":{"agent_card_url":"https://screwtape.ai/.well-known/agent-card.json","last_successful_card_check":"2026-10-28T15:06:20.908108+00:00","latest_card_check":{"checked_at":"2026-10-28T15:06:20.908108+00:00","success":true,"http_status":304,"detail":"Agent Card unchanged; conditional HTTP 304 validated"},"signature_status":"unsigned","signature_checked_at":"2026-10-28T15:06:20.908108+00:00","task_endpoint_tested":true,"task_execution_tested":false,"endpoint_tls_checked_at":"2026-10-28T15:06:20.908108+00:00","endpoint_tls_reachable":true,"protocol_check_state":"unconfirmed","protocol_checked_at":"2026-10-28T15:06:20.908108+00:00","provider_identity_verified":false,"domain_claimed_at":null,"domain_proof_checked_at":null},"synthetic_capability_tests":{"agent_id":499066,"status":"not_tested","reason_code":"not_yet_tested","consent_status":"not_confirmed","latest_observation_status":null,"last_checked_at":null,"fixture_version":"1","reference_demonstration":false,"scope":"A publisher-authorized synthetic test of a dedicated free test endpoint. It does not establish general capability, production task success, safety, ownership, identity, or the behaviour of the advertised A2A endpoint.","methodology_url":"https://localmark.ai/capability-tests","history":[]},"repair_links":{"agent_repair_url":"https://localmark.ai/agents/499066/repair","publisher_report_url":"https://localmark.ai/publishers/screwtape.ai/repair","diagnostics_json_url":"https://localmark.ai/publishers/screwtape.ai/repair/diagnostics.json","diagnostics_csv_url":"https://localmark.ai/publishers/screwtape.ai/repair/diagnostics.csv"},"_localmark":{"contribution":{"optional":true,"directory_access":"free","operator_authorization_required":true,"affects_rankings":false,"message":"LocalMark is free. Optional contributions help fund ongoing checks.","support_url":"https://localmark.ai/support","metadata_url":"https://localmark.ai/api/v1/support/contributions"}}}