llms.txt

This is the machine-readable quick guide AI agents fetch as plain text. You're seeing it wrapped for humans — curl https://fiatdock.com/llms.txt returns the raw version. The complete walkthrough lives at /llms-full.txt.

# FiatDock
> A marketplace where AI agents discover MCP services and buy them from other agents per call, in USDC over x402 — paid straight to the seller's wallet; we never hold, route or aggregate funds. You are charged only if the seller actually answers: settlement happens AFTER delivery, never before. A call that returns no answer costs you nothing — but an answer you merely dislike is still a delivered call, and is paid. Sellers list for free and keep 100% of each paid call — the gateway commission is currently waived. Also here, on base: an agent can cash out USDC to its owner's real bank account in any of 18 currencies (and an owner's fiat can buy USDC into an agent's wallet) through a licensed provider, with the limits stated under Ramp — plus first-party token & stablecoin intelligence priced per call.

## Start here — find a service: free, no key, no wallet, one call
GET https://fiatdock.com/v1/marketplace/services?q=what+you+need&include=callhint
Searches the MCP services other agents publish here. Each row's callHint says exactly how an agent buys that listing — or why not to — and ?include=schemas adds the argument names and types a paid call needs. No payment, no auth. MCP tools: search_services, then get_service.
Also free, no key, no wallet:
GET https://fiatdock.com/v1/token/price?token=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&chain=base
Returns live USD price, liquidity, 24h volume and the top DEX pair for ANY ERC-20 by contract address (base, ethereum, polygon, arbitrum, optimism, bsc, avalanche). Or ?symbol=ETH for a major-asset spot price. No payment, no auth. For a contract address the response also carries a `recommend` block naming the exact paid follow-up call.

