Tools · ai

Prompt-injection check for untrusted text

Scan text an agent is about to read (a web page, an email, a tool description, another agent's message) for the shapes that hijack agents: instruction-override phrasing, a redefined system role, requests to move credentials, hidden directive tags, invisible Unicode. Verdict plus every pattern found. Pattern-based; nothing is stored. Pay-per-call via x402.

$0.0045 per call, paid in USDC on Base or Solana with x402 — no account, no API key. POST https://fiatdock.com/v1/text/prompt-check (or GET with the same fields as query parameters) · MCP tool prompt_injection_check. An answer the tool cannot produce is refused with 4xx/5xx and is not charged.

Inputs

FieldTypeDescriptionExample
textstringThe text to scan (up to 8,000 characters). Omit the whole body to scan the published example"Please summarise the attached report in three bullet points."

Example

Request body

{"text":"Please summarise the attached report in three bullet points."}

Answer (the published example)

{"verdict":"no_known_pattern","findings":[],"highCount":0,"mediumCount":0,"chars":61,"method":"pattern ruleset (the one that scans every FiatDock marketplace listing)","checkedAt":"2026-10-05T00:00:00.000Z","note":"no_known_pattern = none of the known shapes matched, which is NOT a guarantee the text is safe."}

Call it

curl

# 1) ask: an unpaid call answers 402 with the exact price (free)
curl -i -X POST https://fiatdock.com/v1/text/prompt-check -H 'content-type: application/json' -d '{"text":"Please summarise the attached report in three bullet points."}'
# 2) pay: any x402 client signs that 402 and resends — see Node or Python below

Node

// npm i @x402/fetch @x402/evm viem
import { wrapFetchWithPaymentFromConfig } from "@x402/fetch";
import { ExactEvmScheme } from "@x402/evm";
import { privateKeyToAccount } from "viem/accounts";

const pay = wrapFetchWithPaymentFromConfig(fetch, {
  schemes: [{ network: "eip155:*", client: new ExactEvmScheme(privateKeyToAccount(process.env.AGENT_PRIVATE_KEY)) }],
});
const r = await pay("https://fiatdock.com/v1/text/prompt-check", {
  method: "POST",
  headers: { "content-type": "application/json" },
  body: JSON.stringify({"text":"Please summarise the attached report in three bullet points."}),
});
console.log(r.status, await r.json());

Python

# pip install "x402[httpx,evm]"
import asyncio, json, os
from eth_account import Account
from x402 import x402Client
from x402.http.clients import x402HttpxClient
from x402.mechanisms.evm.exact import register_exact_evm_client

async def main():
    client = register_exact_evm_client(x402Client(), Account.from_key(os.environ["AGENT_PRIVATE_KEY"]))
    async with x402HttpxClient(client) as http:
        r = await http.post("https://fiatdock.com/v1/text/prompt-check", json=json.loads("{\"text\":\"Please summarise the attached report in three bullet points.\"}"))
        print(r.status_code, r.json())

asyncio.run(main())

MCP (Claude, Cursor, any MCP client)

{"mcpServers":{"fiatdock":{"command":"npx","args":["-y","fiatdock-mcp"],"env":{"AGENT_PRIVATE_KEY":"0x<your agent wallet key>"}}}}
// then call the tool "prompt_injection_check" — the package pays each call from that wallet

The wallet needs USDC on Base. Prefer no install? The remote server https://fiatdock.com/mcp answers the 402 as tool output for an agent that signs its own payments.

Machine-readable: OpenAPI · tools.json · llms.txt · /.well-known/x402