Screwtape.ai
MCP server by Screwtape.ai
Check agent work and invoices before payment, with pass/fail/retry verdicts, duplicate invoice detection and signed receipts.
Connect to Screwtape.ai
Sign-in is optional. Connect with Screwtape.ai’s own URL:
It works without signing in. Sign in with Screwtape.ai for more access.
Share this server
Opens this page, with the URL and setup steps.
mcp.tc/i/screwtape-aiAbout
Screwtape.ai is an independent check on AI agent output. It judges a single draft answer against supplied evidence, scores agreement across 2 to 16 answers to flag false consensus, and checks invoices for duplicates before an agent pays them. Successful results can include an Ed25519 signed receipt, and a receipt can be published as a verification badge.
It runs as a hosted streamable HTTP endpoint at https://screwtape.ai/mcp. Calls use a Bearer API key (a free key allows 100 calls per UTC day) or a per-call payment of $0.005 USDC on Base or Solana via x402. Judged content is not stored unless retain is set to true.
What you can do
- Get a pass, fail or retry verdict on one agent output against evidence
- Check an invoice for duplicates before an agent pays it
- Score 2 to 16 answers for false consensus
- Create a free API key through a proof-of-work signup
- Get payment requirements for prepaid call packs
- Publish a signed receipt as a public verified badge
Tools 9
budget_ledgerWritesBudget Ledger
action_receiptWritesAction Receipts
payment_checkRead-onlyPayment check
judgeRead-onlyReturn a pass, fail or retry verdict on one agent output, checked against supplied evidence.
check_duplicate_invoiceWritesJudge an invoice and compare it with earlier recorded invoices to report duplicate status.
consensusRead-onlyScore agreement across 2 to 16 answers and flag copied or thin consensus.
get_api_keyWritesCreate a free API key (100 calls per UTC day) using a SHA-256 proof of work.
publish_receiptWritesPublish one owned signed receipt as a public Screwtape Verified badge page.
try_checkRead-onlyTry one sample duplicate-invoice check (free, no key)
Read from the live server on 15 Nov 2026. Read-only, Writes and Can delete are hints the server declares; your client decides whether to ask before running a tool.
Example prompts
Check this invoice for duplicates before you pay it.
Judge my draft answer against this evidence and tell me if it passes.
Run a consensus check on these five agent answers.
Publish the receipt from the last verdict as a badge.
Set up
Every client connects to screwtape.ai. Pick yours; the page remembers your choice.
Claude Code
- Run this in a terminal, in your project folder:
claude mcp add --transport http screwtape-ai https://screwtape.ai/mcp- Start Claude Code and type
/mcp. screwtape-ai should show as connected. To sign in for more access, pick it and choose Authenticate.
Add --scope user to make it available in every project, not just this one. Works without a key. An API key from Screwtape.ai raises the limits: send it as Authorization: Bearer <YOUR_API_KEY>.
Claude Desktop
- Open Customize → Connectors, click + Add, then Add custom connector.
- Name it Screwtape.ai and paste this URL:
https://screwtape.ai/mcp- Click Add, then Connect. Signing in to Screwtape.ai is optional.
Claude Desktop’s JSON config file only starts local servers. Remote servers go through Connectors, and connectors you add on claude.ai show up here too.
claude.ai
- Open the connector form on claude.ai. This button fills in the name and URL for you:
Add to claude.ai (opens in a new tab)
- Check that the URL reads
https://screwtape.ai/mcpand click Add. - Click Connect. Signing in to Screwtape.ai is optional.
Free plans allow one custom connector. On Team and Enterprise plans an owner adds it under Organization settings → Connectors.
ChatGPT
- On chatgpt.com, go to Plugins, select +, then Add custom MCP server.
- Enter a name for the server.
- Under Connection, paste
https://screwtape.ai/mcpas the server URL, then for authentication choose No authentication, or OAuth to sign in to Screwtape.ai for more access. - Check I understand and want to continue, then select Create as a plugin.
Whether you can add a custom MCP server depends on your ChatGPT plan and your workspace permissions (in Business workspaces, admins and owners can).
Cursor
Add to Cursor (opens in a new tab)
Or add it by hand to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (this project):
{
"mcpServers": {
"screwtape-ai": {
"url": "https://screwtape.ai/mcp"
}
}
}Works without a key. An API key from Screwtape.ai raises the limits: send it as Authorization: Bearer <YOUR_API_KEY>.
VS Code
Install in VS Code (opens in a new tab)
Or from a terminal:
code --add-mcp '{"name":"screwtape-ai","type":"http","url":"https://screwtape.ai/mcp"}'Or commit it to the repo in .vscode/mcp.json:
{
"servers": {
"screwtape-ai": {
"type": "http",
"url": "https://screwtape.ai/mcp"
}
}
}Works without a key. An API key from Screwtape.ai raises the limits: send it as Authorization: Bearer <YOUR_API_KEY>.
Devin Desktop
- Add it to
~/.config/devin/mcp_config.json(macOS and Linux) or%APPDATA%\devin\mcp_config.json(Windows):
{
"mcpServers": {
"screwtape-ai": {
"serverUrl": "https://screwtape.ai/mcp"
}
}
}- Refresh the MCP server list in Cascade.
Devin Desktop is the new name for Windsurf. It reads serverUrl (or url) for remote servers. Works without a key. An API key from Screwtape.ai raises the limits: send it as Authorization: Bearer <YOUR_API_KEY>.
Codex
codex mcp add screwtape-ai --url https://screwtape.ai/mcpOr edit ~/.codex/config.toml directly:
[mcp_servers.screwtape-ai]
url = "https://screwtape.ai/mcp"Works without a key. An API key from Screwtape.ai raises the limits: send it as Authorization: Bearer <YOUR_API_KEY>.
Gemini CLI
gemini mcp add --transport http screwtape-ai https://screwtape.ai/mcpThen, inside Gemini CLI, run /mcp auth screwtape-ai to sign in (optional).
This adds it to the current project. Add -s user to use it everywhere. Works without a key. An API key from Screwtape.ai raises the limits: send it as Authorization: Bearer <YOUR_API_KEY>.
Any client
Most clients accept this shape. Some name the URL field differently: serverUrl in Devin Desktop, httpUrl in Gemini CLI’s settings file.
{
"mcpServers": {
"screwtape-ai": {
"type": "http",
"url": "https://screwtape.ai/mcp"
}
}
}Zed puts servers under context_servers in its settings. Cline needs "type": "streamableHttp", or it assumes SSE.
Client only starts local servers? Bridge it with npx -y mcp-remote https://screwtape.ai/mcp.
Works without a key. An API key from Screwtape.ai raises the limits: send it as Authorization: Bearer <YOUR_API_KEY>.
Embed
Show Screwtape.ai in a README or on your site. Each embed links to this page, uses the server’s own URL, and sets no cookies. How embeds work
The card, the iframe and the JSON are in English. Add ?lang=it, fr, de or es to their address for another language.
README badge
[](https://mcp.tc/i/screwtape-ai)<a href="https://mcp.tc/i/screwtape-ai"><img src="https://mcp.tc/i/screwtape-ai/badge.svg" alt="Screwtape.ai on mcp.tc" height="20"></a>It follows the reader’s light or dark mode. Add ?theme=light or ?theme=dark to fix it, or ?style=compact to show the mark without the word.
Website card
<script src="https://mcp.tc/w/screwtape-ai.js" async></script>The card appears where the tag is. Add data-theme="dark" or data-size="compact" to the tag to change it. The file holds everything it needs, so it makes no other requests and sets no cookies.
iframe
<iframe src="https://mcp.tc/embed/screwtape-ai" title="Screwtape.ai on mcp.tc" width="420" height="200" loading="lazy" allow="clipboard-write" style="border:0;border-radius:8px;max-width:100%"></iframe>Use it on pages that don’t allow scripts. Add ?theme=light or ?theme=dark to the address to fix the colors.
JSON
The listing as data for your own pages and tools: name, tagline, the server’s own URL, tools and the “Add to” links. Any site can read it (CORS is open).
https://mcp.tc/i/screwtape-ai.jsonAI prompt
Paste this into an AI coding assistant, such as Claude Code or Cursor, and it adds the Screwtape.ai card to your site.
Add the mcp.tc card for Screwtape.ai, an MCP server, to my website. It is one static script: no build step, no package to install, no cookies.
Put this tag where the card should appear. The card renders right before it:
```html
<script src="https://mcp.tc/w/screwtape-ai.js" async></script>
```
To show the card somewhere else, put this placeholder there and load the same script once, for example before `</body>`. Keep the link inside: visitors without JavaScript see it.
```html
<div data-mcptc="screwtape-ai"><a href="https://mcp.tc/i/screwtape-ai">Screwtape.ai on mcp.tc</a></div>
```
Options:
- `data-theme="light"` or `"dark"` on the tag or the placeholder fixes the colors. Without it, the card follows the visitor’s light or dark mode.
- `data-size="compact"` gives a smaller card without the tagline.
- The CSS variable `--mcptc-max-width` on the placeholder or a parent sets the width (default `520px`).
- `?lang=` on the script URL sets the card’s language: `en`, `it`, `fr`, `de` or `es`.
If the site has a Content Security Policy, allow `script-src https://mcp.tc` and `img-src data:` (the icon is inline).
For a README or other Markdown docs, use the badge instead:
```markdown
[](https://mcp.tc/i/screwtape-ai)
```
Reference: https://mcp.tc/embedChange history
We read this server’s tool list every 3 hours and record what changes. Last read 15 Nov 2026, 00:16 UTC.
-
1 tool added. Server instructions changed.
New server instructions
Details, 10 Nov 2026, 05:48 UTC
Added 1
payment_checkRead-onlyPayment check: is this seller safe to pay, checked at the moment the agent pays. Compares the 402 price and payee with the seller's published listings when they can be fetched, screens the payee against a local denylist and the bundled OFAC SDN digital-currency address list, flags an over-price versus the intended amount, reuses the duplicate-payment check, and confirms the seller URL returns a valid 402. Returns allow, review or block with reasons and a signed receipt id. Fetches time out in about 2s and fail closed to review. $0.005 per call.
Server instructions
BeforeScrewtape.ai decides whether an AI agent is allowed to spend money, and keeps the proof. Call check_duplicate_invoice (Bearer key or x402 payment) before an agent pays an invoice or payment instruction: it returns duplicate.status (unique, duplicate, possible_duplicate, replay), runs the checks you pass (for example a sum check that line items add up to the total) and judges the invoice against your evidence, such as the purchase order. Pay only when next_step.action is pass; on escalate, do not pay. Every verdict carries a signed receipt as proof of why the money moved or did not. Use budget_ledger to reserve cumulative spend ($0.002); action_receipt signs an action record ($0.003). All
fivepaid tools share 3 free calls per UTC day without a key plus 10/day with a free key. Anonymous: private daily IP namespace, 3/minute, global 2000/day. Free GET /v1/receipt/verify checks action receipts and /.well-known/screwtape-receipt-key publishes their key. Use judge on one draft answer before you return it (send evidence; it does not search the web). Use consensus when 2 to 16 answers to the same task agree and you are about to trust the majority. Use get_api_key only if no key is configured and you can compute SHA-256 in code. judge, check_duplicate_invoice and consensus cost one call each: a free key gives 10 per UTC day, or pay $0.005 USDC on Base or Solana with x402. After anonymous access is exhausted, an unpaid tools/call returns HTTP 200 with isError true and the x402 PaymentRequirements in structuredContent and result._meta['x402/payment-required']. Retry with params._meta['x402/payment']. Settlement is echoed in result._meta['x402/payment-response']. Judged content is not stored unless retain is true or the key owner turned on opt-in data sharing (off by default; redacted, kept 90 days). A successful judge or consensus result includes an Ed25519 receipt when signing isconfigured. Public keys are at https://screwtape.ai/.well-known/screwtape-receipt-keys.json. PO…AfterScrewtape.ai decides whether an AI agent is allowed to spend money, and keeps the proof. Call check_duplicate_invoice (Bearer key or x402 payment) before an agent pays an invoice or payment instruction: it returns duplicate.status (unique, duplicate, possible_duplicate, replay), runs the checks you pass (for example a sum check that line items add up to the total) and judges the invoice against your evidence, such as the purchase order. Pay only when next_step.action is pass; on escalate, do not pay. Every verdict carries a signed receipt as proof of why the money moved or did not. Use budget_ledger to reserve cumulative spend ($0.002); action_receipt signs an action record ($0.003). Use payment_check ($0.005) before paying a seller, to check the 402 payee and price. All six paid tools share 3 free calls per UTC day without a key plus 10/day with a free key. Anonymous: private daily IP namespace, 3/minute, global 2000/day. Free GET /v1/receipt/verify checks action receipts and /.well-known/screwtape-receipt-key publishes their key. Use judge on one draft answer before you return it (send evidence; it does not search the web). Use consensus when 2 to 16 answers to the same task agree and you are about to trust the majority. Use get_api_key only if no key is configured and you can compute SHA-256 in code. judge, check_duplicate_invoice and consensus cost one call each: a free key gives 10 per UTC day, or pay $0.005 USDC on Base or Solana with x402. After anonymous access is exhausted, an unpaid tools/call returns HTTP 200 with isError true and the x402 PaymentRequirements in structuredContent and result._meta['x402/payment-required']. Retry with params._meta['x402/payment']. Settlement is echoed in result._meta['x402/payment-response']. Judged content is not stored unless retain is true or the key owner turned on opt-in data sharing (off by default; redacted, kept 90 days). A successful judge or consensus result includes an Ed25519 receipt when signing is configured.…
-
New version 1.3.0 (was 1.2.2). Reported by the server.
-
1 tool changed.
Details, 9 Nov 2026, 14:50 UTC
Changed 1
action_receiptdescription, input schema and output schemaBeforeAction Receipts: Ed25519-signed, hash-chained attestation of an agent-reported action and status; not evidence the action happened or a legal compliance certification. Per caller and agent chain; concurrent appends serialize with compare-and-set. Raw action/reference are hashed, not stored. event_id per agent is the authoritative idempotency key; a custom HTTP key cannot override it. Same event_id/body returns the same receipt; changed body conflicts. GET /v1/receipt/verify?id=<receipt_id> is free and returns the receipt to anyone who knows its unguessable
ID.Or pass receipt=<JSON> to verify a portable receipt. Keep IDs private if youragent IDs/status are sensitive. Records persist until the API key is deleted; keyless records have no automatic expiry. $0.003 per call; shared 3 free calls per UTC day without a key (daily private IP namespace), plus 10/day with a free key. Anonymous scopes rotate daily; use a key for a persistent ledger/chain. Send the same Bearer key plus a payment…AfterAction Receipts: Ed25519-signed, hash-chained attestation of an agent-reported action and status; not evidence the action happened or a legal compliance certification. Per caller and agent chain; concurrent appends serialize with compare-and-set. Raw action/reference are hashed, not stored. event_id per agent is the authoritative idempotency key; a custom HTTP key cannot override it. Same event_id/body returns the same receipt; changed body conflicts. Optional children (1-64 receipt UUIDs) closes a run: the signed children_root digests ordered child receipt_hash values so any added, dropped or swapped step fails verification. GET /v1/receipt/verify?id=<receipt_id> is free and returns the receipt to anyone who knows its unguessable ID; children_root_valid is set when children are present. A receipt proves the record is unchanged since issued, not that a payment was correct or an outside action happened. Or pass receipt=<JSON> to verify a portable receipt. Keep IDs private if your agent…
- New parameters:
children
- New parameters:
-
New version 1.2.2 (was 1.2.0). Reported by the server.
-
2 tools added and 3 tools changed. Server instructions changed.
New server instructions
Details, 7 Nov 2026, 02:45 UTC
Added 2
action_receiptWritesAction Receipts: Ed25519-signed, hash-chained attestation of an agent-reported action and status; not evidence the action happened or a legal compliance certification. Per caller and agent chain; concurrent appends serialize with compare-and-set. Raw action/reference are hashed, not stored. event_id per agent is the authoritative idempotency key; a custom HTTP key cannot override it. Same event_id/body returns the same receipt; changed body conflicts. GET /v1/receipt/verify?id=<receipt_id> is free and returns the receipt to anyone who knows its unguessable ID. Or pass receipt=<JSON> to verify a portable receipt. Keep IDs private if your agent IDs/status are sensitive. Records persist until the API key is deleted; keyless records have no automatic expiry. $0.003 per call; shared 3 free calls per UTC day without a key (daily private IP namespace), plus 10/day with a free key. Anonymous scopes rotate daily; use a key for a persistent ledger/chain. Send the same Bearer key plus a payment…
budget_ledgerWritesBudget Ledger: atomically reserves reported USD spend across a run and its sub-agents. Returns allow/warn/block, remaining budget, retry storms and spend velocity. Call judge first, then reserve immediately before spending; honor block. This is cooperative accounting, not payment enforcement. Root cap and parent are immutable. Children inherit the root cap (send the same cap). event_id is the authoritative idempotency key; a custom HTTP key cannot override it. New event_id per attempted action; same event_id and body replays without reserving twice. No refunds or cap resets. Warn reservations count as spend. Limits: USD, six decimals, cap at most 1000000. Three matching actions in 60 seconds allowed; fourth blocked. Velocity warning at ten attempts/minute or more than 25% of cap/minute; 80% usage warns. Use action to distinguish operations at a merchant. Stored: IDs, keyed fingerprints and amounts, not raw action/merchant. Records persist until the API key is deleted; keyless records…
Changed 3
check_duplicate_invoicedescriptionBeforeSpend gate for invoices: decides whether an agent may pay this invoice, with a signed receipt as proof. Same as judge with one duplicate check: it compares this invoice with the invoices this caller recorded earlier and also judges it. Call it before an agent pays or approves an invoice or payment instruction. Inputs: the judge inputs (task, agent_output as the invoice JSON, evidence, criteria, checks, mode, tags) plus duplicate {vendor_path, invoice_id_path, amount_path, currency_path?, date_path?, payee_account_path?, accept_payee_change?, window_days?, store?, retain_days?}. Returns the judge result plus duplicate.status (unique, duplicate, possible_duplicate, replay or not_checked). On duplicate or possible_duplicate, next_step.action is escalate: do not pay. Fingerprints are kept per caller; only keyed HMAC fingerprints are stored, and only when store is true. Cost: 1 call, the same as judge.
Needs Authorization: Bearer <key>, or a per-call payment in params._meta withno key(re…AfterSpend gate for invoices: decides whether an agent may pay this invoice, with a signed receipt as proof. Same as judge with one duplicate check: it compares this invoice with the invoices this caller recorded earlier and also judges it. Call it before an agent pays or approves an invoice or payment instruction. Inputs: the judge inputs (task, agent_output as the invoice JSON, evidence, criteria, checks, mode, tags) plus duplicate {vendor_path, invoice_id_path, amount_path, currency_path?, date_path?, payee_account_path?, accept_payee_change?, window_days?, store?, retain_days?}. Returns the judge result plus duplicate.status (unique, duplicate, possible_duplicate, replay or not_checked). On duplicate or possible_duplicate, next_step.action is escalate: do not pay. Fingerprints are kept per caller; only keyed HMAC fingerprints are stored, and only when store is true. Cost: 1 call, the same as judge. First 3 calls per UTC day need no key (daily private IP namespace). Then use Authorizati…
consensusdescriptionThe text shown here is the same before and after: the change is past the first 1,000 characters or in characters that don’t show.
judgedescriptionBeforeA pass/fail/retry verdict on ONE agent output, from a service outside your agent, used as the go/no-go before an agent spends money or acts on that output. Call it before you pay on, return, store or act on a draft answer, especially when you have the evidence the answer should be based on. Do NOT call it to look up facts (it does no web search and only checks against the evidence you pass), to compare several agents' answers (use consensus), or for offline evaluation over a dataset. Inputs: task, agent_output, evidence, criteria, retain, and optional agent_id and version tags. Returns: verdict, score, reasons, engine, next_step, request_id, retention, the tags when sent, and receipt when signing is configured. On pass, use the output. On retry, revise using reasons and call again, at most 2 or 3 times. On fail, stop. Optional checks run first; on failure you get next_step.hint saying what to fix. Branch on next_step.action (pass, retry or escalate). Cost: 1 call.
Needs Authorization:…AfterA pass/fail/retry verdict on ONE agent output, from a service outside your agent, used as the go/no-go before an agent spends money or acts on that output. Call it before you pay on, return, store or act on a draft answer, especially when you have the evidence the answer should be based on. Do NOT call it to look up facts (it does no web search and only checks against the evidence you pass), to compare several agents' answers (use consensus), or for offline evaluation over a dataset. Inputs: task, agent_output, evidence, criteria, retain, and optional agent_id and version tags. Returns: verdict, score, reasons, engine, next_step, request_id, retention, the tags when sent, and receipt when signing is configured. On pass, use the output. On retry, revise using reasons and call again, at most 2 or 3 times. On fail, stop. Optional checks run first; on failure you get next_step.hint saying what to fix. Branch on next_step.action (pass, retry or escalate). Cost: 1 call. First 3 calls per UT…
Server instructions
BeforeScrewtape.ai decides whether an AI agent is allowed to spend money, and keeps the proof. Call check_duplicate_invoice (Bearer key or x402 payment) before an agent pays an invoice or payment instruction: it returns duplicate.status (unique, duplicate, possible_duplicate, replay), runs the checks you pass (for example a sum check that line items add up to the total) and judges the invoice against your evidence, such as the purchase order. Pay only when next_step.action is pass; on escalate, do not pay. Every verdict carries a signed receipt as proof of why the money moved or did not. Use judge on one draft answer before you return it (send evidence; it does not search the web). Use consensus when 2 to 16 answers to the same task agree and you are about to trust the majority. Use get_api_key only if no key is configured and you can compute SHA-256 in code. judge, check_duplicate_invoice and consensus cost one call each: a free key gives 10 per UTC day, or pay $0.005 USDC on Base or Solana with x402. An unpaid tools/call returns HTTP 200 with isError true and the x402 PaymentRequirements in structuredContent and result._meta['x402/payment-required']. Retry with params._meta['x402/payment']. Settlement is echoed in result._meta['x402/payment-response']. Judged content is not stored unless retain is true or the key owner turned on opt-in data sharing (off by default; redacted, kept 90 days). A successful judge or consensus result includes an Ed25519 receipt when signing is configured. Public keys are at https://screwtape.ai/.well-known/screwtape-receipt-keys.json. POST /v1/receipts/verify checks a receipt. publish_receipt publishes one receipt you own. It needs the Bearer key and does not accept x402.
AfterScrewtape.ai decides whether an AI agent is allowed to spend money, and keeps the proof. Call check_duplicate_invoice (Bearer key or x402 payment) before an agent pays an invoice or payment instruction: it returns duplicate.status (unique, duplicate, possible_duplicate, replay), runs the checks you pass (for example a sum check that line items add up to the total) and judges the invoice against your evidence, such as the purchase order. Pay only when next_step.action is pass; on escalate, do not pay. Every verdict carries a signed receipt as proof of why the money moved or did not. Use budget_ledger to reserve cumulative spend ($0.002); action_receipt signs an action record ($0.003). All five paid tools share 3 free calls per UTC day without a key plus 10/day with a free key. Anonymous: private daily IP namespace, 3/minute, global 2000/day. Free GET /v1/receipt/verify checks action receipts and /.well-known/screwtape-receipt-key publishes their key. Use judge on one draft answer before you return it (send evidence; it does not search the web). Use consensus when 2 to 16 answers to the same task agree and you are about to trust the majority. Use get_api_key only if no key is configured and you can compute SHA-256 in code. judge, check_duplicate_invoice and consensus cost one call each: a free key gives 10 per UTC day, or pay $0.005 USDC on Base or Solana with x402. After anonymous access is exhausted, an unpaid tools/call returns HTTP 200 with isError true and the x402 PaymentRequirements in structuredContent and result._meta['x402/payment-required']. Retry with params._meta['x402/payment']. Settlement is echoed in result._meta['x402/payment-response']. Judged content is not stored unless retain is true or the key owner turned on opt-in data sharing (off by default; redacted, kept 90 days). A successful judge or consensus result includes an Ed25519 receipt when signing is configured. Public keys are at https://screwtape.ai/.well-known/screwtape-receipt-keys.json. PO…
-
Server instructions changed.
New server instructions
Details, 6 Nov 2026, 20:45 UTC
Server instructions
BeforeScrewtape.ai decides whether an AI agent is allowed to spend money, and keeps the proof. Call check_duplicate_invoice (Bearer key or x402 payment) before an agent pays an invoice or payment instruction: it returns duplicate.status (unique, duplicate, possible_duplicate, replay), runs the checks you pass (for example a sum check that line items add up to the total) and judges the invoice against your evidence, such as the purchase order. Pay only when next_step.action is pass; on escalate, do not pay. Every verdict carries a signed receipt as proof of why the money moved or did not. Use judge on one draft answer before you return it (send evidence; it does not search the web). Use consensus when 2 to 16 answers to the same task agree and you are about to trust the majority. Use get_api_key only if no key is configured and you can compute SHA-256 in code. judge, check_duplicate_invoice and consensus cost one call each: a free key gives 10 per UTC day, or pay $0.005 USDC on Base or Solana with x402. An unpaid tools/call returns HTTP 200 with isError true and the x402 PaymentRequirements in structuredContent. Retry with params._meta['x402/payment']. Settlement is echoed in result._meta['x402/payment-response']. Judged content is not stored unless retain is true or the key owner turned on opt-in data sharing (off by default; redacted, kept 90 days). A successful judge or consensus result includes an Ed25519 receipt when signing is configured. Public keys are at https://screwtape.ai/.well-known/screwtape-receipt-keys.json. POST /v1/receipts/verify checks a receipt. publish_receipt publishes one receipt you own. It needs the Bearer key and does not accept x402.
AfterScrewtape.ai decides whether an AI agent is allowed to spend money, and keeps the proof. Call check_duplicate_invoice (Bearer key or x402 payment) before an agent pays an invoice or payment instruction: it returns duplicate.status (unique, duplicate, possible_duplicate, replay), runs the checks you pass (for example a sum check that line items add up to the total) and judges the invoice against your evidence, such as the purchase order. Pay only when next_step.action is pass; on escalate, do not pay. Every verdict carries a signed receipt as proof of why the money moved or did not. Use judge on one draft answer before you return it (send evidence; it does not search the web). Use consensus when 2 to 16 answers to the same task agree and you are about to trust the majority. Use get_api_key only if no key is configured and you can compute SHA-256 in code. judge, check_duplicate_invoice and consensus cost one call each: a free key gives 10 per UTC day, or pay $0.005 USDC on Base or Solana with x402. An unpaid tools/call returns HTTP 200 with isError true and the x402 PaymentRequirements in structuredContent and result._meta['x402/payment-required']. Retry with params._meta['x402/payment']. Settlement is echoed in result._meta['x402/payment-response']. Judged content is not stored unless retain is true or the key owner turned on opt-in data sharing (off by default; redacted, kept 90 days). A successful judge or consensus result includes an Ed25519 receipt when signing is configured. Public keys are at https://screwtape.ai/.well-known/screwtape-receipt-keys.json. POST /v1/receipts/verify checks a receipt. publish_receipt publishes one receipt you own. It needs the Bearer key and does not accept x402.
-
1 tool added, 1 tool removed and 4 tools changed. Server instructions changed.
New server instructions
Details, 5 Nov 2026, 23:46 UTC
Added 1
try_checkRead-onlySee what a spend check returns before you have a key. Runs ONE sample check on a fixed demo invoice: a duplicate match against an invoice paid earlier, required fields, and a sum check that the line items add up to the total. Call it once to learn the response shape. Do NOT call it on your own invoices (it ignores them; use check_duplicate_invoice) or in a loop: it is limited to 5 calls per hour per IP and per MCP session. Inputs: scenario (optional: duplicate, the default, clean, or bad_total). Returns: demo, scenario, invoice, earlier_invoice, duplicate.status (unique or duplicate), checks, next_step.action (pass, retry or escalate), note, next_action and request_id. No receipt and nothing is stored. Cost: free. Needs no key.
Removed 1
buy_packRetired. No prepaid pack is sold to agents any more (Starter and Builder were retired), so this tool always returns the error pack_retired with how a person buys the Sandbox Evaluation Pack by card. It does not move funds and needs no key. Kept so existing clients get a clear answer. To pay per call without a key, call judge or consensus and handle the x402 payment requirements.
Changed 4
check_duplicate_invoicedescription, input schema and output schemaBeforeDuplicate invoice check beforean agentpays.Same as judge with one duplicate check: it compares this invoice with the invoices thisAPI keyrecorded earlier and also judges it. Call it before an agent pays or approves an invoice or payment instruction. Inputs: the judge inputs (task, agent_output as the invoice JSON, evidence, criteria, checks, mode, tags) plus duplicate {vendor_path, invoice_id_path, amount_path, currency_path?, date_path?, window_days?, store?, retain_days?}. Returns the judge result plus duplicate.status (unique, duplicate, possible_duplicate, replay or not_checked). On duplicate or possible_duplicate, next_step.action is escalate: do not pay.Needs Authorization: Bearer, because fingerprintsare kept perkey;only keyed HMAC fingerprints are stored, and only when store is true. Cost: 1 call, the samepriceas judge.Withouta keyor payment, tools/call is HTTP 200 with isError true and the x402 PaymentRequirements in structuredContent; an x402 payment without a…AfterSpend gate for invoices: decides whether an agent may pay this invoice, with a signed receipt as proof. Same as judge with one duplicate check: it compares this invoice with the invoices this caller recorded earlier and also judges it. Call it before an agent pays or approves an invoice or payment instruction. Inputs: the judge inputs (task, agent_output as the invoice JSON, evidence, criteria, checks, mode, tags) plus duplicate {vendor_path, invoice_id_path, amount_path, currency_path?, date_path?, payee_account_path?, accept_payee_change?, window_days?, store?, retain_days?}. Returns the judge result plus duplicate.status (unique, duplicate, possible_duplicate, replay or not_checked). On duplicate or possible_duplicate, next_step.action is escalate: do not pay. Fingerprints are kept per caller; only keyed HMAC fingerprints are stored, and only when store is true. Cost: 1 call, the same as judge. Needs Authorization: Bearer <key>, or a per-call payment in params._meta with no key (re…
- Description of
checksBeforeOptional. The worker runs each check. A failed check forces verdict fail.
Types:url_contains, json_schema, equals, regex, numeric,onchain,required_fields, types, format,sum,duplicate. duplicate…AfterOptional. The worker runs each check. A failed check forces verdict fail. Types include url_contains, json_schema, equals, regex, numeric, required_fields, types, format, sum and duplicate. duplicate…
- Description of
duplicateBeforeThe duplicate check: dot paths into agent_output for vendor, invoice id and amount, plus optional currency_path, date_path, window_days, store and
retain_days. store true records this invoice's keyed…AfterThe duplicate check: dot paths into agent_output for vendor, invoice id and amount, plus optional currency_path, date_path, payee_account_path, accept_payee_change, window_days, store and retain_days…
- Description of
consensusdescription, input schema and output schemaBeforeFalse-consensus check for 2 to 16 answers to the same task. It scores how the answers agree and flags agreement that looks copied or too thin to trust. Screwtape is not tied to the agent framework or the model that wrote the answers. Call it when several agents, samples or tools answered the same question and you are about to accept the majority. Do NOT call it with a single answer (use judge), with answers to different tasks, or as proof that an answer is correct: high agreement is not evidence. Inputs: task, answers (2 to 16 objects {agent_id?: string, output: string}), optional evidence (a string or an array of strings, used when scoring), retain, and optional call-level agent_id and version tags. The call-level agent_id is not the per-answer agent_id. Returns: consensus_answer, agreement_score, false_consensus_risk (low, medium or high), reasons, clusters, engine, request_id, retention, the tags when sent, and receipt when signing is configured. In that receipt, verdict is false_c…
AfterFalse-consensus check for 2 to 16 answers to the same task, so a group of agents does not approve a spend just because they copied each other. It scores how the answers agree and flags agreement that looks copied or too thin to trust. Screwtape is not tied to the agent framework or the model that wrote the answers. Call it when several agents, samples or tools answered the same question and you are about to accept the majority. Do NOT call it with a single answer (use judge), with answers to different tasks, or as proof that an answer is correct: high agreement is not evidence. Inputs: task, answers (2 to 16 objects {agent_id?: string, output: string}), optional evidence (a string or an array of strings, used when scoring), retain, and optional call-level agent_id and version tags. The call-level agent_id is not the per-answer agent_id. Returns: consensus_answer, agreement_score, false_consensus_risk (low, medium or high), reasons, clusters, engine, request_id, retention, the tags whe…
- Description of
answersBefore2 to 16 answers. Each is {agent_id (optional, string), output (string)}. Use one entry per
independentagent or sample.After2 to 16 answers. Each is {agent_id (optional, string), output (string)}. Use one entry per agent or sample.
- Description of
judgedescription, input schema and output schemaBeforeAn independent pass/fail/retry verdict on ONE agent output. Call it before you return, store or act on a draft answer, especially when you have the evidence the answer should be based on. Do NOT call it to look up facts (it does no web search and only checks against the evidence you pass), to compare several agents' answers (use consensus), or for offline evaluation over a dataset. Inputs: task, agent_output, evidence, criteria, retain, and optional agent_id and version tags. Returns: verdict, score, reasons, engine, next_step, request_id, retention, the tags when sent, and receipt when signing is configured. On pass, use the output. On retry, revise using reasons and call again, at most 2 or 3 times. On fail, stop. Optional checks run first; on failure you get next_step.hint saying what to fix. Branch on next_step.action (pass, retry or escalate). Cost: 1 call. A free key covers 10 calls per UTC day; without a key, pay $0.005 USDC on Base or Solana per call with x402. Without a key o…
AfterA pass/fail/retry verdict on ONE agent output, from a service outside your agent, used as the go/no-go before an agent spends money or acts on that output. Call it before you pay on, return, store or act on a draft answer, especially when you have the evidence the answer should be based on. Do NOT call it to look up facts (it does no web search and only checks against the evidence you pass), to compare several agents' answers (use consensus), or for offline evaluation over a dataset. Inputs: task, agent_output, evidence, criteria, retain, and optional agent_id and version tags. Returns: verdict, score, reasons, engine, next_step, request_id, retention, the tags when sent, and receipt when signing is configured. On pass, use the output. On retry, revise using reasons and call again, at most 2 or 3 times. On fail, stop. Optional checks run first; on failure you get next_step.hint saying what to fix. Branch on next_step.action (pass, retry or escalate). Cost: 1 call. Needs Authorization:…
- Description of
checksBeforeOptional. The worker runs each check. A failed check forces verdict fail.
Types:url_contains, json_schema, equals, regex, numeric,onchain,required_fields, types, format,sum,duplicate. duplicate…AfterOptional. The worker runs each check. A failed check forces verdict fail. Types include url_contains, json_schema, equals, regex, numeric, required_fields, types, format, sum and duplicate. duplicate…
- Description of
publish_receiptdescriptionBeforePublish a signed receipt you own so a public page and a Screwtape Verified badge can link to that one verdict. Call it when you want to show that a specific output received a specific verdict. Do NOT call it to certify an agent in general: the page says this output received this verdict at this time, and it is not a general safety certification of the agent. Nothing is public until this call. Inputs: receipt_id (required), include_content (optional boolean, default false; true stores and shows the task and agent output only if that call was retained), label (optional, at most 80 characters), unpublish (optional boolean; true removes the public page). Returns public_url, badge_svg_url, embed_html, and embed_markdown. Requires the API key that owns the receipt. It does not accept x402 payment. Cost: free.
AfterPublish a signed receipt you own so a public page and a Screwtape Verified badge can link to that one verdict. Call it when you want to show that a specific output received a specific verdict. Do NOT call it to certify an agent in general: the page says this output received this verdict at this time, and it is not a general safety certification of the agent. Nothing is public until this call. Inputs: receipt_id (required), include_content (optional boolean, default false; true stores and shows the task and agent output only if that call was retained), label (optional, at most 80 characters), unpublish (optional boolean; true removes the public page). Returns public_url, badge_svg_url, embed_html, and embed_markdown. Requires the API key that owns the receipt. Cost: free.
Server instructions
BeforeVerify before the agent pays: a separate check on agent work before a payment goes out (invoices, duplicate invoices, reconciliation), with signed receipts. Use check_duplicate_invoice with a Bearer key before an agent pays an invoice; it returns duplicate.status and costs one call like judge. Screwtape also gives false-consensus checks and pass/fail/retry verdicts for any agent output. Use judge on one draft answer before you return it (send evidence; it does not search the web). Use consensus when 2 to 16 answers to the same task agree and you are about to trust the majority. Use get_api_key only if no key is configured and you can compute SHA-256 in code. judge and consensus cost one call each: a free key gives 100 per UTC day, or pay $0.005 USDC on Base or Solana with x402. An unpaid tools/call returns HTTP 200 with isError true and the x402 PaymentRequirements in structuredContent. Retry with params._meta['x402/payment']. Settlement is echoed in result._meta['x402/payment-response']. Judged content is not stored unless retain is true or the key owner turned on opt-in data sharing (off by default; redacted, kept 90 days). A successful judge or consensus result includes an Ed25519 receipt when signing is configured. Public keys are at https://screwtape.ai/.well-known/screwtape-receipt-keys.json. POST /v1/receipts/verify checks a receipt. publish_receipt publishes one receipt you own. It needs the Bearer key and does not accept x402. Not the arXiv paper named Screwtape.
AfterScrewtape.ai decides whether an AI agent is allowed to spend money, and keeps the proof. Call check_duplicate_invoice (Bearer key or x402 payment) before an agent pays an invoice or payment instruction: it returns duplicate.status (unique, duplicate, possible_duplicate, replay), runs the checks you pass (for example a sum check that line items add up to the total) and judges the invoice against your evidence, such as the purchase order. Pay only when next_step.action is pass; on escalate, do not pay. Every verdict carries a signed receipt as proof of why the money moved or did not. Use judge on one draft answer before you return it (send evidence; it does not search the web). Use consensus when 2 to 16 answers to the same task agree and you are about to trust the majority. Use get_api_key only if no key is configured and you can compute SHA-256 in code. judge, check_duplicate_invoice and consensus cost one call each: a free key gives 10 per UTC day, or pay $0.005 USDC on Base or Solana with x402. An unpaid tools/call returns HTTP 200 with isError true and the x402 PaymentRequirements in structuredContent. Retry with params._meta['x402/payment']. Settlement is echoed in result._meta['x402/payment-response']. Judged content is not stored unless retain is true or the key owner turned on opt-in data sharing (off by default; redacted, kept 90 days). A successful judge or consensus result includes an Ed25519 receipt when signing is configured. Public keys are at https://screwtape.ai/.well-known/screwtape-receipt-keys.json. POST /v1/receipts/verify checks a receipt. publish_receipt publishes one receipt you own. It needs the Bearer key and does not accept x402.
-
1 tool changed.
Details, 27 Oct 2026, 11:59 UTC
Changed 1
buy_packdescriptionBeforeRetired. No prepaid pack is sold to agents any more (Starter and Builder were retired), so this tool always returns the error pack_retired with how a person buys the Evaluation Pack by card. It does not move funds and needs no key. Kept so existing clients get a clear answer. To pay per call without a key, call judge or consensus and handle the x402 payment requirements.
AfterRetired. No prepaid pack is sold to agents any more (Starter and Builder were retired), so this tool always returns the error pack_retired with how a person buys the Sandbox Evaluation Pack by card. It does not move funds and needs no key. Kept so existing clients get a clear answer. To pay per call without a key, call judge or consensus and handle the x402 payment requirements.
-
1 tool changed.
Details, 27 Oct 2026, 05:41 UTC
Changed 1
buy_packdescription, title, input schema and hintsBeforeReturn the x402 payment requirements for the Starterprepaid pack($40, 10000 calls), plus howtopaywithUSDC on Base or Solana. pack is starter. This calldoes not move funds anddoes not requireakeyora payment. POST /v1/packs/{pack}/buy with PAYMENT-SIGNATURE to pay. Pay with PayPal at POST /v1/packs/checkout.AfterRetired. No prepaid pack is sold to agents any more (Starter and Builder were retired), so this tool always returns the error pack_retired with how a person buys the Evaluation Pack by card. It does not move funds and needs no key. Kept so existing clients get a clear answer. To pay per call without a key, call judge or consensus and handle the x402 payment requirements.
title
BeforeBuy aprepaidpack with USDCAfterRetired: prepaid packs are no longer sold to agents
- No longer required:
pack - Description of
packBeforestarter ($40, 10000 calls).AfterAny former pack id. Ignored: every pack answers pack_retired.
- No longer required:
-
4 tools changed.
Details, 26 Oct 2026, 05:44 UTC
Changed 4
buy_packdescription and input schemaBeforeReturn the x402 payment requirements for
aStarter ($40, 10000calls) or Builder ($175, 50000 calls) prepaid pack,plus how to pay with USDC on Base or Solana. pack isstarter or builder.This call does not move funds and does not require a key or a payment. POST /v1/packs/{pack}/buy with PAYMENT-SIGNATURE to pay. Pay with PayPal at POST /v1/packs/checkout.AfterReturn the x402 payment requirements for the Starter prepaid pack ($40, 10000 calls), plus how to pay with USDC on Base or Solana. pack is starter. This call does not move funds and does not require a key or a payment. POST /v1/packs/{pack}/buy with PAYMENT-SIGNATURE to pay. Pay with PayPal at POST /v1/packs/checkout.
- Description of
packBeforestarter ($40, 10000
calls) or builder ($175, 50000calls).Afterstarter ($40, 10000 calls).
- Description of
consensusdescriptionThe text shown here is the same before and after: the change is past the first 1,000 characters or in characters that don’t show.
get_api_keydescriptionBeforeCreate a free Screwtape.ai API key (100 calls per UTC day) with no human approval. Call it only when no Screwtape key is configured and you can compute SHA-256 with a code tool, because the proof of work must be computed exactly, not guessed. Do NOT call it when a key already exists, to get more quota (it is limited to 5 keys per IP per hour and per UTC day), or without a valid pow_nonce. A missing nonce returns an error that describes the challenge. Inputs: pow_nonce (required string matching ^[A-Za-z0-9_-]{8,64}$; SHA-256 of the UTF-8 string screwtape-signup-v1:<current UTC YYYY-MM-DD>:<nonce> must start with 12 zero bits, which is 3 hex zeros), email (optional), name (optional, at most 80 characters). Returns: api_key (shown once; store it securely and send it as Authorization: Bearer), key metadata and request_id. Only the key's SHA-256 hash is stored. Cost: free. Needs no key and no payment.
AfterCreate a free Screwtape.ai API key (10 calls per UTC day) with no human approval. Call it only when no Screwtape key is configured and you can compute SHA-256 with a code tool, because the proof of work must be computed exactly, not guessed. Do NOT call it when a key already exists, to get more quota (it is limited to 5 keys per IP per hour and per UTC day), or without a valid pow_nonce. A missing nonce returns an error that describes the challenge. Inputs: pow_nonce (required string matching ^[A-Za-z0-9_-]{8,64}$; SHA-256 of the UTF-8 string screwtape-signup-v1:<current UTC YYYY-MM-DD>:<nonce> must start with 12 zero bits, which is 3 hex zeros), email (optional), name (optional, at most 80 characters). Returns: api_key (shown once; store it securely and send it as Authorization: Bearer), key metadata and request_id. Only the key's SHA-256 hash is stored. Cost: free. Needs no key and no payment.
judgedescriptionBeforeAn independent pass/fail/retry verdict on ONE agent output. Call it before you return, store or act on a draft answer, especially when you have the evidence the answer should be based on. Do NOT call it to look up facts (it does no web search and only checks against the evidence you pass), to compare several agents' answers (use consensus), or for offline evaluation over a dataset. Inputs: task, agent_output, evidence, criteria, retain, and optional agent_id and version tags. Returns: verdict, score, reasons, engine, next_step, request_id, retention, the tags when sent, and receipt when signing is configured. On pass, use the output. On retry, revise using reasons and call again, at most 2 or 3 times. On fail, stop. Optional checks run first; on failure you get next_step.hint saying what to fix. Branch on next_step.action (pass, retry or escalate). Cost: 1 call. A free key covers 100 calls per UTC day; without a key, pay $0.005 USDC on Base or Solana per call with x402. Without a key…
AfterAn independent pass/fail/retry verdict on ONE agent output. Call it before you return, store or act on a draft answer, especially when you have the evidence the answer should be based on. Do NOT call it to look up facts (it does no web search and only checks against the evidence you pass), to compare several agents' answers (use consensus), or for offline evaluation over a dataset. Inputs: task, agent_output, evidence, criteria, retain, and optional agent_id and version tags. Returns: verdict, score, reasons, engine, next_step, request_id, retention, the tags when sent, and receipt when signing is configured. On pass, use the output. On retry, revise using reasons and call again, at most 2 or 3 times. On fail, stop. Optional checks run first; on failure you get next_step.hint saying what to fix. Branch on next_step.action (pass, retry or escalate). Cost: 1 call. A free key covers 10 calls per UTC day; without a key, pay $0.005 USDC on Base or Solana per call with x402. Without a key o…
-
New version 1.2.0 (was 1.1.0). Reported by the server.
-
3 tools changed.
Details, 24 Oct 2026, 19:45 UTC
Changed 3
check_duplicate_invoiceconsensusjudgeThe 10 newest entries show every detail; older ones show names only.
-
Tracking started: 6 tools.
FAQ
Can I paste mcp.tc/i/screwtape-ai into my MCP client?
No. mcp.tc links are pages, not server addresses. Connect with https://screwtape.ai/mcp, so your client talks to Screwtape.ai directly. The quick link is for sharing: it opens this page, with setup steps for every client.
Does Screwtape.ai need an API key or a sign-in?
Not to start. Screwtape.ai works without signing in and offers sign-in for more access.
Is Screwtape.ai a remote or a local server?
Remote. Screwtape.ai hosts it at https://screwtape.ai/mcp, and it speaks Streamable HTTP. There’s nothing to install.
What can Screwtape.ai do?
It has 9 tools, including budget_ledger, action_receipt and payment_check. You can get a pass, fail or retry verdict on one agent output against evidence, check an invoice for duplicates before an agent pays it and score 2 to 16 answers for false consensus.
Which clients can use it?
Any client that supports remote MCP servers: Claude Code, Claude Desktop, claude.ai, ChatGPT, Cursor, VS Code, Devin Desktop, Codex, Gemini CLI, Zed and others. The setup steps cover each one.
Does mcp.tc track changes to Screwtape.ai?
Yes. Screwtape.ai’s History tab shows each change we find to its tools, down to descriptions and parameters, plus new versions and edits by its owner. Follow the listing to get an email when it changes.
Who wrote this page?
mcp.tc’s robot read Screwtape.ai’s own metadata (its MCP handshake, tool list and public pages), and an AI model drafted the text from it. A person reviews anything the checks can’t confirm. The text can still be wrong, so if you spot a mistake, use Report this listing on this page.
mcp.tc isn’t affiliated with Screwtape.ai. This page was built from Screwtape.ai’s public metadata, last checked on 15 Nov 2026, and an AI model wrote the description, so it can be wrong. Names and marks belong to their owners. Something off? Report this listing.