We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, to analyze how the site is used.

You can freely give, refuse or withdraw your consent at any time.

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.

Sign-in optional (Works without an account; sign in for more)Streamable HTTP

Connect to Screwtape.ai

Sign-in is optional. Connect with Screwtape.ai’s own URL:

https://screwtape.ai/mcp

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-ai

About

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_ledgerWrites

    Budget Ledger

  • action_receiptWrites

    Action Receipts

  • payment_checkRead-only

    Payment check

  • judgeRead-only

    Return a pass, fail or retry verdict on one agent output, checked against supplied evidence.

  • check_duplicate_invoiceWrites

    Judge an invoice and compare it with earlier recorded invoices to report duplicate status.

  • consensusRead-only

    Score agreement across 2 to 16 answers and flag copied or thin consensus.

  • get_api_keyWrites

    Create a free API key (100 calls per UTC day) using a SHA-256 proof of work.

  • publish_receiptWrites

    Publish one owned signed receipt as a public Screwtape Verified badge page.

  • try_checkRead-only

    Try 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

  1. Run this in a terminal, in your project folder:
claude mcp add --transport http screwtape-ai https://screwtape.ai/mcp
  1. 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

  1. Open Customize → Connectors, click + Add, then Add custom connector.
  2. Name it Screwtape.ai and paste this URL:
https://screwtape.ai/mcp
  1. 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

  1. Open the connector form on claude.ai. This button fills in the name and URL for you:
  1. Check that the URL reads https://screwtape.ai/mcp and click Add.
  2. 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

  1. On chatgpt.com, go to Plugins, select +, then Add custom MCP server.
  2. Enter a name for the server.
  3. Under Connection, paste https://screwtape.ai/mcp as the server URL, then for authentication choose No authentication, or OAuth to sign in to Screwtape.ai for more access.
  4. 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

Or add it by hand to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (this project):

mcp.json
{
  "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

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:

.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

  1. Add it to ~/.config/devin/mcp_config.json (macOS and Linux) or %APPDATA%\devin\mcp_config.json (Windows):
mcp_config.json
{
  "mcpServers": {
    "screwtape-ai": {
      "serverUrl": "https://screwtape.ai/mcp"
    }
  }
}
  1. 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/mcp

Or edit ~/.codex/config.toml directly:

config.toml
[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/mcp

Then, 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

Badge preview, lightBadge preview, dark
Markdown
[![Screwtape.ai on mcp.tc](https://mcp.tc/i/screwtape-ai/badge.svg)](https://mcp.tc/i/screwtape-ai)
HTML
<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

HTML
<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

HTML
<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.json

What each field means

AI prompt

Paste this into an AI coding assistant, such as Claude Code or Cursor, and it adds the Screwtape.ai card to your site.

Markdown
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
[![Screwtape.ai on mcp.tc](https://mcp.tc/i/screwtape-ai/badge.svg)](https://mcp.tc/i/screwtape-ai)
```

Reference: https://mcp.tc/embed

Change history

We read this server’s tool list every 3 hours and record what changes. Last read 15 Nov 2026, 00:16 UTC.

Follow Screwtape.ai and we’ll email you when something changes.

  1. , Automatic check

    1 tool added. Server instructions changed.

    New server instructions

    Details, 10 Nov 2026, 05:48 UTC

    Added 1

    • payment_checkRead-only

      Payment 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

    Before

    Screwtape.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…

    After

    Screwtape.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.…

  2. , Automatic check

    New version 1.3.0 (was 1.2.2). Reported by the server.

  3. , Automatic check

    1 tool changed.

    Details, 9 Nov 2026, 14:50 UTC

    Changed 1

    • action_receiptdescription, input schema and output schema
      Before

      Action 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…

      After

      Action 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
  4. , Automatic check

    New version 1.2.2 (was 1.2.0). Reported by the server.

  5. , Automatic check

    2 tools added and 3 tools changed. Server instructions changed.

    New server instructions

    Details, 7 Nov 2026, 02:45 UTC

    Added 2

    • action_receiptWrites

      Action 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_ledgerWrites

      Budget 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_invoicedescription
      Before

      Spend 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…

      After

      Spend 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…

    • consensusdescription

      The 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.

    • judgedescription
      Before

      A 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:…

      After

      A 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

    Before

    Screwtape.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.

    After

    Screwtape.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…

  6. , Automatic check

    Server instructions changed.

    New server instructions

    Details, 6 Nov 2026, 20:45 UTC

    Server instructions

    Before

    Screwtape.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.

    After

    Screwtape.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.

  7. , Automatic check

    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-only

      See 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_pack

      Retired. 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 schema
      Before

      Duplicate invoice check before an agent pays. Same as judge with one duplicate check: it compares this invoice with the invoices this API key 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?, 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 fingerprints are kept per key; only keyed HMAC fingerprints are stored, and only when store is true. Cost: 1 call, the same price as judge. Without a key or payment, tools/call is HTTP 200 with isError true and the x402 PaymentRequirements in structuredContent; an x402 payment without a…

      After

      Spend 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 checks
        Before

        Optional. 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…

        After

        Optional. 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 duplicate
        Before

        The 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…

        After

        The 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…

    • consensusdescription, input schema and output schema
      Before

      False-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…

      After

      False-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 answers
        Before

        2 to 16 answers. Each is {agent_id (optional, string), output (string)}. Use one entry per independent agent or sample.

        After

        2 to 16 answers. Each is {agent_id (optional, string), output (string)}. Use one entry per agent or sample.

    • judgedescription, input schema and output schema
      Before

      An 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…

      After

      A 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 checks
        Before

        Optional. 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…

        After

        Optional. 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…

    • publish_receiptdescription
      Before

      Publish 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.

      After

      Publish 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

    Before

    Verify 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.

    After

    Screwtape.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.

  8. , Automatic check

    1 tool changed.

    Details, 27 Oct 2026, 11:59 UTC

    Changed 1

    • buy_packdescription
      Before

      Retired. 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.

      After

      Retired. 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.

  9. , Automatic check

    1 tool changed.

    Details, 27 Oct 2026, 05:41 UTC

    Changed 1

    • buy_packdescription, title, input schema and hints
      Before

      Return 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.

      After

      Retired. 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

      Before

      Buy a prepaid pack with USDC

      After

      Retired: prepaid packs are no longer sold to agents

      • No longer required: pack
      • Description of pack
        Before

        starter ($40, 10000 calls).

        After

        Any former pack id. Ignored: every pack answers pack_retired.

  10. , Automatic check

    4 tools changed.

    Details, 26 Oct 2026, 05:44 UTC

    Changed 4

    • buy_packdescription and input schema
      Before

      Return the x402 payment requirements for a Starter ($40, 10000 calls) or Builder ($175, 50000 calls) prepaid pack, plus how to pay with USDC on Base or Solana. pack is starter 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.

      After

      Return 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 pack
        Before

        starter ($40, 10000 calls) or builder ($175, 50000 calls).

        After

        starter ($40, 10000 calls).

    • consensusdescription

      The 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_keydescription
      Before

      Create 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.

      After

      Create 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.

    • judgedescription
      Before

      An 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…

      After

      An 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…

  11. , Automatic check

    New version 1.2.0 (was 1.1.0). Reported by the server.

  12. , Automatic check

    3 tools changed.

    Details, 24 Oct 2026, 19:45 UTC

    Changed 3

    check_duplicate_invoice consensus judge

    The 10 newest entries show every detail; older ones show names only.

  13. , Automatic check

    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.