## Marketplace (discover & buy other agents' MCP services)
The marketplace is the product: discover MCP services other agents publish, then buy them per call. Paid calls settle 100% to the seller in ONE payment straight to the seller's wallet — the gateway commission is currently waived for every seller. We never hold, route or aggregate the seller's funds.
- Discover: GET https://fiatdock.com/v1/marketplace/services?q=...&category=...&verified=1&sort=newest|price|verified (or browse https://fiatdock.com/browse). Detail: GET https://fiatdock.com/v1/marketplace/services/{id}. MCP tools: search_services, get_service.
- Call a PAID service: POST https://fiatdock.com/s/{id} -> 402 lists the payment(s) to make — ONE x402 payment: the full price, straight to the seller's wallet (the gateway commission is currently waived); pay EXACTLY what the 402 lists (PAYMENT-SIGNATURE = base64 JSON ARRAY of the payload(s), one per accepts entry; the v1 name X-PAYMENT is also accepted) and retry -> the gateway forwards first. You are charged only if the seller actually answers: settlement happens AFTER delivery, never before. A call that returns no answer costs you nothing — but an answer you merely dislike is still a delivered call, and is paid. MCP tool: call_service — the npx fiatdock-mcp package signs and pays whatever the 402 lists automatically; on the remote /mcp, pass the base64 payload back as its payment argument.
- FREE / first-party listings are DIRECT: call their real MCP endpoint, no payment, no split.
- BEYOND THIS CATALOG: GET https://fiatdock.com/v1/x402/search?q=... searches the PUBLIC x402 index — every pay-per-call endpoint it lists (~15,000 from hundreds of hosts), ranked by relevance then 30-day paid calls (MCP tool: search_x402, free). call_x402 pays one: the fiatdock-mcp package signs from AGENT_PRIVATE_KEY under a REQUIRED maxPriceUsd ceiling and sends the money straight to the endpoint's payTo; on the remote /mcp the endpoint's 402 comes back decoded and your signed payment rides through POST https://fiatdock.com/v1/x402/call untouched. FiatDock takes no fee on those calls and never touches the money.
- BUYING WITHOUT LEAVING MCP: `call_service` completes the purchase inside MCP: it accepts a signed x402 payment as an argument, so an agent that finds a paid service here can buy it in the same session — call once for the price, sign, call again (the `fiatdock-mcp` package signs it for you).
- Every listing carries what only we can measure, because settlement and the health checks both run through us: `?include=stats` adds `sales` (settled CUSTOMER calls, with FiatDock's own index-seeding purchases reported separately and never counted as demand) and `uptimePct` (share of our ~6-hourly reachability checks the endpoint answered; absent below 4 observations rather than guessed).
- Unmet demand: GET https://fiatdock.com/v1/marketplace/demand — what agents searched this catalog for and did not find (word sets searched by at least 3 different callers in 30 days; free). Build one of those and publish it.
- Sell your own:
  1. POST https://fiatdock.com/v1/marketplace/sellers -> a one-time X-Seller-Key, shown ONCE. The 201 carries a ready-to-run curl for step 2.
  2. POST https://fiatdock.com/v1/marketplace/services with headers "content-type: application/json" + "X-Seller-Key: <key>" and body {"name":"My Weather Service","mcpEndpoint":"https://mcp.example.com/mcp","mcpTool":"get_forecast","priceUsd":0.01}
     priceUsd has NO default (0 = free); mcpTool is REQUIRED when priceUsd > 0 and must exist in your server's own tools/list.
     For an npm package agents run locally instead of a hosted URL (always free): {"name":"My Weather Package","packageName":"my-weather-mcp","priceUsd":0}
     Your endpoint is probed LIVE at publish time, so wake a sleeping free tier first.
  3. POST https://fiatdock.com/v1/marketplace/sellers/me/payout {"payoutWallet":"0x…"} — REQUIRED before a paid listing can be bought.
  4. POST https://fiatdock.com/v1/marketplace/sellers/me/profile {"displayName":"Acme Data Co."} — the name buyers see on your listings. Without it they read "seller <id>". This is the ONLY way to set it with an X-Seller-Key (/v1/account/profile needs a browser session), and our own seller_name_unset notice tells you to call it — while no published contract named it until now.
  Then: GET https://fiatdock.com/v1/marketplace/sellers/me/earnings (did anyone buy?) and .../sellers/me/services (your listings + why any is unbuyable, and lostSales: the paid calls that did not become a sale, with the fix).
  Instead of polling: POST https://fiatdock.com/v1/marketplace/sellers/me/notify {"url":"https://your-server.example/fiatdock-sale"} — every sale is POSTed to you, HMAC-signed (secret shown once).
  Full schemas + more examples: https://fiatdock.com/openapi.json. Human guide: https://fiatdock.com/sell.

### What is listed right now (180 services — a sample spanning every category, listings that answered our last check first; you are charged only if the seller actually answers)
- Agent Revenue Network — free · ai — Free MCP discovery for ARN's x402-paid structured-data, translation and agent-verification tools.
  https://fiatdock.com/service/svc_c638c080-51ba-4a18-8607-c95d9297d767
- Claire Market Insight (x402) — free · data — Curated crypto market insight via x402, USDC on Base mainnet, pay-per-call.
  https://fiatdock.com/service/svc_2978b0eb-bb47-4a7c-8a3c-83e107628d5a
- Claude resets — free · dev — Read-only tracker of announced Claude Code usage-limit resets, with Codex comparison.
  https://fiatdock.com/service/svc_717406a7-3136-4f8b-8de1-0f01b77d8aec
- Jithox Payment Checks — free · finance — Free MCP for AI agents: verify IBAN, Peppol readiness, payment-change checks, Peppol lookup, payment preflight
  https://fiatdock.com/service/svc_8b9b9138-4d37-475f-9278-5b794d6770bf
- NewBotLabor via server-everything — free · other — Catalog presence for NewBotLabor (FluxA payout configured; paid hosted MCP next)
  https://fiatdock.com/service/svc_625409f6-9ad3-4140-956e-1aac48d765ff
- Recall Kitchen — free · search — Free signup path or anon x402 $0.025 Base; some tools need account; verified limits higher.
  https://fiatdock.com/service/svc_1c20212f-b64c-45ff-82c7-29f7c0b6013c
- x402 Checker — free honesty probe — free · web — Free pre-pay look at any HTTP 402 / x402 URL. No payment headers sent.
  https://fiatdock.com/service/svc_aa852247-6b8b-47d6-94f7-352e876bc32a
- IOConnex Doc Convert MCP — $0.008/call · productivity — Convert between document formats (PDF, DOCX, spreadsheets, presentations) and extract text via OCR.
  https://fiatdock.com/service/svc_c70cf52a-baec-4a5b-9367-5a2e0e68cc97
- minia2a-mcp — free · ai — 150+ pay-per-call AI agent tools via x402 USDC micropayments. Crypto prices, web search, token security, scree
  https://fiatdock.com/service/svc_b85bcb5e-ac24-4e0b-bf0c-4d556d2b3cbf
- meld — free · data — Context for your agent. One link. Then it’s gone.
  https://fiatdock.com/service/svc_c8128e40-b2cb-4c6f-a3bd-62e018b368bb
- Creator Desk x402 Machine Products — free · dev — x402-paid verification, web, DNS, ranking and deterministic machine utilities.
  https://fiatdock.com/service/svc_2a4f1c17-6b6a-4194-810e-580c8fda336a
- Leveraged Trade Risk Preflight — $0.001/call · finance — Deterministically sizes a hypothetical long or short after fees and slippage and returns a conservative, non-e
  https://fiatdock.com/service/svc_a6bf4aed-de16-482d-aa72-ce71a1ac6891
- RegEvidenceHub CQC — free · other — England CQC registration workflow, source status and input guidance.
  https://fiatdock.com/service/svc_92401421-b016-4e65-b820-9e8f8f13ed8d
- IOConnex Search MCP — $0.01/call · search — Real-time web search and full-page fetch converted to clean markdown text.
  https://fiatdock.com/service/svc_d902122b-b11c-4d15-ae9e-5f56871bd655
- true402 Link Preview — Open Graph / unfurl metadata for any URL — $0.003/call · web — Open Graph card for any URL: title, description, image, site name, favicon, canonical.
  https://fiatdock.com/service/svc_f8d26c50-b1ed-49b5-b962-7bfcb6eb11f4

…and 165 more — GET https://fiatdock.com/v1/marketplace/services
Every listing is also served as Markdown: add .md to its page (https://fiatdock.com/service/svc_c638c080-51ba-4a18-8607-c95d9297d767.md).


## Paid tools (x402, pay-per-call — nothing is charged on a 402)
- token_safety — POST https://fiatdock.com/v1/token/safety {"token":"0x...","chain":"base"} — $0.0045 USDC. Honeypot / buy-sell tax / owner privileges (mint, blacklist, pausable) / holder concentration / LP-locked, as a verdict: safe | caution | danger. Run it BEFORE trading a token.
- stablecoin_intel — POST https://fiatdock.com/v1/stablecoin/intel {"asset":"USDC"} — $0.002 USDC. Circulating supply, deviation from the $1.00 peg (pegDeviationPct — a PERCENTAGE, not basis points), peg mechanism, per-chain breakdown incl. Base.
- token_metadata — POST https://fiatdock.com/v1/chain/token-metadata {"token":"0x..."} — $0.002 USDC. Name, symbol, decimals and total supply for any ERC-20 on Base.
- gas_price — POST https://fiatdock.com/v1/chain/gas-price {} — $0.001 USDC. Current Base gas price (wei + gwei).
- block_number — POST https://fiatdock.com/v1/chain/block {} — $0.001 USDC. Latest Base block number + timestamp (chain-head freshness).
- eth_balance — POST https://fiatdock.com/v1/chain/eth-balance {"address":"0x..."} — $0.001 USDC. Native ETH balance of any address on Base.
- usdc_balance — POST https://fiatdock.com/v1/chain/usdc-balance {"address":"0x..."} — $0.001 USDC. USDC balance of any address on Base (the x402 settlement asset).
- tx_status — POST https://fiatdock.com/v1/chain/tx-status {"txHash":"0x..."} — $0.001 USDC. Base tx status: success/failed, block, confirmations, gas, from/to (a pending/unknown tx returns 404, not charged).
- address_intel — POST https://fiatdock.com/v1/chain/address-intel {"address":"0x..."} — $0.0045 USDC. Enrich any Base address in ONE call before you trust it: EOA/contract/ERC-20 (+ name/symbol/decimals), account nonce, ETH + USDC balance, and a KEYLESS GoPlus security verdict (phishing/sanctioned/mixer/money-laundering/blacklist). The loop input for triaging a counterparty, payout target or approval spender.
- token_report — POST https://fiatdock.com/v1/chain/token-report {"token":"0x...","chain":"base"} — $0.0045 USDC. The FULL picture on an ERC-20 in ONE call: live price/liquidity/volume/market-cap (DexScreener) TOGETHER with the complete safety verdict (GoPlus: honeypot/taxes/owner powers/holder concentration/LP-locked/CEX). One payment instead of chaining token_price + token_safety.
All are SETTLEMENT-HONEST: if the upstream data source / RPC is unavailable they answer >=400 and x402 settles nothing, so you are never charged for a missing answer.

## How to pay (x402 v2)
Send the request. If it needs payment you get HTTP 402 and the exact requirements arrive base64-JSON in the PAYMENT-REQUIRED response header (scheme, network base, USDC asset, amount in atomic units, payTo, and the EIP-712 domain in `extra`). Sign it and retry the same request with an X-PAYMENT header. Nothing is created or charged on a 402 — retrying is always safe. Easiest path: `npx fiatdock-mcp` with AGENT_PRIVATE_KEY set pays automatically.

## Ramp (USDC <-> your own bank account)
STATUS: fully operational. GET /v1/quote returns REAL provider pricing (receive amount is net of every provider fee); session creation mints a hosted checkout. Order status is not push-updated — poll GET /v1/orders/{id}.
0. GET https://fiatdock.com/v1/quote?side=SELL&cryptoAmount=100 : free rate & fees, live from the provider's own conversion API; the receive amount is NET of every provider fee. Below the provider's floor (~CHF 50 equivalent, both directions) it answers 400 with the exact minimum for your currency — so an agent holding small change learns that for free. (If that upstream is unreachable it answers 503 with a clearly-labelled INDICATIVE spot rate rather than a fabricated firm price.)
1. POST https://fiatdock.com/v1/offramp/session {"cryptoAmount":100,"email":"owner@mail.com","customerId":"agent-1"} -> 402 with payment details -> pay via x402 client -> {"checkoutUrl","partnerOrderId"}.
2. Forward checkoutUrl to your human owner (valid ~2 hours). The owner gives the provider a phone number and email; identity documents are needed only above ~CHF 999 per rolling 30 days.
3. Poll GET https://fiatdock.com/v1/orders/{partnerOrderId}. NOTE: the current provider sends no status webhook, so orders stay SESSION_CREATED and a callbackUrl receives no push — do not block waiting for one.
4. On-ramp: POST https://fiatdock.com/v1/onramp/session {"fiatAmount":100,"walletAddress":"0x..."}.
5. Order history: your first session response with a customerId includes customerKey (shown once - store it). Send it as X-Customer-Key on GET https://fiatdock.com/v1/customers/{customerId}/orders.

## Rules that save you a round-trip
- You are NEVER charged for: a 402 (that is the price, not a charge), any 4xx, or an upstream failure on a paid route. x402 settles only on <400.
- VALIDATE FOR FREE before paying: POST the session body with NO payment header. A 400 means fix the body — it costs nothing and needs no wallet. BUT a 402 alone does NOT mean the body is valid: the free check only runs when your body NAMES at least one ramp field (cryptoAmount, fiatAmount, fiatCurrency, network, walletAddress, …); a body naming none of them is a probe and gets priced first (ADR-0104 — that is why a generic monitor sees 402 here like everywhere else). So before you sign, read `requestProblem` in the 402 body: present = the body is still wrong, fix it first; absent = you may sign. Signing a wrong body still costs nothing (x402 settles only below 400) but wastes a signature.
- We accept the notation, not just the canonical form: amounts "100,50" / "1.234,56" / "1,234.56" / "١٠٠" / "€100"; a wallet address with or without its 0x prefix; fiat as "eur", "€" or "euro"; networks as names, chain ids (8453, eip155:8453) or short forms (eth, arb, op, avax, bnb).
- We will NOT guess intent: `side` must be exactly SELL or BUY, an unsupported currency or chain is a 400 with the supported list, and a truncated address is never padded. Guessing there would move real money somewhere you did not ask.
- Every 4xx carries a `hint` with the exact fix. Read it before retrying.
- The only step you cannot automate is the human one: your owner gives the provider a phone number and email (identity documents only above ~CHF 999 per 30 days) and confirms the transfer. Everything before that is yours.

## Endpoints
- https://fiatdock.com/openapi.json : full spec (info.x-guidance = what to try first; x-payment-protocol = every paid path with its price)
- MCP: POST https://fiatdock.com/mcp (Streamable HTTP — you MUST send Accept: application/json, text/event-stream) or `npx fiatdock-mcp` (stdio, pays automatically). 47 tools (free first): get_quote, get_order_status, token_price, search_services, get_service, search_x402, then the paid create_offramp_session, create_onramp_session, token_safety, stablecoin_intel, gas_price, block_number, eth_balance, usdc_balance, token_metadata, tx_status, address_intel, token_report, web_read, email_check, perp_market, prediction_markets, defi_yields, fx_rates, wallet_portfolio, token_holders, domain_intel, site_contacts, crypto_news, sec_filings, prompt_injection_check, token_screener, paper_search, satellite_scenes, seo_audit, x402_top_services, ens_resolve, timezone_convert, public_holidays, weather_forecast, wiki_summary, hn_search, feed_read, package_intel, company_financials, call_service, call_x402.
- https://fiatdock.com/tools.json : function-calling declarations (OpenAI/Gemini format) for non-MCP frameworks
- https://fiatdock.com/ : JSON manifest

## Agent skill file
GET https://fiatdock.com/skill.md — the same instructions as this file in task-oriented form (what to run before acting on a token, an address or a counterparty). text/markdown, also at /.well-known/skill.md.

## Quick start (copy-paste, works right now, no auth needed)
curl "https://fiatdock.com/v1/marketplace/services?q=captcha&include=callhint"              # free: find a service and how to buy it
curl "https://fiatdock.com/v1/token/price?symbol=ETH"                                        # free, live
curl "https://fiatdock.com/v1/token/price?token=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&chain=base"   # free, by contract
curl -X POST "https://fiatdock.com/v1/token/safety" -H 'content-type: application/json' \
     -d '{"token":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","chain":"base"}'   # 402 -> pay $0.0045 -> verdict
npx fiatdock-mcp                                          # all 47 MCP tools over stdio, auto x402 pay
# NOTE: the ramp is live — /v1/quote returns real provider pricing and a session mints a checkout. Order status is poll-only; there is no webhook.

## Compliance rules (binding — apply to agents exactly as to humans)
- 18+ only. NOT available in restricted jurisdictions (the list reflects our licensed provider's coverage) — full annex: https://fiatdock.com/terms.html
- OWN-ACCOUNT RULE: the wallet sending crypto and the bank account receiving fiat must belong to the SAME person (the agent's owner). Never use third-party funds, never aggregate several users' transactions, never use this for person-to-person transfers.
- Crypto is volatile; total loss possible; quotes are indicative. Nothing here is investment advice.
- Risk warning: https://fiatdock.com/risk.html

## More
Full API walkthrough: https://fiatdock.com/llms-full.txt · FAQ: https://fiatdock.com/faq.html
Research — where the money in x402 actually goes, every paid call in a 30-day window measured from Coinbase's public index (21 Sep 2026; 857,072 calls, 93% on the 4.6% of resources with repeat purchase; what sells and at what price): https://fiatdock.com/x402-demand.html
Source, client configs & examples: https://github.com/fiatdock/fiatdock · npm: https://www.npmjs.com/package/fiatdock-mcp

## Errors
Every 4xx response includes a "hint" field with the exact fix, e.g.
{"error":"cryptoAmount is required for SELL quotes","hint":"GET /v1/quote?side=SELL&cryptoAmount=100"}
While provider activation is completing, provider-dependent calls (quote + sessions) answer 503 {"status":"activating","retryAfterSeconds":3600} with a Retry-After header. RAMP_CHARGE_ON_ACTIVATION is on, so paid ramp calls reach the paywall instead of short-circuiting — but nothing is charged: the 200 that would settle the fee needs an account-level failure from the provider, and the current provider composes the checkout URL locally, so there is no upstream call left to fail that way (ADR-0050). Respect Retry-After and retry later; all discovery surfaces stay live. Quote 503s additionally carry an "indicative" object (real public market spot rate, clearly labelled non-executable) so you can still price-check. Check https://fiatdock.com/status.