# FiatDock (remote · fiatdock.com)

Non-custodial USDC <-> bank for AI agents via x402 + Transak. Own funds only; PT + EU/EEA; 18+.

- Trust score: 71/100 (medium)
- Change this week: +5
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `fiatdock.com`: 71/100 (this document), [markdown](https://verifymcp.io/servers/com-fiatdock-fiatdock-mcp/fiatdock.md), [page](https://verifymcp.io/servers/com-fiatdock-fiatdock-mcp/fiatdock)
- npm · `fiatdock-mcp`: 70/100, [markdown](https://verifymcp.io/servers/com-fiatdock-fiatdock-mcp/fiatdock-mcp.md), [page](https://verifymcp.io/servers/com-fiatdock-fiatdock-mcp/fiatdock-mcp)

## Channel facts

- Endpoint: `https://fiatdock.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.4.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 66/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 15 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC is configured correctly; the domain's records validate against the full chain to the root.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 79/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 3240 tokens (~162/item across 20 items; 18 tools + 2 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http com-fiatdock-fiatdock-mcp https://fiatdock.com/mcp
```

### Codex

```toml
[mcp_servers.com-fiatdock-fiatdock-mcp]
url = "https://fiatdock.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-fiatdock-fiatdock-mcp": {
      "type": "remote",
      "url": "https://fiatdock.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add com-fiatdock-fiatdock-mcp --url https://fiatdock.com/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  com-fiatdock-fiatdock-mcp:
    url: "https://fiatdock.com/mcp"
```

### Other

```json
{
  "mcpServers": {
    "com-fiatdock-fiatdock-mcp": {
      "type": "http",
      "url": "https://fiatdock.com/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-02 (score 71, +1)

No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 70, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 69, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-29 (score 68, +1)

- [security] Tool “create_offramp_session” rewrote its description, which is the text the model reads
- [security] Tool “create_onramp_session” rewrote its description, which is the text the model reads
- [security] Tool “get_quote” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 152 → 174
- [functional] Server version: 1.4.0 → 1.5.1
- [cosmetic] “create_onramp_session” added an optional parameter “walletHash”
- [cosmetic] “create_offramp_session” added an optional parameter “callbackUrl”
- [cosmetic] “create_offramp_session” added an optional parameter “walletAddress”
- [cosmetic] “create_offramp_session” added an optional parameter “walletCode”
- [cosmetic] “create_offramp_session” added an optional parameter “walletHash”
- [cosmetic] “create_onramp_session” added an optional parameter “callbackUrl”
- [cosmetic] “create_onramp_session” added an optional parameter “walletCode”
- [cosmetic] “create_offramp_session” reworded the description of “email”
- [cosmetic] “create_offramp_session” reworded the description of “provider”
- [cosmetic] “create_onramp_session” reworded the description of “email”
- [cosmetic] “create_onramp_session” reworded the description of “provider”
- [cosmetic] “create_onramp_session” reworded the description of “walletAddress”

### 2026-07-28 (score 67, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-27 (score 66, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 66)

First indexed and scored.

## MCP tools (18)

### `get_quote` (~148 tokens)

Get a free quote

Free quote before paying: the exchange rate and exactly how much lands in the bank (or wallet) NET of every provider fee — that net figure is the number to decide on. Executable estimate, not a locked rate. side=SELL (USDC->fiat) or BUY (fiat->USDC).

Input parameters:

- `cryptoAmount` (number): USDC amount (required for SELL)
- `fiatAmount` (number): Fiat amount (for BUY)
- `fiatCurrency` (string): e.g. EUR, default EUR
- `network` (string): USDC network, default base
- `side` (string): SELL = USDC to fiat, BUY = fiat to USDC

Output parameters:

- `asOf` (string): ISO timestamp of the quote
- `fiatCurrency` (string): Fiat currency of the quote
- `network` (string): USDC network the quote assumes
- `note` (string): Caveats — youReceive is net of provider fees; the x402 session fee is separate
- `providerFixedFee` (number): Provider-reported fixed fee component
- `providerNetworkFee` (number): Provider-reported network delivery fee (0 on Base)
- `rate` (number): Exchange rate used (fiat per USDC)
- `side` (string): Quote direction
- `source` (string): Where the price came from (the provider's own conversion API)
- `youReceive` (string): Amount received NET of all provider fees, e.g. '87.78 EUR' — this is the number to decide on
- `youSend` (string): Amount the sender pays, e.g. '100 USDC'

### `get_order_status` (~41 tokens)

Get order status

Check the status of an on/off-ramp order by partnerOrderId.

Input parameters:

- `partnerOrderId` (string, required): Order id returned when the session was created

Output parameters:

- `createdAt` (string): ISO 8601 session creation time
- `customerId` (string): Customer id the session was created with
- `isBuyOrSell` (string): Order direction
- `ref` (string): Referral code if one was set
- `status` (string): SESSION_CREATED -> PROCESSING -> COMPLETED | FAILED | CANCELLED | EXPIRED
- `updatedAt` (string): ISO 8601 time of the last status update (static under the current provider — no webhook exists, so the order stays SESSION_CREATED; ADR-0050)

### `token_price` (~156 tokens)

Token price & liquidity (free)

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 pass a major symbol (ETH/BTC) for a Coinbase spot price. Read-only, free.

Input parameters:

- `chain` (string): Chain slug: base (default), ethereum, polygon, arbitrum, optimism, bsc, avalanche
- `symbol` (string): Major asset symbol (e.g. ETH, BTC) — used when no contract address is given
- `token` (string): ERC-20 contract address (0x…) — preferred

Output parameters:

- `asOf` (string): ISO 8601 time the snapshot was read
- `chain` (string): Chain the quoted pair trades on
- `fdvUsd` (number|null): Fully-diluted valuation in USD
- `liquidityUsd` (number|null): Pair liquidity in USD
- `marketCapUsd` (number|null): Market cap in USD
- `name` (string): Token name
- `note` (string): Human-readable caveat about the snapshot, if any
- `priceChange` (object): Percent price change by window
- `priceUsd` (number|null): Current USD price (most-liquid pair)
- `query` (object): The resolved lookup this snapshot answers (echoed so an agent can confirm what was priced)
- `recommend` (object): Recommended paid next step (token_safety) — present for contract-address lookups where a rug/honeypot check matters
- `source` (string): Data source
- `symbol` (string): Token symbol
- `topPair` (object): The most-liquid DEX pair used
- `txns24h` (object): 24h buy/sell transaction counts on the top pair
- `volume24hUsd` (number|null): 24h trading volume in USD

### `search_services` (~147 tokens)

Search the FiatDock marketplace

Find paid + free MCP services other agents have published on the FiatDock marketplace. Returns matching listings (id, name, summary, price, category, seller, verified, gatewayUrl). Use get_service for full detail and call_service to invoke one. Read-only, free.

Input parameters:

- `category` (string): Filter by category slug: data, search, finance, dev, productivity, ai, web, other
- `q` (string): Free-text search over name, summary, description and tags
- `sort` (string): Sort order (default newest; first-party listings are always featured first)
- `verifiedOnly` (boolean): Only verified listings (KYC'd seller or first-party)

Output parameters:

- `count` (number): Number of listings returned
- `services` (array): Matching listings (first-party featured first)

### `get_service` (~78 tokens)

Get a marketplace service's detail

Full detail for one FiatDock marketplace listing, including how to call it: PAID listings route through the gateway via call_service (the 99/1 split is enforced); FREE/first-party listings expose their real MCP endpoint to call directly. Read-only, free.

Input parameters:

- `id` (string, required): Listing id (svc_…) from search_services

Output parameters:

- `callHint` (string): Plain-language instruction for how an agent invokes this listing
- `category` (string): Category slug (data, search, finance, dev, productivity, ai, web, other)
- `createdAt` (string): ISO 8601 listing creation time
- `description` (string): Full description
- `feeBps` (number): Effective gateway commission in basis points right now: 0 during the seller's first-month launch waiver (buyer pays the FULL price directly to the seller), else 100 (1%). PAID listings only (ADR-0022…
- `firstParty` (boolean): Platform's own featured listing (official)
- `gatewayUrl` (string|null): Absolute URL to reach it: the FiatDock gateway https://…/s/:id (PAID — invoke via call_service, 99/1 split) OR the listing's own MCP endpoint (FREE/first-party — call directly). null for stdio (npm p…
- `id` (string): Listing id (svc_…) — pass to get_service / call_service
- `install` (object): Ready-to-use local launch spec for stdio listings (npx -y <package>)
- `listingType` (string): "http" (hosted Streamable-HTTP endpoint) or "stdio" (an npm package agents run locally via npx; always free, not remotely callable)
- `mcpEndpoint` (string): Real MCP endpoint — present only for FREE/first-party (direct) listings
- `mcpTool` (string): For a first-party listing served by FiatDock's own MCP: the exact tool name to call on that endpoint
- `name` (string): Service name
- `networks` (array): Chain slugs the service settles on
- `packageName` (string): npm package name — present only on stdio listings; install with npx -y <packageName>
- `priceUsd` (number): Price per call in US dollars (0 = free)
- `rating` (object): Verified-purchase rating aggregate: { count, average (1-5) }
- `reviews` (array): Recent verified-purchase reviews, newest first
- `sellerId` (string): Opaque seller id that owns the listing
- `sellerName` (string): Seller display name, if set
- `status` (string): Listing status: pending | verified | suspended
- `summary` (string): One-line summary
- `tags` (array): Free-text tags
- `trustResetAt` (string): ISO time the listing was last demoted to pending after its endpoint or price changed (ADR-0043 bait-and-switch guard) — absent if never
- `verified` (boolean): Verified seller (KYC + active badge) or first-party (platform-vouched)
- `x402PriceUsd` (number): REAL per-call x402 price when the endpoint sits behind FiatDock's own paywall (priceUsd is 0 there because such listings are not gateway-routed) — budget from THIS field when present

### `create_offramp_session` (~566 tokens)

Create off-ramp session (USDC → bank)

Convert the agent's USDC to fiat in the owner's OWN bank account. Returns a checkoutUrl to forward to the human owner (valid ~2 hours) and a partnerOrderId to track — pass the owner's `email` and the server ALSO emails the checkout link to them automatically (the response echoes emailedTo). Paid endpoint ($1.00 USDC via x402) — without payment this returns the 402 challenge; use the fiatdock-mcp npm package with AGENT_PRIVATE_KEY for automatic payment. COMPLIANCE: 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.

Input parameters:

- `callbackUrl` (string): 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 get_order_status instead
- `cryptoAmount` (number, required): USDC amount to sell
- `customerId` (string): Stable agent/customer id
- `email` (string): Owner's account email. If provided, the checkout link is ALSO emailed to this address automatically (you still receive it in checkoutUrl); the response echoes emailedTo to confirm
- `fiatCurrency` (string): e.g. EUR, default EUR
- `network` (string): USDC network, default base
- `provider` (string): 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…
- `ref` (string): Optional referral code (1-64 chars: letters, digits, _ or -)
- `walletAddress` (string): Optional SELL source wallet (0x…, EIP-55 checked) — pre-fills the widget; required with walletCode/walletHash
- `walletCode` (string): Optional Mt Pelerin address lock, part 1: 4-digit code (1000-9999). Requires walletHash + walletAddress
- `walletHash` (string): Optional Mt Pelerin address lock, part 2: base64 signature of 'MtPelerin-<code>' by the agent's OWN wallet key (never shared with us). Requires walletCode

Output parameters:

- `checkoutUrl` (string): Branded checkout URL (valid ~2 hours) — forward to the human owner
- `customerKey` (string): Returned ONCE on the first session with a new customerId — store securely
- `customerKeyNote` (string): How to use customerKey
- `emailedTo` (string): Present when an `email` was supplied and email is configured: the checkout link was also emailed to this address (best-effort)
- `note` (string): Next-step instructions
- `partnerOrderId` (string): Order id — track it with get_order_status
- `provider` (string): Licensed fiat provider handling this session (e.g. mtpelerin)

### `create_onramp_session` (~521 tokens)

Create on-ramp session (fiat → USDC)

Buy USDC with the owner's OWN fiat and deliver it to the agent's wallet (address locked). Returns checkoutUrl + partnerOrderId. Paid endpoint ($1.00 USDC via x402) — without payment this returns the 402 challenge; use the fiatdock-mcp npm package with AGENT_PRIVATE_KEY for automatic payment. COMPLIANCE: 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.

Input parameters:

- `callbackUrl` (string): 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 get_order_status instead
- `customerId` (string): Stable agent/customer id
- `email` (string): Owner's account email. If provided, the checkout link is ALSO emailed to this address automatically (you still receive it in checkoutUrl); the response echoes emailedTo to confirm
- `fiatAmount` (number, required): Fiat amount to spend
- `fiatCurrency` (string): e.g. EUR, default EUR
- `network` (string): USDC network, default base
- `provider` (string): 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…
- `ref` (string): Optional referral code (1-64 chars: letters, digits, _ or -)
- `walletAddress` (string, required): Agent wallet that receives USDC (0x…, EIP-55 checked)
- `walletCode` (string): Optional Mt Pelerin address lock, part 1: 4-digit code (1000-9999). Requires walletHash
- `walletHash` (string): 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

Output parameters:

- `checkoutUrl` (string): Branded checkout URL (valid ~2 hours) — forward to the human owner
- `customerKey` (string): Returned ONCE on the first session with a new customerId — store securely
- `customerKeyNote` (string): How to use customerKey
- `emailedTo` (string): Present when an `email` was supplied and email is configured: the checkout link was also emailed to this address (best-effort)
- `note` (string): Next-step instructions
- `partnerOrderId` (string): Order id — track it with get_order_status
- `provider` (string): Licensed fiat provider handling this session (e.g. mtpelerin)

### `token_safety` (~178 tokens)

Token safety & rug check ($0.01)

PAID ($0.01 USDC via x402). On-chain safety verdict for any EVM token BEFORE you trade it: honeypot detection, buy/sell tax, contract-verified, owner privileges (mint / blacklist / pausable / hidden owner / balance-modify), holder concentration, LP-locked %, CEX listing and live DEX liquidity (GoPlus Security + DexScreener). Returns verdict safe|caution|danger with the exact risks. Without payment this returns the 402 challenge; the fiatdock-mcp npm package (AGENT_PRIVATE_KEY) pays automatically. Not financial advice.

Input parameters:

- `chain` (string): Chain slug: base (default), ethereum, polygon, arbitrum, optimism, bsc, avalanche
- `token` (string, required): ERC-20 contract address (0x…) to screen

Output parameters:

- `asOf` (string): ISO 8601 time the verdict was computed
- `buyTaxPct` (number|null): Buy tax %
- `chain` (string): Chain the token was screened on
- `holderCount` (number|null): Number of holders
- `isHoneypot` (boolean): Token cannot be sold (honeypot)
- `isMintable` (boolean): Supply can be minted
- `isOpenSource` (boolean): Contract source verified/open
- `isProxy` (boolean): Upgradeable proxy contract
- `liquidityUsd` (number|null): DEX liquidity in USD
- `lpLockedPct` (number|null): Liquidity-pool tokens locked, %
- `name` (string): Token name
- `note` (string): Human-readable caveat about the verdict, if any
- `priceUsd` (number|null): Current USD price, when a liquid pair exists
- `query` (object): The resolved lookup this verdict answers
- `risks` (array): Each detected risk: level (danger|caution), flag, detail
- `sellTaxPct` (number|null): Sell tax %
- `source` (string): Data source (e.g. GoPlus Security + DexScreener)
- `symbol` (string): Token symbol
- `token` (string): Contract address that was screened
- `topHolderPct` (number|null): Top holder's share of supply, %
- `verdict` (string): Overall risk verdict
- `verdictReason` (string): Plain-language explanation of the verdict

### `stablecoin_intel` (~141 tokens)

Stablecoin intelligence ($0.002)

PAID ($0.002 USDC via x402). Supply, peg health and per-chain breakdown for USDC and other stablecoins: total circulating supply, deviation from the $1.00 peg, peg mechanism, the amount circulating on Base (with its share of total) and the top chains by supply (DefiLlama). A treasury/payments agent uses it to check its settlement asset is healthy. Without payment this returns the 402 challenge; the fiatdock-mcp npm package pays automatically.

Input parameters:

- `asset` (string): Stablecoin symbol (default USDC), e.g. USDC, USDT, DAI, USDe

Output parameters:

- `asOf` (string): ISO 8601 time the snapshot was read
- `asset` (string): Stablecoin symbol
- `name` (string): Stablecoin full name
- `note` (string): Human-readable caveat about the snapshot, if any
- `onBase` (object): Circulating supply on Base + its share of total
- `pegDeviationPct` (number|null): Absolute deviation from $1.00, %
- `pegMechanism` (string): e.g. fiat-backed, crypto-backed, algorithmic
- `pegStatus` (string): on-peg | slight-deviation | off-peg | unknown
- `pegType` (string): What the asset is pegged to (e.g. peggedUSD)
- `price` (number|null): Current price in USD
- `source` (string): Data source (e.g. DefiLlama)
- `topChains` (array): Top chains by circulating supply
- `totalCirculatingUsd` (number|null): Total circulating supply (USD)

### `gas_price` (~79 tokens)

Base gas price ($0.001)

PAID ($0.001 USDC via x402). The current Base gas price in wei and gwei. A gas-aware agent samples it before submitting a tx. Without payment this returns the 402 challenge; the fiatdock-mcp npm package pays automatically. On any RPC failure the call returns 4xx/5xx and is NOT charged.

Output parameters:

- `asOf` (string): ISO 8601 read time
- `gwei` (number): Current gas price in gwei
- `network` (string): Chain read (always base)
- `weiPerGas` (string): Current gas price in wei (string; may exceed Number range)

### `block_number` (~81 tokens)

Base block height ($0.001)

PAID ($0.001 USDC via x402). The latest Base block number plus its timestamp — a freshness/liveness probe for agents that need to know the chain head. Without payment this returns the 402 challenge; the fiatdock-mcp npm package pays automatically. On any RPC failure the call returns 4xx/5xx and is NOT charged.

Output parameters:

- `asOf` (string): ISO 8601 read time
- `blockNumber` (number): Latest block height on Base
- `network` (string): Chain read (always base)
- `timestamp` (number|null): Unix seconds of the latest block (null if unavailable)
- `timestampIso` (string|null): ISO 8601 of the latest block time (null if unavailable)

### `eth_balance` (~104 tokens)

ETH balance on Base ($0.001)

PAID ($0.001 USDC via x402). The native ETH balance of any address on Base, in wei and ETH. Without payment this returns the 402 challenge; the fiatdock-mcp npm package pays automatically. An invalid address returns 400 and is NOT charged; on any RPC failure it returns 5xx and is NOT charged.

Input parameters:

- `address` (string, required): A 40-hex EVM address (0x…) to read the ETH balance of

Output parameters:

- `address` (string): The queried address
- `asOf` (string): ISO 8601 read time
- `eth` (string): ETH balance as a decimal string (18 dp, trimmed)
- `network` (string): Chain read (always base)
- `wei` (string): ETH balance in wei (string; may exceed Number range)

### `usdc_balance` (~115 tokens)

USDC balance on Base ($0.001)

PAID ($0.001 USDC via x402). The USDC balance of any address on Base (the settlement asset for x402), in atomic units and USDC. Without payment this returns the 402 challenge; the fiatdock-mcp npm package pays automatically. An invalid address returns 400 and is NOT charged; on any RPC failure it returns 5xx and is NOT charged.

Input parameters:

- `address` (string, required): A 40-hex EVM address (0x…) to read the USDC balance of

Output parameters:

- `address` (string): The queried address
- `asOf` (string): ISO 8601 read time
- `asset` (string): Token symbol (USDC)
- `atomic` (string): USDC balance in atomic units (6 dp; string)
- `contract` (string): USDC contract address on Base
- `network` (string): Chain read (always base)
- `usdc` (string): USDC balance as a decimal string (trimmed)

### `token_metadata` (~126 tokens)

ERC-20 token metadata on Base ($0.002)

PAID ($0.002 USDC via x402). Name, symbol, decimals and total supply for any ERC-20 contract on Base — the identity fields an agent needs before pricing or safety-checking a token. Without payment this returns the 402 challenge; the fiatdock-mcp npm package pays automatically. A non-ERC-20 / bad address returns 4xx and is NOT charged; on any RPC failure it returns 5xx and is NOT charged.

Input parameters:

- `token` (string, required): An ERC-20 contract address (0x…, 40 hex) on Base

Output parameters:

- `asOf` (string): ISO 8601 read time
- `contract` (string): The ERC-20 contract address queried
- `decimals` (number): Token decimals
- `name` (string|null): Token name (null if the contract omits name())
- `network` (string): Chain read (always base)
- `symbol` (string|null): Token symbol (null if the contract omits symbol())
- `totalSupply` (string|null): Total supply as a decimal string (null if unavailable)
- `totalSupplyAtomic` (string|null): Total supply in atomic units (string; null if unavailable)

### `tx_status` (~117 tokens)

Transaction status on Base ($0.001)

PAID ($0.001 USDC via x402). Confirmation status of a Base transaction — success/failed, block, confirmations, gas used, from/to. An unconfirmed/unknown tx returns 404 (and is NOT charged), so an agent can poll safely. Without payment this returns the 402 challenge; the fiatdock-mcp npm package pays automatically. On any RPC failure it returns 5xx and is NOT charged.

Input parameters:

- `txHash` (string, required): A 64-hex transaction hash (0x…) on Base

Output parameters:

- `asOf` (string): ISO 8601 read time
- `blockNumber` (number): Block the tx was mined in
- `confirmations` (number): Confirmations as of the read (>=1)
- `from` (string|null): Sender address (null if the node omits it)
- `gasUsed` (string): Gas used by the tx (string)
- `network` (string): Chain read (always base)
- `status` (string): success | failed (a pending/unknown tx returns 404, not this shape)
- `to` (string|null): Recipient address (null for a contract-creation tx)
- `txHash` (string): The transaction hash queried

### `address_intel` (~174 tokens)

Address intelligence on Base ($0.005)

PAID ($0.005 USDC via x402). Enrich ANY Base address in one call before you trust it: EOA vs contract (and whether it's an ERC-20, with its name/symbol/decimals), account nonce, ETH + USDC balance, and a KEYLESS GoPlus security verdict (phishing / sanctioned / mixer / money-laundering / blacklist and more) — the loop input for triaging a counterparty, payout target or approval spender. Without payment this returns the 402 challenge; the fiatdock-mcp npm package pays automatically. A bad address returns 400; if Base RPC or GoPlus is unavailable it returns 502 — neither is charged.

Input parameters:

- `address` (string, required): A 40-hex EVM address (0x…) on Base to enrich

Output parameters:

- `address` (string): The queried address
- `asOf` (string): ISO 8601 read time
- `ethBalance` (string): Native ETH balance as a decimal string
- `isContract` (boolean): true if the address has bytecode on Base
- `isErc20` (boolean): true if it is an ERC-20 token contract
- `network` (string): Chain read (always base)
- `nonce` (number): Outgoing transaction count (account nonce)
- `security` (object): Keyless GoPlus address-security verdict
- `summary` (string): One-line human-readable verdict
- `token`: ERC-20 identity when isErc20, else null
- `type` (string): eoa | contract | erc20_contract
- `usdcBalance` (string): USDC balance as a decimal string

### `token_report` (~205 tokens)

Token report — price + safety in one call ($0.05)

PAID ($0.05 USDC via x402). 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 — honeypot / buy&sell tax / owner privileges / holder concentration / LP-locked / CEX listing (GoPlus). One payment instead of chaining token_price + token_safety. Without payment this returns the 402 challenge; the fiatdock-mcp npm package pays automatically. A bad address returns 400; no liquidity/security data returns 404; an upstream outage or partial scan returns 502 — none is charged. Not financial advice.

Input parameters:

- `chain` (string): Chain slug: base (default), ethereum, polygon, arbitrum, optimism, bsc, avalanche
- `token` (string, required): ERC-20 contract address (0x…) to report on

Output parameters:

- `address` (string): The ERC-20 contract address
- `asOf` (string): ISO 8601 read time
- `name` (string|null): Token name
- `network` (string): Chain slug the report is for (e.g. base)
- `note` (string): Human-readable caveat
- `price` (object): Price/liquidity from the most-liquid DEX pair (DexScreener)
- `safety` (object): On-chain safety verdict (GoPlus) — same shape token_safety returns
- `source` (string): Data sources
- `symbol` (string|null): Token symbol
- `verdict` (string): Headline safety verdict: safe | caution | danger

### `call_service` (~198 tokens)

Call a marketplace service

Invoke a listed FiatDock service. PAID listings go THROUGH the gateway (POST /s/:id) so the non-custodial split is enforced — normally TWO payments (99% seller + 1% FiatDock), or ONE full-price payment to the seller during that seller's first-month 0% launch window; this remote /mcp cannot sign payments, so it returns the gateway's 402 challenge as an error (use the fiatdock-mcp npm package with AGENT_PRIVATE_KEY to pay whatever the 402 lists automatically). FREE / first-party listings are forwarded to their real MCP endpoint directly (no payment). Pass the service's expected request body as `args`.

Input parameters:

- `args` (object): JSON payload to send to the service (e.g. an MCP JSON-RPC request body) — shape is defined by that service
- `id` (string, required): Listing id (svc_…) to invoke, from search_services

Output parameters:

- `ok` (boolean): true when the underlying service returned a 2xx
- `result`: The service's response body — parsed JSON when it returned JSON, otherwise the raw text
- `routedThroughGateway` (boolean): true if PAID (settled 99% seller / 1% FiatDock via /s/:id); false if FREE/first-party direct
- `service` (string): Listing id that was invoked
- `status` (number): HTTP status returned by the service (or the gateway)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/com-fiatdock-fiatdock-mcp/fiatdock#diagnostics

## Score history

- 2026-08-03: 71
- 2026-08-02: 71
- 2026-08-01: 70
- 2026-07-31: 70
- 2026-07-30: 69
- 2026-07-29: 68
- 2026-07-28: 67
- 2026-07-27: 66
- 2026-07-26: 66

## Links

- Remote endpoint: https://fiatdock.com/mcp
- Repository: https://github.com/fiatdock/fiatdock
- Website: https://fiatdock.com/
- Changelog RSS feed: https://verifymcp.io/servers/com-fiatdock-fiatdock-mcp/fiatdock/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-fiatdock-fiatdock-mcp/fiatdock/changelog.json
- HTML version of this page: https://verifymcp.io/servers/com-fiatdock-fiatdock-mcp/fiatdock
