FiatDock
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. An empty body is answered for the published example text (one harmless sentence); send {"text":"…"} to scan your own.
The wallet the 402 directs payment to. Its whole payment record — every payer, every chain — is on the merchant page.
Asset 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
The payTo wallet does not resolve to a registered ERC-8004 agent. That is not a verdict on the service — most of the catalog is unregistered.
Live 402 challenge
Captured by the enrichment pass, not read just now. Prices can change — always read the 402 the endpoint answers with.
{
"docs": "https://fiatdock.com/llms.txt",
"hint": "This endpoint costs $0.0045 USDC per call via x402 on base or Solana (pay ONE entry of `accepts`). NOTHING was charged and nothing was created — a 402 is only the invoice, so retrying is always safe. To pay: sign the requirements in `accepts` (also base64-JSON in the PAYMENT-REQUIRED response header) and retry the SAME request with a PAYMENT-SIGNATURE header (the x402 v2 name; X-PAYMENT is accepted too). Easiest path: run `npx fiatdock-mcp` with AGENT_PRIVATE_KEY set to a Base wallet holding USDC — it signs and retries for you.",
"error": "payment required",
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0xeB12bB2f52EeD33DBa6A00774E48324032Fd87C6",
"amount": "4500",
"scheme": "exact",
"network": "eip155:8453",
"maxTimeoutSeconds": 300
},
{
"asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"extra": {
"feePayer": "GVJJ7rdGiXr5xaYbRwRbjfaJL7fmwRygFi1H6aGqDveb"
},
"payTo": "J79PfB4V9mbNRD6XrWLGAPCQhB1htX4KW5gMYUgddtNV",
"amount": "4500",
"scheme": "exact",
"network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
"maxTimeoutSeconds": 300
}
],
"howToPay": {
"step1": "Pay ONE entry of `accepts` — they are alternatives for the same call (eip155:8453 or solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp). On an EVM chain: sign an EIP-3009 transferWithAuthorization for that entry; the EIP-712 domain is {name, version} from `extra`, chainId from `network`, verifyingContract = `asset`. On Solana: build x402's SVM `exact` payment — a partially-signed SPL TransferChecked transaction whose fee payer is `extra.feePayer`; any x402 SVM client does this (e.g. @x402/svm's ExactSvmScheme). It is valid only until its recent blockhash expires (about a minute), not for `maxTimeoutSeconds` — build it right before you send it.",
"step2": "Fill in the envelope for the ONE entry you chose (that entry, verbatim, as `accepted`), then base64(JSON.stringify(envelope)). Never send more than one.",
"step3": "Send it as the PAYMENT-SIGNATURE request header (X-PAYMENT is also accepted) and retry the SAME request.",
"noWallet": "No signer? `npx fiatdock-mcp` with AGENT_PRIVATE_KEY set to a Base wallet holding USDC signs and retries automatically (it pays the Base entry).",
"notCharged": "A 402 costs nothing — it is the price, not a bill. Retrying is always safe.",
"payloadTemplate": {
"scheme": "exact",
"network": "eip155:8453",
"payload": {
"signature": "<0x + 130 hex: your EIP-712 signature>",
"authorization": {
"to": "0xeB12bB2f52EeD33DBa6A00774E48324032Fd87C6",
"from": "<0x + your wallet address>",
"nonce": "<0x + 64 hex: 32 random bytes, never reused>",
"value": "4500",
"validAfter": "0",
"validBefore": "<unix seconds, e.g. now + 60>"
}
},
"accepted": {
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0xeB12bB2f52EeD33DBa6A00774E48324032Fd87C6",
"amount": "4500",
"scheme": "exact",
"network": "eip155:8453",
"maxTimeoutSeconds": 300
},
"x402Version": 2
}
},
"priceUsd": 0.0045,
"freeAlternative": "GET https://fiatdock.com/v1/token/price?symbol=ETH (free) and GET https://fiatdock.com/v1/quote (free)"
}Accepts
The payment requirements as published to the catalog. Read the live 402 before paying — a price here is a claim, not a quote.
Pay 0.0045 USDC on Base to 0xeB12…d87C6. The signed payment is good for 5 minutes.
- Paid to
- 0xeB12…d87C6
- USD Coin contract
- 0x8335…02913
- Payment window
- 5 minutes
- As published
- 4500 smallest units
That figure is in the token’s smallest units. Roundhouse does not hold this contract’s decimals, so it is shown as published rather than converted.
- Paid to
- J79PfB…ddtNV
- Token contract
- EPjFWd…TDt1v
- Payment window
- 5 minutes
The catalog’s raw entry
[
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0xeB12bB2f52EeD33DBa6A00774E48324032Fd87C6",
"amount": "4500",
"scheme": "exact",
"network": "eip155:8453",
"maxTimeoutSeconds": 300
},
{
"asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"extra": {
"feePayer": "GVJJ7rdGiXr5xaYbRwRbjfaJL7fmwRygFi1H6aGqDveb"
},
"payTo": "J79PfB4V9mbNRD6XrWLGAPCQhB1htX4KW5gMYUgddtNV",
"amount": "4500",
"scheme": "exact",
"network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
"maxTimeoutSeconds": 300
}
]Extensions
{
"bazaar": {
"info": {
"input": {
"body": {
"text": "Please summarise the attached report in three bullet points."
},
"type": "http",
"method": "POST",
"bodyType": "json"
},
"output": {
"type": "json",
"example": {
"note": "no_known_pattern = none of the known shapes matched, which is NOT a guarantee the text is safe.",
"chars": 61,
"method": "pattern ruleset (the one that scans every FiatDock marketplace listing)",
"verdict": "no_known_pattern",
"findings": [],
"checkedAt": "2026-10-05T00:00:00.000Z",
"highCount": 0,
"mediumCount": 0
}
}
},
"schema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"input"
],
"properties": {
"input": {
"type": "object",
"required": [
"type",
"method",
"bodyType",
"body"
],
"properties": {
"body": {
"required": [],
"properties": {
"text": {
"type": "string",
"example": "Please summarise the attached report in three bullet points.",
"maxLength": 8000,
"description": "The text to scan (up to 8,000 characters). Omit the whole body to scan the published example"
}
}
},
"type": {
"type": "string",
"const": "http"
},
"method": {
"enum": [
"POST"
],
"type": "string"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
}
},
"additionalProperties": false
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string"
},
"example": {
"type": "object"
}
}
}
}
}
}
}Provenance
- Seen in the source catalog
- 2026-10-19 07:46Z
- Last indexed by Roundhouse
- 2026-10-26 20:00Z
- Last enriched (probe, favicon, geo)
- 2026-10-19 06:15Z
- x402 version
- 2
- Max timeout
- 300s
- Liveness probe
- HTTP 402
Hand this page to an agent
Copy the prompt and paste it into Claude, an MCP client or your own agent — it will vet this service and call it over the free read API. No key, no account.
GET api.roundhouseai.io/v0/endpoints
This endpoint's own trailing-30-day call count, as published by the upstream catalog and snapshotted daily. 10 snapshots so far. Verified volume counts only settlements with an on-chain EIP-3009 marker.
Show the promptHide the prompt
Using Roundhouse, look up the x402 service FiatDock and tell me whether it is worth paying: what a call costs, whether the endpoint answered when last probed, and what its payment record actually shows. curl -s 'https://api.roundhouseai.io/v0/endpoints?q=FiatDock' curl -s 'https://api.roundhouseai.io/v0/merchants/<the payTo wallet returned above>' Then call it: read the price from the live 402 at https://fiatdock.com/v1/text/prompt-check, never from a cached figure, and pay with an x402 client. The /v0 API needs an API key (`authorization: Bearer rh_live_…`) on everything except /v0/unified* and /v0/endpoints. Either pay over x402 (mint a personal key for $0.01 at GET https://api.roundhouseai.io/v0/test/x402), or ask me for an organization key, which I create at https://roundhouseai.io/dashboard/connections. If you have neither, ask before going further. If you do not have Roundhouse tools or skills installed, read https://roundhouseai.io/skill.md first — it is the whole procedure.