{"name":"FiatDock","description":"Function-calling tool declarations for frameworks without MCP. Same 18 tools (4 ramp + 3 market-data + 6 chain-data + 1 enrichment + 1 report + 3 marketplace) as the fiatdock-mcp package, mapped 1:1 to the REST API at https://fiatdock.com (full spec: /openapi.json). Paid endpoints answer HTTP 402 (x402) until paid — $0.01 USDC on base.","compliance":"COMPLIANCE (binding): own-account rule — the sending wallet and the receiving bank account must belong to the SAME person (the agent's owner); no third-party funds, no aggregation, no P2P transfers. 18+; served worldwide via our licensed provider across ~160 countries — EUR bank transfer in the SEPA zone (incl. Portugal), card/Apple Pay/Google Pay elsewhere — excluding US persons, sanctioned countries and the UK (NOT the UK). Crypto is volatile; not investment advice.","openai_tools":[{"type":"function","function":{"name":"get_quote","description":"Free quote before paying: the exchange rate and exactly how much lands in the bank (or wallet) NET of every provider fee, including the 1% service commission. An executable estimate, not a locked rate.","parameters":{"type":"object","properties":{"side":{"type":"string","enum":["SELL","BUY"],"description":"SELL = USDC->fiat, BUY = fiat->USDC. Default SELL."},"cryptoAmount":{"type":"number","description":"USDC amount (required for SELL)"},"fiatAmount":{"type":"number","description":"Fiat amount (for BUY)"},"fiatCurrency":{"type":"string","description":"default EUR"},"network":{"type":"string","description":"default base"}},"required":[]}}},{"type":"function","function":{"name":"create_offramp_session","description":"Convert the agent's USDC to fiat in the owner's OWN bank account. Returns a checkoutUrl (valid ~2 hours) to forward to the human owner — or pass the owner's email and the link is ALSO emailed to them automatically — plus a partnerOrderId. Paid: $0.01 USDC via x402 — the first call answers HTTP 402 with exact payment requirements. COMPLIANCE (binding): own-account rule — the sending wallet and the receiving bank account must belong to the SAME person (the agent's owner); no third-party funds, no aggregation, no P2P transfers. 18+; served worldwide via our licensed provider across ~160 countries — EUR bank transfer in the SEPA zone (incl. Portugal), card/Apple Pay/Google Pay elsewhere — excluding US persons, sanctioned countries and the UK (NOT the UK). Crypto is volatile; not investment advice.","parameters":{"type":"object","properties":{"cryptoAmount":{"type":"number","description":"USDC amount to sell"},"fiatCurrency":{"type":"string","description":"e.g. EUR, default EUR"},"network":{"type":"string","description":"USDC network, default base"},"walletAddress":{"type":"string","description":"Optional SELL source wallet (0x…, EIP-55 checked) — pre-fills the widget; required with walletCode/walletHash"},"email":{"type":"string","description":"Owner's account email. If provided, the checkout link is ALSO emailed here automatically (you still receive it in checkoutUrl); the response echoes emailedTo"},"customerId":{"type":"string","description":"Stable agent/customer id"},"callbackUrl":{"type":"string","description":"Optional public https URL stored for a future provider with status webhooks — the current provider sends none, so no push will arrive and no callback secret is issued. Poll the order instead"},"walletCode":{"type":"string","description":"Optional Mt Pelerin address lock, part 1: 4-digit code (1000-9999). Requires walletHash + walletAddress"},"walletHash":{"type":"string","description":"Optional Mt Pelerin address lock, part 2: base64 signature of 'MtPelerin-<code>' by the agent's OWN wallet key (never shared with us). Locks the widget to walletAddress. Requires walletCode"},"ref":{"type":"string","description":"Optional referral code (1-64 chars: letters, digits, _ or -)"},"provider":{"type":"string","enum":["mtpelerin"],"description":"Licensed fiat provider. `mtpelerin` is the only provider on this server and the default — omit this field. It settles by SEPA bank transfer across the SEPA zone (incl. Portugal); its order status is not push-updated. Any other value returns 400 (no other provider is configured on this server)."},"payment":{"type":"string","description":"Base64 of a single x402 v2 PaymentPayload (EIP-3009 transferWithAuthorization on Base USDC). OMIT it on the first call — the HTTP 402 you get back carries `howToPay.payloadTemplate`, the exact envelope to fill in, together with the price and the EIP-712 domain. Send it on the second call to complete the purchase. It is sent as the PAYMENT-SIGNATURE request header (see rest.headerParams), NEVER in the body: a signed authorization placed in the body does not reach the paywall. Nothing is charged for the 402 itself."}},"required":["cryptoAmount"]}}},{"type":"function","function":{"name":"create_onramp_session","description":"Buy USDC with the owner's OWN fiat and deliver it to the agent's wallet (address locked). Returns checkoutUrl + partnerOrderId. Paid: $0.01 USDC via x402 — the first call answers HTTP 402 with exact payment requirements. COMPLIANCE (binding): own-account rule — the sending wallet and the receiving bank account must belong to the SAME person (the agent's owner); no third-party funds, no aggregation, no P2P transfers. 18+; served worldwide via our licensed provider across ~160 countries — EUR bank transfer in the SEPA zone (incl. Portugal), card/Apple Pay/Google Pay elsewhere — excluding US persons, sanctioned countries and the UK (NOT the UK). Crypto is volatile; not investment advice.","parameters":{"type":"object","properties":{"fiatAmount":{"type":"number","description":"Fiat amount to spend"},"walletAddress":{"type":"string","description":"Agent wallet that receives USDC (0x…, EIP-55 checked)"},"fiatCurrency":{"type":"string","description":"e.g. EUR, default EUR"},"network":{"type":"string","description":"USDC network, default base"},"email":{"type":"string","description":"Owner's account email. If provided, the checkout link is ALSO emailed here automatically (you still receive it in checkoutUrl); the response echoes emailedTo"},"customerId":{"type":"string","description":"Stable agent/customer id"},"callbackUrl":{"type":"string","description":"Optional public https URL stored for a future provider with status webhooks — the current provider sends none, so no push will arrive and no callback secret is issued. Poll the order instead"},"walletCode":{"type":"string","description":"Optional Mt Pelerin address lock, part 1: 4-digit code (1000-9999). Requires walletHash + walletAddress"},"walletHash":{"type":"string","description":"Optional Mt Pelerin address lock, part 2: base64 signature of 'MtPelerin-<code>' by the agent's OWN wallet key (never shared with us). Locks the widget to walletAddress. Requires walletCode"},"ref":{"type":"string","description":"Optional referral code (1-64 chars: letters, digits, _ or -)"},"provider":{"type":"string","enum":["mtpelerin"],"description":"Licensed fiat provider. `mtpelerin` is the only provider on this server and the default — omit this field. It settles by SEPA bank transfer across the SEPA zone (incl. Portugal); its order status is not push-updated. Any other value returns 400 (no other provider is configured on this server)."},"payment":{"type":"string","description":"Base64 of a single x402 v2 PaymentPayload (EIP-3009 transferWithAuthorization on Base USDC). OMIT it on the first call — the HTTP 402 you get back carries `howToPay.payloadTemplate`, the exact envelope to fill in, together with the price and the EIP-712 domain. Send it on the second call to complete the purchase. It is sent as the PAYMENT-SIGNATURE request header (see rest.headerParams), NEVER in the body: a signed authorization placed in the body does not reach the paywall. Nothing is charged for the 402 itself."}},"required":["fiatAmount","walletAddress"]}}},{"type":"function","function":{"name":"get_order_status","description":"Check the status of an on/off-ramp order by partnerOrderId (free).","parameters":{"type":"object","properties":{"partnerOrderId":{"type":"string","description":"id returned when the session was created"}},"required":["partnerOrderId"]}}},{"type":"function","function":{"name":"token_price","description":"FREE real-time price snapshot for any EVM token by contract address: USD price, 5m/1h/6h/24h change, liquidity, 24h volume, market cap/FDV and the most-liquid DEX pair (DexScreener); or a major symbol (ETH/BTC) for a spot price. Read-only, free.","parameters":{"type":"object","properties":{"token":{"type":"string","description":"ERC-20 contract address (0x…) — preferred"},"chain":{"type":"string","description":"Chain slug: base (default), ethereum, polygon, arbitrum, optimism, bsc, avalanche"},"symbol":{"type":"string","description":"Major asset symbol (e.g. ETH, BTC) when no address is given"}},"required":[]}}},{"type":"function","function":{"name":"token_safety","description":"On-chain safety verdict for any EVM token BEFORE trading: honeypot, buy/sell tax, contract-verified, owner privileges (mint/blacklist/pausable/hidden owner/balance-modify), holder concentration, LP-locked %, CEX listing and DEX liquidity (GoPlus + DexScreener). Returns safe|caution|danger with the exact risks. Paid: $0.01 USDC via x402 (first call answers 402); not charged if the data can't be fetched. Not financial advice.","parameters":{"type":"object","properties":{"token":{"type":"string","description":"ERC-20 contract address (0x…) to screen"},"chain":{"type":"string","description":"Chain slug: base (default), ethereum, polygon, arbitrum, optimism, bsc, avalanche"},"payment":{"type":"string","description":"Base64 of a single x402 v2 PaymentPayload (EIP-3009 transferWithAuthorization on Base USDC). OMIT it on the first call — the HTTP 402 you get back carries `howToPay.payloadTemplate`, the exact envelope to fill in, together with the price and the EIP-712 domain. Send it on the second call to complete the purchase. It is sent as the PAYMENT-SIGNATURE request header (see rest.headerParams), NEVER in the body: a signed authorization placed in the body does not reach the paywall. Nothing is charged for the 402 itself."}},"required":["token"]}}},{"type":"function","function":{"name":"stablecoin_intel","description":"Supply, $1.00 peg deviation and per-chain breakdown (incl. Base) for USDC and other stablecoins (DefiLlama). Paid: $0.002 USDC via x402 (first call answers 402); not charged if the data can't be fetched.","parameters":{"type":"object","properties":{"asset":{"type":"string","description":"Stablecoin symbol (default USDC), e.g. USDC, USDT, DAI, USDe"},"payment":{"type":"string","description":"Base64 of a single x402 v2 PaymentPayload (EIP-3009 transferWithAuthorization on Base USDC). OMIT it on the first call — the HTTP 402 you get back carries `howToPay.payloadTemplate`, the exact envelope to fill in, together with the price and the EIP-712 domain. Send it on the second call to complete the purchase. It is sent as the PAYMENT-SIGNATURE request header (see rest.headerParams), NEVER in the body: a signed authorization placed in the body does not reach the paywall. Nothing is charged for the 402 itself."}},"required":[]}}},{"type":"function","function":{"name":"gas_price","description":"Current Base gas price in wei and gwei — sample before submitting a tx. Paid: $0.001 USDC via x402 (first call answers 402); not charged on RPC failure.","parameters":{"type":"object","properties":{"payment":{"type":"string","description":"Base64 of a single x402 v2 PaymentPayload (EIP-3009 transferWithAuthorization on Base USDC). OMIT it on the first call — the HTTP 402 you get back carries `howToPay.payloadTemplate`, the exact envelope to fill in, together with the price and the EIP-712 domain. Send it on the second call to complete the purchase. It is sent as the PAYMENT-SIGNATURE request header (see rest.headerParams), NEVER in the body: a signed authorization placed in the body does not reach the paywall. Nothing is charged for the 402 itself."}},"required":[]}}},{"type":"function","function":{"name":"block_number","description":"Latest Base block number and its timestamp — a chain-head freshness/liveness probe. Paid: $0.001 USDC via x402 (first call answers 402); not charged on RPC failure.","parameters":{"type":"object","properties":{"payment":{"type":"string","description":"Base64 of a single x402 v2 PaymentPayload (EIP-3009 transferWithAuthorization on Base USDC). OMIT it on the first call — the HTTP 402 you get back carries `howToPay.payloadTemplate`, the exact envelope to fill in, together with the price and the EIP-712 domain. Send it on the second call to complete the purchase. It is sent as the PAYMENT-SIGNATURE request header (see rest.headerParams), NEVER in the body: a signed authorization placed in the body does not reach the paywall. Nothing is charged for the 402 itself."}},"required":[]}}},{"type":"function","function":{"name":"eth_balance","description":"Native ETH balance of any address on Base, in wei and ETH. Paid: $0.001 USDC via x402 (first call answers 402); a bad address returns 400 and an RPC failure 5xx — neither is charged.","parameters":{"type":"object","properties":{"address":{"type":"string","description":"A 40-hex EVM address (0x…)"},"payment":{"type":"string","description":"Base64 of a single x402 v2 PaymentPayload (EIP-3009 transferWithAuthorization on Base USDC). OMIT it on the first call — the HTTP 402 you get back carries `howToPay.payloadTemplate`, the exact envelope to fill in, together with the price and the EIP-712 domain. Send it on the second call to complete the purchase. It is sent as the PAYMENT-SIGNATURE request header (see rest.headerParams), NEVER in the body: a signed authorization placed in the body does not reach the paywall. Nothing is charged for the 402 itself."}},"required":["address"]}}},{"type":"function","function":{"name":"usdc_balance","description":"USDC balance of any address on Base (the x402 settlement asset), in atomic units and USDC. Paid: $0.001 USDC via x402 (first call answers 402); a bad address returns 400 and an RPC failure 5xx — neither is charged.","parameters":{"type":"object","properties":{"address":{"type":"string","description":"A 40-hex EVM address (0x…)"},"payment":{"type":"string","description":"Base64 of a single x402 v2 PaymentPayload (EIP-3009 transferWithAuthorization on Base USDC). OMIT it on the first call — the HTTP 402 you get back carries `howToPay.payloadTemplate`, the exact envelope to fill in, together with the price and the EIP-712 domain. Send it on the second call to complete the purchase. It is sent as the PAYMENT-SIGNATURE request header (see rest.headerParams), NEVER in the body: a signed authorization placed in the body does not reach the paywall. Nothing is charged for the 402 itself."}},"required":["address"]}}},{"type":"function","function":{"name":"token_metadata","description":"ERC-20 name, symbol, decimals and total supply for any contract on Base — the identity fields to fetch before pricing/safety-checking a token. Paid: $0.002 USDC via x402 (first call answers 402); a non-ERC-20/bad address returns 4xx and an RPC failure 5xx — neither is charged.","parameters":{"type":"object","properties":{"token":{"type":"string","description":"An ERC-20 contract address (0x…) on Base"},"payment":{"type":"string","description":"Base64 of a single x402 v2 PaymentPayload (EIP-3009 transferWithAuthorization on Base USDC). OMIT it on the first call — the HTTP 402 you get back carries `howToPay.payloadTemplate`, the exact envelope to fill in, together with the price and the EIP-712 domain. Send it on the second call to complete the purchase. It is sent as the PAYMENT-SIGNATURE request header (see rest.headerParams), NEVER in the body: a signed authorization placed in the body does not reach the paywall. Nothing is charged for the 402 itself."}},"required":["token"]}}},{"type":"function","function":{"name":"tx_status","description":"Confirmation status of a Base transaction — success/failed, block, confirmations, gas used, from/to. A pending/unknown tx returns 404 (poll-safe). Paid: $0.001 USDC via x402 (first call answers 402); not charged on 404 or RPC failure.","parameters":{"type":"object","properties":{"txHash":{"type":"string","description":"A 64-hex transaction hash (0x…) on Base"},"payment":{"type":"string","description":"Base64 of a single x402 v2 PaymentPayload (EIP-3009 transferWithAuthorization on Base USDC). OMIT it on the first call — the HTTP 402 you get back carries `howToPay.payloadTemplate`, the exact envelope to fill in, together with the price and the EIP-712 domain. Send it on the second call to complete the purchase. It is sent as the PAYMENT-SIGNATURE request header (see rest.headerParams), NEVER in the body: a signed authorization placed in the body does not reach the paywall. Nothing is charged for the 402 itself."}},"required":["txHash"]}}},{"type":"function","function":{"name":"address_intel","description":"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. Paid: $0.005 USDC via x402 (first call answers 402); a bad address returns 400 and an RPC/GoPlus outage 502 — neither is charged.","parameters":{"type":"object","properties":{"address":{"type":"string","description":"A 40-hex EVM address (0x…) on Base to enrich"},"payment":{"type":"string","description":"Base64 of a single x402 v2 PaymentPayload (EIP-3009 transferWithAuthorization on Base USDC). OMIT it on the first call — the HTTP 402 you get back carries `howToPay.payloadTemplate`, the exact envelope to fill in, together with the price and the EIP-712 domain. Send it on the second call to complete the purchase. It is sent as the PAYMENT-SIGNATURE request header (see rest.headerParams), NEVER in the body: a signed authorization placed in the body does not reach the paywall. Nothing is charged for the 402 itself."}},"required":["address"]}}},{"type":"function","function":{"name":"token_report","description":"The full picture on an ERC-20 in one call: live price, liquidity, 24h volume, market cap/FDV and the most-liquid DEX pair (DexScreener) together with the complete safety verdict (GoPlus: honeypot/taxes/owner privileges/holder concentration/LP-locked/CEX). One payment instead of chaining token_price + token_safety. Paid: $0.05 USDC via x402 (first call answers 402); a bad address returns 400, no data 404, an outage/partial scan 502 — none is charged. Not financial advice.","parameters":{"type":"object","properties":{"token":{"type":"string","description":"ERC-20 contract address (0x…) to report on"},"chain":{"type":"string","description":"Chain slug: base (default), ethereum, polygon, arbitrum, optimism, bsc, avalanche"},"payment":{"type":"string","description":"Base64 of a single x402 v2 PaymentPayload (EIP-3009 transferWithAuthorization on Base USDC). OMIT it on the first call — the HTTP 402 you get back carries `howToPay.payloadTemplate`, the exact envelope to fill in, together with the price and the EIP-712 domain. Send it on the second call to complete the purchase. It is sent as the PAYMENT-SIGNATURE request header (see rest.headerParams), NEVER in the body: a signed authorization placed in the body does not reach the paywall. Nothing is charged for the 402 itself."}},"required":["token"]}}},{"type":"function","function":{"name":"search_services","description":"Search the FiatDock marketplace for paid + free MCP services other agents publish. Returns matching listings (id, name, summary, price, category, seller, verified, gatewayUrl). Use get_service for detail and call_service to invoke. Read-only, free.","parameters":{"type":"object","properties":{"q":{"type":"string","description":"Free-text relevance search over the listing name, summary, description, tags, category AND the tool names the seller's own MCP server reports (ADR-0067). Multi-word queries are SCORED, not matched literally: results come back best-first, and a listing must carry at least half your words to appear at all"},"category":{"type":"string","description":"Category slug: data, search, finance, dev, productivity, ai, web, other"},"verifiedOnly":{"type":"boolean","description":"Only verified listings (KYC'd seller or first-party)"},"sort":{"type":"string","enum":["newest","price","verified"],"description":"Sort order (default newest; first-party featured first)"}},"required":[]}}},{"type":"function","function":{"name":"get_service","description":"Full detail for one FiatDock marketplace listing, including how to call it: PAID listings route through the gateway via call_service (1% split enforced); FREE/first-party listings expose their real MCP endpoint to call directly. Read-only, free.","parameters":{"type":"object","properties":{"id":{"type":"string","description":"Listing id (svc_…) from search_services"}},"required":["id"]}}},{"type":"function","function":{"name":"call_service","description":"Invoke a listed FiatDock service. PAID listings route THROUGH the gateway (POST /s/:id) so the non-custodial split is enforced — normally 99/1 (seller/FiatDock), but 0% (the full price straight to the seller, a single payment) during that seller's first-month launch window. TO BUY: call once WITHOUT `payment` to get the 402 challenge, sign it with your own wallet, then call again with the same id/args plus `payment` — settlement is on-chain and direct to the seller. (The fiatdock-mcp npm package does this for you from AGENT_PRIVATE_KEY.) FREE/first-party listings are forwarded to their real MCP endpoint directly (no payment).","parameters":{"type":"object","properties":{"id":{"type":"string","description":"Listing id (svc_…) to invoke, from search_services"},"args":{"type":"object","description":"JSON payload to send to the service (e.g. an MCP JSON-RPC request body) — shape defined by that service","additionalProperties":true},"payment":{"type":"string","description":"Base64 of a JSON ARRAY of x402 v2 PaymentPayloads — one signed payload per entry in the 402's `accepts`, in the same order (read `accepts.length`: one leg during a seller's first-month 0% waiver, two after it). Omit on the first call to receive the challenge; send it on the second call to complete the purchase. Sent as the PAYMENT-SIGNATURE header (see rest.headerParams; the x402 v1 name X-PAYMENT is also accepted), NOT in the body — FiatDock never holds the funds."}},"required":["id"]}}}],"gemini_function_declarations":[{"name":"get_quote","description":"Free quote before paying: the exchange rate and exactly how much lands in the bank (or wallet) NET of every provider fee, including the 1% service commission. An executable estimate, not a locked rate.","parameters":{"type":"object","properties":{"side":{"type":"string","enum":["SELL","BUY"],"description":"SELL = USDC->fiat, BUY = fiat->USDC. Default SELL."},"cryptoAmount":{"type":"number","description":"USDC amount (required for SELL)"},"fiatAmount":{"type":"number","description":"Fiat amount (for BUY)"},"fiatCurrency":{"type":"string","description":"default EUR"},"network":{"type":"string","description":"default base"}},"required":[]}},{"name":"create_offramp_session","description":"Convert the agent's USDC to fiat in the owner's OWN bank account. Returns a checkoutUrl (valid ~2 hours) to forward to the human owner — or pass the owner's email and the link is ALSO emailed to them automatically — plus a partnerOrderId. Paid: $0.01 USDC via x402 — the first call answers HTTP 402 with exact payment requirements. COMPLIANCE (binding): own-account rule — the sending wallet and the receiving bank account must belong to the SAME person (the agent's owner); no third-party funds, no aggregation, no P2P transfers. 18+; served worldwide via our licensed provider across ~160 countries — EUR bank transfer in the SEPA zone (incl. Portugal), card/Apple Pay/Google Pay elsewhere — excluding US persons, sanctioned countries and the UK (NOT the UK). Crypto is volatile; not investment advice.","parameters":{"type":"object","properties":{"cryptoAmount":{"type":"number","description":"USDC amount to sell"},"fiatCurrency":{"type":"string","description":"e.g. EUR, default EUR"},"network":{"type":"string","description":"USDC network, default base"},"walletAddress":{"type":"string","description":"Optional SELL source wallet (0x…, EIP-55 checked) — pre-fills the widget; required with walletCode/walletHash"},"email":{"type":"string","description":"Owner's account email. If provided, the checkout link is ALSO emailed here automatically (you still receive it in checkoutUrl); the response echoes emailedTo"},"customerId":{"type":"string","description":"Stable agent/customer id"},"callbackUrl":{"type":"string","description":"Optional public https URL stored for a future provider with status webhooks — the current provider sends none, so no push will arrive and no callback secret is issued. Poll the order instead"},"walletCode":{"type":"string","description":"Optional Mt Pelerin address lock, part 1: 4-digit code (1000-9999). Requires walletHash + walletAddress"},"walletHash":{"type":"string","description":"Optional Mt Pelerin address lock, part 2: base64 signature of 'MtPelerin-<code>' by the agent's OWN wallet key (never shared with us). Locks the widget to walletAddress. Requires walletCode"},"ref":{"type":"string","description":"Optional referral code (1-64 chars: letters, digits, _ or -)"},"provider":{"type":"string","enum":["mtpelerin"],"description":"Licensed fiat provider. `mtpelerin` is the only provider on this server and the default — omit this field. It settles by SEPA bank transfer across the SEPA zone (incl. Portugal); its order status is not push-updated. Any other value returns 400 (no other provider is configured on this server)."},"payment":{"type":"string","description":"Base64 of a single x402 v2 PaymentPayload (EIP-3009 transferWithAuthorization on Base USDC). OMIT it on the first call — the HTTP 402 you get back carries `howToPay.payloadTemplate`, the exact envelope to fill in, together with the price and the EIP-712 domain. Send it on the second call to complete the purchase. It is sent as the PAYMENT-SIGNATURE request header (see rest.headerParams), NEVER in the body: a signed authorization placed in the body does not reach the paywall. Nothing is charged for the 402 itself."}},"required":["cryptoAmount"]}},{"name":"create_onramp_session","description":"Buy USDC with the owner's OWN fiat and deliver it to the agent's wallet (address locked). Returns checkoutUrl + partnerOrderId. Paid: $0.01 USDC via x402 — the first call answers HTTP 402 with exact payment requirements. COMPLIANCE (binding): own-account rule — the sending wallet and the receiving bank account must belong to the SAME person (the agent's owner); no third-party funds, no aggregation, no P2P transfers. 18+; served worldwide via our licensed provider across ~160 countries — EUR bank transfer in the SEPA zone (incl. Portugal), card/Apple Pay/Google Pay elsewhere — excluding US persons, sanctioned countries and the UK (NOT the UK). Crypto is volatile; not investment advice.","parameters":{"type":"object","properties":{"fiatAmount":{"type":"number","description":"Fiat amount to spend"},"walletAddress":{"type":"string","description":"Agent wallet that receives USDC (0x…, EIP-55 checked)"},"fiatCurrency":{"type":"string","description":"e.g. EUR, default EUR"},"network":{"type":"string","description":"USDC network, default base"},"email":{"type":"string","description":"Owner's account email. If provided, the checkout link is ALSO emailed here automatically (you still receive it in checkoutUrl); the response echoes emailedTo"},"customerId":{"type":"string","description":"Stable agent/customer id"},"callbackUrl":{"type":"string","description":"Optional public https URL stored for a future provider with status webhooks — the current provider sends none, so no push will arrive and no callback secret is issued. Poll the order instead"},"walletCode":{"type":"string","description":"Optional Mt Pelerin address lock, part 1: 4-digit code (1000-9999). Requires walletHash + walletAddress"},"walletHash":{"type":"string","description":"Optional Mt Pelerin address lock, part 2: base64 signature of 'MtPelerin-<code>' by the agent's OWN wallet key (never shared with us). Locks the widget to walletAddress. Requires walletCode"},"ref":{"type":"string","description":"Optional referral code (1-64 chars: letters, digits, _ or -)"},"provider":{"type":"string","enum":["mtpelerin"],"description":"Licensed fiat provider. `mtpelerin` is the only provider on this server and the default — omit this field. It settles by SEPA bank transfer across the SEPA zone (incl. Portugal); its order status is not push-updated. Any other value returns 400 (no other provider is configured on this server)."},"payment":{"type":"string","description":"Base64 of a single x402 v2 PaymentPayload (EIP-3009 transferWithAuthorization on Base USDC). OMIT it on the first call — the HTTP 402 you get back carries `howToPay.payloadTemplate`, the exact envelope to fill in, together with the price and the EIP-712 domain. Send it on the second call to complete the purchase. It is sent as the PAYMENT-SIGNATURE request header (see rest.headerParams), NEVER in the body: a signed authorization placed in the body does not reach the paywall. Nothing is charged for the 402 itself."}},"required":["fiatAmount","walletAddress"]}},{"name":"get_order_status","description":"Check the status of an on/off-ramp order by partnerOrderId (free).","parameters":{"type":"object","properties":{"partnerOrderId":{"type":"string","description":"id returned when the session was created"}},"required":["partnerOrderId"]}},{"name":"token_price","description":"FREE real-time price snapshot for any EVM token by contract address: USD price, 5m/1h/6h/24h change, liquidity, 24h volume, market cap/FDV and the most-liquid DEX pair (DexScreener); or a major symbol (ETH/BTC) for a spot price. Read-only, free.","parameters":{"type":"object","properties":{"token":{"type":"string","description":"ERC-20 contract address (0x…) — preferred"},"chain":{"type":"string","description":"Chain slug: base (default), ethereum, polygon, arbitrum, optimism, bsc, avalanche"},"symbol":{"type":"string","description":"Major asset symbol (e.g. ETH, BTC) when no address is given"}},"required":[]}},{"name":"token_safety","description":"On-chain safety verdict for any EVM token BEFORE trading: honeypot, buy/sell tax, contract-verified, owner privileges (mint/blacklist/pausable/hidden owner/balance-modify), holder concentration, LP-locked %, CEX listing and DEX liquidity (GoPlus + DexScreener). Returns safe|caution|danger with the exact risks. Paid: $0.01 USDC via x402 (first call answers 402); not charged if the data can't be fetched. Not financial advice.","parameters":{"type":"object","properties":{"token":{"type":"string","description":"ERC-20 contract address (0x…) to screen"},"chain":{"type":"string","description":"Chain slug: base (default), ethereum, polygon, arbitrum, optimism, bsc, avalanche"},"payment":{"type":"string","description":"Base64 of a single x402 v2 PaymentPayload (EIP-3009 transferWithAuthorization on Base USDC). OMIT it on the first call — the HTTP 402 you get back carries `howToPay.payloadTemplate`, the exact envelope to fill in, together with the price and the EIP-712 domain. Send it on the second call to complete the purchase. It is sent as the PAYMENT-SIGNATURE request header (see rest.headerParams), NEVER in the body: a signed authorization placed in the body does not reach the paywall. Nothing is charged for the 402 itself."}},"required":["token"]}},{"name":"stablecoin_intel","description":"Supply, $1.00 peg deviation and per-chain breakdown (incl. Base) for USDC and other stablecoins (DefiLlama). Paid: $0.002 USDC via x402 (first call answers 402); not charged if the data can't be fetched.","parameters":{"type":"object","properties":{"asset":{"type":"string","description":"Stablecoin symbol (default USDC), e.g. USDC, USDT, DAI, USDe"},"payment":{"type":"string","description":"Base64 of a single x402 v2 PaymentPayload (EIP-3009 transferWithAuthorization on Base USDC). OMIT it on the first call — the HTTP 402 you get back carries `howToPay.payloadTemplate`, the exact envelope to fill in, together with the price and the EIP-712 domain. Send it on the second call to complete the purchase. It is sent as the PAYMENT-SIGNATURE request header (see rest.headerParams), NEVER in the body: a signed authorization placed in the body does not reach the paywall. Nothing is charged for the 402 itself."}},"required":[]}},{"name":"gas_price","description":"Current Base gas price in wei and gwei — sample before submitting a tx. Paid: $0.001 USDC via x402 (first call answers 402); not charged on RPC failure.","parameters":{"type":"object","properties":{"payment":{"type":"string","description":"Base64 of a single x402 v2 PaymentPayload (EIP-3009 transferWithAuthorization on Base USDC). OMIT it on the first call — the HTTP 402 you get back carries `howToPay.payloadTemplate`, the exact envelope to fill in, together with the price and the EIP-712 domain. Send it on the second call to complete the purchase. It is sent as the PAYMENT-SIGNATURE request header (see rest.headerParams), NEVER in the body: a signed authorization placed in the body does not reach the paywall. Nothing is charged for the 402 itself."}},"required":[]}},{"name":"block_number","description":"Latest Base block number and its timestamp — a chain-head freshness/liveness probe. Paid: $0.001 USDC via x402 (first call answers 402); not charged on RPC failure.","parameters":{"type":"object","properties":{"payment":{"type":"string","description":"Base64 of a single x402 v2 PaymentPayload (EIP-3009 transferWithAuthorization on Base USDC). OMIT it on the first call — the HTTP 402 you get back carries `howToPay.payloadTemplate`, the exact envelope to fill in, together with the price and the EIP-712 domain. Send it on the second call to complete the purchase. It is sent as the PAYMENT-SIGNATURE request header (see rest.headerParams), NEVER in the body: a signed authorization placed in the body does not reach the paywall. Nothing is charged for the 402 itself."}},"required":[]}},{"name":"eth_balance","description":"Native ETH balance of any address on Base, in wei and ETH. Paid: $0.001 USDC via x402 (first call answers 402); a bad address returns 400 and an RPC failure 5xx — neither is charged.","parameters":{"type":"object","properties":{"address":{"type":"string","description":"A 40-hex EVM address (0x…)"},"payment":{"type":"string","description":"Base64 of a single x402 v2 PaymentPayload (EIP-3009 transferWithAuthorization on Base USDC). OMIT it on the first call — the HTTP 402 you get back carries `howToPay.payloadTemplate`, the exact envelope to fill in, together with the price and the EIP-712 domain. Send it on the second call to complete the purchase. It is sent as the PAYMENT-SIGNATURE request header (see rest.headerParams), NEVER in the body: a signed authorization placed in the body does not reach the paywall. Nothing is charged for the 402 itself."}},"required":["address"]}},{"name":"usdc_balance","description":"USDC balance of any address on Base (the x402 settlement asset), in atomic units and USDC. Paid: $0.001 USDC via x402 (first call answers 402); a bad address returns 400 and an RPC failure 5xx — neither is charged.","parameters":{"type":"object","properties":{"address":{"type":"string","description":"A 40-hex EVM address (0x…)"},"payment":{"type":"string","description":"Base64 of a single x402 v2 PaymentPayload (EIP-3009 transferWithAuthorization on Base USDC). OMIT it on the first call — the HTTP 402 you get back carries `howToPay.payloadTemplate`, the exact envelope to fill in, together with the price and the EIP-712 domain. Send it on the second call to complete the purchase. It is sent as the PAYMENT-SIGNATURE request header (see rest.headerParams), NEVER in the body: a signed authorization placed in the body does not reach the paywall. Nothing is charged for the 402 itself."}},"required":["address"]}},{"name":"token_metadata","description":"ERC-20 name, symbol, decimals and total supply for any contract on Base — the identity fields to fetch before pricing/safety-checking a token. Paid: $0.002 USDC via x402 (first call answers 402); a non-ERC-20/bad address returns 4xx and an RPC failure 5xx — neither is charged.","parameters":{"type":"object","properties":{"token":{"type":"string","description":"An ERC-20 contract address (0x…) on Base"},"payment":{"type":"string","description":"Base64 of a single x402 v2 PaymentPayload (EIP-3009 transferWithAuthorization on Base USDC). OMIT it on the first call — the HTTP 402 you get back carries `howToPay.payloadTemplate`, the exact envelope to fill in, together with the price and the EIP-712 domain. Send it on the second call to complete the purchase. It is sent as the PAYMENT-SIGNATURE request header (see rest.headerParams), NEVER in the body: a signed authorization placed in the body does not reach the paywall. Nothing is charged for the 402 itself."}},"required":["token"]}},{"name":"tx_status","description":"Confirmation status of a Base transaction — success/failed, block, confirmations, gas used, from/to. A pending/unknown tx returns 404 (poll-safe). Paid: $0.001 USDC via x402 (first call answers 402); not charged on 404 or RPC failure.","parameters":{"type":"object","properties":{"txHash":{"type":"string","description":"A 64-hex transaction hash (0x…) on Base"},"payment":{"type":"string","description":"Base64 of a single x402 v2 PaymentPayload (EIP-3009 transferWithAuthorization on Base USDC). OMIT it on the first call — the HTTP 402 you get back carries `howToPay.payloadTemplate`, the exact envelope to fill in, together with the price and the EIP-712 domain. Send it on the second call to complete the purchase. It is sent as the PAYMENT-SIGNATURE request header (see rest.headerParams), NEVER in the body: a signed authorization placed in the body does not reach the paywall. Nothing is charged for the 402 itself."}},"required":["txHash"]}},{"name":"address_intel","description":"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. Paid: $0.005 USDC via x402 (first call answers 402); a bad address returns 400 and an RPC/GoPlus outage 502 — neither is charged.","parameters":{"type":"object","properties":{"address":{"type":"string","description":"A 40-hex EVM address (0x…) on Base to enrich"},"payment":{"type":"string","description":"Base64 of a single x402 v2 PaymentPayload (EIP-3009 transferWithAuthorization on Base USDC). OMIT it on the first call — the HTTP 402 you get back carries `howToPay.payloadTemplate`, the exact envelope to fill in, together with the price and the EIP-712 domain. Send it on the second call to complete the purchase. It is sent as the PAYMENT-SIGNATURE request header (see rest.headerParams), NEVER in the body: a signed authorization placed in the body does not reach the paywall. Nothing is charged for the 402 itself."}},"required":["address"]}},{"name":"token_report","description":"The full picture on an ERC-20 in one call: live price, liquidity, 24h volume, market cap/FDV and the most-liquid DEX pair (DexScreener) together with the complete safety verdict (GoPlus: honeypot/taxes/owner privileges/holder concentration/LP-locked/CEX). One payment instead of chaining token_price + token_safety. Paid: $0.05 USDC via x402 (first call answers 402); a bad address returns 400, no data 404, an outage/partial scan 502 — none is charged. Not financial advice.","parameters":{"type":"object","properties":{"token":{"type":"string","description":"ERC-20 contract address (0x…) to report on"},"chain":{"type":"string","description":"Chain slug: base (default), ethereum, polygon, arbitrum, optimism, bsc, avalanche"},"payment":{"type":"string","description":"Base64 of a single x402 v2 PaymentPayload (EIP-3009 transferWithAuthorization on Base USDC). OMIT it on the first call — the HTTP 402 you get back carries `howToPay.payloadTemplate`, the exact envelope to fill in, together with the price and the EIP-712 domain. Send it on the second call to complete the purchase. It is sent as the PAYMENT-SIGNATURE request header (see rest.headerParams), NEVER in the body: a signed authorization placed in the body does not reach the paywall. Nothing is charged for the 402 itself."}},"required":["token"]}},{"name":"search_services","description":"Search the FiatDock marketplace for paid + free MCP services other agents publish. Returns matching listings (id, name, summary, price, category, seller, verified, gatewayUrl). Use get_service for detail and call_service to invoke. Read-only, free.","parameters":{"type":"object","properties":{"q":{"type":"string","description":"Free-text relevance search over the listing name, summary, description, tags, category AND the tool names the seller's own MCP server reports (ADR-0067). Multi-word queries are SCORED, not matched literally: results come back best-first, and a listing must carry at least half your words to appear at all"},"category":{"type":"string","description":"Category slug: data, search, finance, dev, productivity, ai, web, other"},"verifiedOnly":{"type":"boolean","description":"Only verified listings (KYC'd seller or first-party)"},"sort":{"type":"string","enum":["newest","price","verified"],"description":"Sort order (default newest; first-party featured first)"}},"required":[]}},{"name":"get_service","description":"Full detail for one FiatDock marketplace listing, including how to call it: PAID listings route through the gateway via call_service (1% split enforced); FREE/first-party listings expose their real MCP endpoint to call directly. Read-only, free.","parameters":{"type":"object","properties":{"id":{"type":"string","description":"Listing id (svc_…) from search_services"}},"required":["id"]}},{"name":"call_service","description":"Invoke a listed FiatDock service. PAID listings route THROUGH the gateway (POST /s/:id) so the non-custodial split is enforced — normally 99/1 (seller/FiatDock), but 0% (the full price straight to the seller, a single payment) during that seller's first-month launch window. TO BUY: call once WITHOUT `payment` to get the 402 challenge, sign it with your own wallet, then call again with the same id/args plus `payment` — settlement is on-chain and direct to the seller. (The fiatdock-mcp npm package does this for you from AGENT_PRIVATE_KEY.) FREE/first-party listings are forwarded to their real MCP endpoint directly (no payment).","parameters":{"type":"object","properties":{"id":{"type":"string","description":"Listing id (svc_…) to invoke, from search_services"},"args":{"type":"object","description":"JSON payload to send to the service (e.g. an MCP JSON-RPC request body) — shape defined by that service","additionalProperties":true},"payment":{"type":"string","description":"Base64 of a JSON ARRAY of x402 v2 PaymentPayloads — one signed payload per entry in the 402's `accepts`, in the same order (read `accepts.length`: one leg during a seller's first-month 0% waiver, two after it). Omit on the first call to receive the challenge; send it on the second call to complete the purchase. Sent as the PAYMENT-SIGNATURE header (see rest.headerParams; the x402 v1 name X-PAYMENT is also accepted), NOT in the body — FiatDock never holds the funds."}},"required":["id"]}}],"rest_mapping":{"get_quote":{"method":"GET","path":"/v1/quote","args":"query","paid":false},"create_offramp_session":{"method":"POST","path":"/v1/offramp/session","args":"json-body","paid":true,"headerParams":{"payment":"PAYMENT-SIGNATURE"},"paymentHeaderAlias":"X-PAYMENT","settlementResponseHeader":"PAYMENT-RESPONSE"},"create_onramp_session":{"method":"POST","path":"/v1/onramp/session","args":"json-body","paid":true,"headerParams":{"payment":"PAYMENT-SIGNATURE"},"paymentHeaderAlias":"X-PAYMENT","settlementResponseHeader":"PAYMENT-RESPONSE"},"get_order_status":{"method":"GET","path":"/v1/orders/{partnerOrderId}","args":"path","paid":false},"token_price":{"method":"GET","path":"/v1/token/price","args":"query","paid":false},"token_safety":{"method":"POST","path":"/v1/token/safety","args":"json-body","paid":true,"headerParams":{"payment":"PAYMENT-SIGNATURE"},"paymentHeaderAlias":"X-PAYMENT","settlementResponseHeader":"PAYMENT-RESPONSE"},"stablecoin_intel":{"method":"POST","path":"/v1/stablecoin/intel","args":"json-body","paid":true,"headerParams":{"payment":"PAYMENT-SIGNATURE"},"paymentHeaderAlias":"X-PAYMENT","settlementResponseHeader":"PAYMENT-RESPONSE"},"gas_price":{"method":"POST","path":"/v1/chain/gas-price","args":"json-body","paid":true,"headerParams":{"payment":"PAYMENT-SIGNATURE"},"paymentHeaderAlias":"X-PAYMENT","settlementResponseHeader":"PAYMENT-RESPONSE"},"block_number":{"method":"POST","path":"/v1/chain/block","args":"json-body","paid":true,"headerParams":{"payment":"PAYMENT-SIGNATURE"},"paymentHeaderAlias":"X-PAYMENT","settlementResponseHeader":"PAYMENT-RESPONSE"},"eth_balance":{"method":"POST","path":"/v1/chain/eth-balance","args":"json-body","paid":true,"headerParams":{"payment":"PAYMENT-SIGNATURE"},"paymentHeaderAlias":"X-PAYMENT","settlementResponseHeader":"PAYMENT-RESPONSE"},"usdc_balance":{"method":"POST","path":"/v1/chain/usdc-balance","args":"json-body","paid":true,"headerParams":{"payment":"PAYMENT-SIGNATURE"},"paymentHeaderAlias":"X-PAYMENT","settlementResponseHeader":"PAYMENT-RESPONSE"},"token_metadata":{"method":"POST","path":"/v1/chain/token-metadata","args":"json-body","paid":true,"headerParams":{"payment":"PAYMENT-SIGNATURE"},"paymentHeaderAlias":"X-PAYMENT","settlementResponseHeader":"PAYMENT-RESPONSE"},"tx_status":{"method":"POST","path":"/v1/chain/tx-status","args":"json-body","paid":true,"headerParams":{"payment":"PAYMENT-SIGNATURE"},"paymentHeaderAlias":"X-PAYMENT","settlementResponseHeader":"PAYMENT-RESPONSE"},"address_intel":{"method":"POST","path":"/v1/chain/address-intel","args":"json-body","paid":true,"headerParams":{"payment":"PAYMENT-SIGNATURE"},"paymentHeaderAlias":"X-PAYMENT","settlementResponseHeader":"PAYMENT-RESPONSE"},"token_report":{"method":"POST","path":"/v1/chain/token-report","args":"json-body","paid":true,"headerParams":{"payment":"PAYMENT-SIGNATURE"},"paymentHeaderAlias":"X-PAYMENT","settlementResponseHeader":"PAYMENT-RESPONSE"},"search_services":{"method":"GET","path":"/v1/marketplace/services","args":"query","paid":false},"get_service":{"method":"GET","path":"/v1/marketplace/services/{id}","args":"path","paid":false},"call_service":{"method":"POST","path":"/s/{id}","args":"json-body","paid":true,"headerParams":{"payment":"PAYMENT-SIGNATURE"},"paymentHeaderAlias":"X-PAYMENT","settlementResponseHeader":"PAYMENT-RESPONSE"}},"rest_mapping_note":"Each entry says how to turn the tool's parameters into an HTTP call. `args` places them: \"query\" (query string), \"path\" (URL segments), \"json-body\" (JSON request body). `headerParams`, when present, maps specific parameters to HTTP HEADERS instead — those parameters are EXCLUDED from the body. EVERY paid tool declares `payment` this way (-> PAYMENT-SIGNATURE, the x402 v2 header), and it must: a signed x402 authorization placed in the body would never reach the paywall — and on the marketplace gateway it would be forwarded to the seller as ordinary data, leaking your signature to a third party. To buy anything here: call once WITHOUT `payment` to receive the 402, read `howToPay.payloadTemplate` from its body for the exact envelope to sign, then call again with `payment` set to base64(JSON.stringify(envelope)). `call_service` is the one exception to the shape — a marketplace call may need one payload per `accepts` entry, so it takes a base64 ARRAY. `paymentHeaderAlias` names the x402 v1 header (X-PAYMENT) this server ALSO accepts for the same value — either works, PAYMENT-SIGNATURE is canonical. `settlementResponseHeader` names the RESPONSE header carrying the settlement result after a successful paid call.","examples":"https://fiatdock.com/llms-full.txt","skill":"https://fiatdock.com/skill.md"}