FiatDock vs Camt053 MCP

A side-by-side look at the FiatDock and Camt053 MCP MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.

FiatDock logoFiatDockFinance & Fintech · Local subprocess (stdio)MCP marketplace: agents pay per call in USDC via x402. Plus Base chain data and a USDC<->bank ramp.64GoodAuth: not declaredCamt053 MCP logoCamt053 MCPFinance & Fintech · Local subprocess (stdio)ISO 20022 bank-statement parsing + reversing entries (camt.053 Bank-to-Customer Statement). 19 tools + 3 resources + 4 guided prompts across message-type discovery, return-reason lookup, schema introspection, IBAN/BIC/LEI validation, camt.053 parsing + XSD validation, Nov 2026 CBPR+ cliff readiness check, curated SEPA / CBPR+ / HVPS+ rulebook citation lookup, accounting-platform journal export (Xero + QuickBooks Online), LLM-driven entry classification via MCP Sampling, entry listing/filtering, and one-shot validated reversing-entry XML generation. Built on the camt053 library (100% line + branch coverage, SLSA Build L3 + PEP 740 attestations, Apache-2.0). Install pip install camt053-mcp, run camt053-mcp.61GoodAuth: no auth required

Verdict: choose FiatDock for finance & fintech work as a local process; choose Camt053 MCP for finance & fintech as a local process. You can also run both side by side in one mcpServers block.

Which MCP server should you choose?

FiatDock logoChoose FiatDock when

  • You need dedicated capabilities in the Finance & Fintech domain.
  • You prefer a local stdio subprocess transport.
  • You have the keys it needs: AGENT_PRIVATE_KEY, FIATDOCK_TOOLS.
  • You want tools like get_quote, get_order_status, token_price.
Explore FiatDock

Camt053 MCP logoChoose Camt053 MCP when

  • You need dedicated capabilities in the Finance & Fintech domain.
  • You prefer a local stdio subprocess transport.
  • Its auth model fits you: No auth required.
  • You want tools like list_message_types, list_return_reasons, get_required_fields.
Explore Camt053 MCP

Feature & specification comparison

Rows where the two servers differ are marked.

SpecFiatDock logoFiatDockCamt053 MCP logoCamt053 MCP
CategoryFinance & FintechFinance & Fintech
Quality signal64/100 · Good61/100 · Good
Install commandConfirmedConfirmed
TransportLocal subprocess (stdio)Local subprocess (stdio)
AuthNot declaredNo auth required
PricingNot declaredFree
Required env varsAGENT_PRIVATE_KEYFIATDOCK_TOOLSNone listed
Verified ownerCommunity listingCommunity listing
GitHub stars12
Directory activity 2 views 0 installs 0 upvotes 5 views 0 installs 0 upvotes
Tools4824

Tools & capabilities

FiatDock tools 48

  • get_quoteFree 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).
  • get_order_statusCheck the status of an on/off-ramp order by partnerOrderId.
  • token_priceFREE 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.
  • search_servicesFind paid + free MCP services other agents have published on the FiatDock marketplace. Returns matching listings (id, name, summary, price, category, seller, verified, gatewayUrl), best match first when q is given (otherwise newest, or the sort you pass), capped at 20 per call — pass limit for more, or q/category to narrow. Use get_service for full detail and call_service to invoke one. Read-only, free.
  • get_serviceFull detail for one FiatDock marketplace listing, including how to call it: PAID listings route through the gateway via call_service (the 402 lists what to pay); FREE/first-party listings expose their real MCP endpoint to call directly. Read-only, free.
  • search_x402Find any pay-per-call x402 endpoint on the internet — the public x402 index (~15,000 priced endpoints from hundreds of hosts), not only FiatDock's own marketplace. Ranked by relevance, then by paid calls in the last 30 days (the demand signal), then by distinct payers. Each row carries the URL, the price the index recorded, the network, where the money goes, and the 30-day call/payer counts; call_x402 then reads the endpoint's own 402 and pays it directly from your wallet — FiatDock takes no fee and never touches the money. Read-only, free. Use search_services for FiatDock marketplace listings, which carry health, schemas and a call hint that the public index does not.
  • create_offramp_sessionConvert 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 ($0.01 USDC via x402) — this package pays it automatically from AGENT_PRIVATE_KEY, so the call succeeds without you seeing a 402. 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+; service area: Portugal + supported EU/EEA countries (NOT the UK). Crypto is volatile; not investment advice.
  • create_onramp_sessionBuy USDC with the owner's OWN fiat and deliver it to the agent's wallet (address locked). Returns checkoutUrl (valid ~2 hours) + partnerOrderId. Paid endpoint ($0.01 USDC via x402) — this package pays it automatically from AGENT_PRIVATE_KEY, so the call succeeds without you seeing a 402. 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+; service area: Portugal + supported EU/EEA countries (NOT the UK). Crypto is volatile; not investment advice.
  • token_safetyPAID ($0.0045 USDC via x402, paid automatically). 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. Not financial advice.
  • stablecoin_intelPAID ($0.002 USDC via x402, paid automatically). 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.
  • gas_pricePAID ($0.001 USDC via x402, paid automatically). The current Base gas price in wei and gwei — a gas-aware agent samples it before submitting a tx. On any RPC failure the call returns 4xx/5xx and is NOT charged.
  • block_numberPAID ($0.001 USDC via x402, paid automatically). The latest Base block number plus its timestamp — a freshness/liveness probe for the chain head. On any RPC failure the call returns 4xx/5xx and is NOT charged.
  • +36 more on the listing page

Camt053 MCP tools 24

  • list_message_typesList every supported ISO 20022 camt.05x message type and its name. Use this first, before any validation or generation call, to discover the exact ``message_type`` strings this server accepts. For the return-reason codes rather than message types, call ``list_return_reasons`` instead. Returns a list of ``{"message_type": ..., "name": ...}`` dictionaries, one per supported message type (e.g. ``camt.053.001.14``).
  • list_return_reasonsList every known ISO external return reason code with its name. Use this to discover the ``reason_code`` values that ``filter_entries`` and ``generate_reversal`` accept (e.g. ``AC04`` Closed Account). For the supported message types rather than reason codes, use ``list_message_types``. Returns a list of ``{"code": ..., "name": ...}`` dictionaries (e.g. ``{"code": "AC04", "name": "Closed Account Number"}``).
  • get_required_fieldsList only the required input field names for a camt message type. Use this for a quick checklist of the mandatory columns before building reversing-entry records. When you need full type/format constraints (not just which fields are required), call ``get_input_schema`` instead. Args: message_type: A supported ISO 20022 camt.05x message type.
  • get_input_schemaReturn the full JSON Schema for a message type's flat input record. Use this to learn every field, its type, and its constraints before assembling records, or to drive a form/UI. For just the required-field names use ``get_required_fields``; to actually check records against this schema use ``validate_records``. Args: message_type: A supported ISO 20022 camt.05x message type.
  • validate_recordsValidate flat records against a message type's input JSON Schema. Use this on in-memory reversing-entry records to catch structural/type errors per row before generation. To validate a whole camt.05x *document* (XML) against its XSD instead, use ``validate_statement``. Returns a report ``{"valid": bool, "total": int, "valid_count": int, "errors": [...]}``. Args: message_type: A supported ISO 20022 camt.05x message type. records: One or more flat reversing-entry records to validate.
  • validate_identifierValidate a single financial identifier (IBAN, BIC, or LEI). Use this for a one-off identifier check with a clear pass/fail. To validate identifiers embedded across a whole batch of records, prefer ``validate_records`` rather than calling this per field. Returns ``{"kind": str, "value": str, "valid": bool}``. Args: kind: One of ``"iban"``, ``"bic"``, or ``"lei"`` (case-insensitive). value: The identifier value to check.
  • parse_statementParse an incoming camt.05x statement XML string into structured data. Use this to turn a raw statement into a navigable dict (header, statements, accounts, balances, entries). To pull just the flat entry list use ``list_entries``; to only check the document is schema-valid use ``validate_statement``. Returns the parsed document as a JSON-serialisable dict (group header plus statements, each with its account, balances, and entries), or an ``{"error": ...}`` payload if the XML cannot be parsed. Args: xml: The raw statement XML as a string.
  • convert_mt940_to_camt053Convert a legacy SWIFT MT940 statement into a camt.053 structure. Use this as the Phase-1 migration wedge: SWIFT MT940 customer statements retire in **November 2028**, so this tool bridges the gap by turning raw MT940 text into the same JSON-serialisable camt.053 document shape that ``parse_statement`` returns (group header plus statements, each with its account, balances, and entries). Downstream tools (``list_entries``, ``filter_entries``, ``classify_entry``, ``export_journal``) then work on the result unchanged. Wraps the ``camt053-loader-mt940`` library's ``parse_mt940``; the MT parsing itself is delegated (no MT grammar is reimplemented here). The resulting ``ParsedDocument`` is serialised with the same ``to_dict()`` the server's other parse tools use, so agents get a consistent structure. Nothing is read from or written to disk. Returns the converted document as a JSON-serialisable dict, or an ``{"error": ...}`` payload if the MT940 text cannot be parsed (e.g. a missing ``:20:`` reference or a malformed balance / statement line). Args: mt940_text: The raw MT940 statement text as a string.
  • convert_mt942Convert a legacy SWIFT MT942 interim report into a camt.052 structure. Use this as the Phase-1 migration wedge for intraday reporting: SWIFT MT94x messages retire in **November 2028**, so this tool bridges the gap by turning raw MT942 *Interim Transaction Report* text into the same JSON-serialisable camt.052 (Bank-to-Customer Account **Report**) document shape the server's parse tools return (group header plus statements, each with its account, balances, and entries). MT942 is the intraday sibling of MT940: where MT940 maps to camt.053 (end-of-day statement), MT942 maps to camt.052, so the resulting ``message_type`` is ``camt.052.001.08``. Downstream tools (``list_entries``, ``filter_entries``, ``classify_entry``, ``export_journal``) then work on the result unchanged. Wraps the ``camt053-loader-mt942`` library's ``parse_mt942``; the MT parsing itself is delegated (no MT grammar is reimplemented here). The resulting ``ParsedDocument`` is serialised with the same ``to_dict()`` the server's other parse tools use, so agents get a consistent structure. Nothing is read from or written to disk. **Documented model limitation.** The ``camt053`` typed model is camt.053-statement-oriented: it has no dedicated field for camt.052's floor-limit (``<Lmt>``) or transaction-summary (``<TxsSummry>``) blocks. Rather than drop that data, the loader surfaces it on the balance list using clearly proprietary ``type_code`` values so consumers can recognise and filter them: ``:34F:`` floor limits become ``FLIMD`` / ``FLIMC`` balances, and ``:90D:`` / ``:90C:`` entry-count summaries become ``SUMD:<count>`` / ``SUMC:<count>`` balances (the ISO ``NbOfNtries`` count is encoded after the colon; the sum is the balance ``amount``). See the loader's README. Returns the converted document as a JSON-serialisable dict, or an ``{"error": ...}`` payload if the MT942 text cannot be parsed (e.g. a missing ``:20:`` reference or a malformed floor-limit / summary / statement line). Args: mt942_text: The raw MT942 interim transaction report text as a string.
  • validate_statementValidate an incoming camt.05x statement XML against its XSD schema. Use this to confirm a document is well-formed and schema-valid before processing it. This checks XSD conformance only; for the Nov 2026 CBPR+ business rules use ``check_cbpr_readiness``, and to extract the data use ``parse_statement``. Detects the document's message type, validates it against the matching ISO 20022 schema, and returns a report ``{"valid": bool, "message_type": str, "errors": [...]}``. A well-formed but schema-invalid document yields ``valid=False`` with a populated ``errors`` list (and the detected ``message_type``); a valid one yields ``valid=True`` with no errors. Returns an ``{"error": ...}`` payload instead if the XML cannot be parsed (e.g. it is malformed or is not a camt ``Document``). Args: xml: The raw statement XML as a string.
  • check_cbpr_readinessCheck a camt.053 statement against the CBPR+ Nov 2026 acceptance rules. Use this to audit a statement for the business-rule changes (schema version, structured postal addresses) enforced from the Nov 2026 cutover. For plain XSD schema validity use ``validate_statement`` instead; for just the cutover date use ``get_cbpr_cutover_date``. A coordinated CBPR+ / Fedwire / CHAPS / T2 cutover lands on **14-16 November 2026**: unstructured-only postal addresses get rejected, ``camt.110/111`` exceptions and investigations become mandatory, and T2S R2026.NOV upgrades camt.053 / 054 to schema revision MR2026. This tool walks the supplied payload and reports every issue that will fail the Nov 2026 acceptance rules: * **Schema version** vs the CBPR+ current set (``camt.053.001.08`` / ``camt.053.001.13``); ``.02``-``.07`` are flagged as deprecated warnings; unknown / non-camt.053 namespaces as errors. * **Postal addresses**: every ``<PstlAdr>`` is classified as fully structured, hybrid, or **unstructured-only** (``<AdrLine>`` without ``<TwnNm>`` + ``<Ctry>`` siblings, the Nov 2026 reject case). Returns a dictionary ``{"cbpr_ready": bool, "schema_version": str | None, "checked_at": ISO-8601 UTC, "cutover_date": "2026-11-16", "issues": [...], "summary": {...}}``. ``cbpr_ready`` is ``True`` iff no ``severity="error"`` issue was raised. An ``{"error": ...}`` envelope is returned instead if the XML is malformed or refused by the hardened pre-flight (DOCTYPE / ENTITY / oversized payload). Args: xml: The raw camt.05x statement XML as a string.
  • get_cbpr_cutover_dateReturn the official CBPR+ / Nov 2026 cutover date as ISO 8601. Use this to quote the enforcement date directly, without parsing a document. To actually audit a statement against the rules that take effect on that date, call ``check_cbpr_readiness`` instead. The cutover (``2026-11-16``) is the date after which the rules checked by ``check_cbpr_readiness`` are enforced by the major clearing systems; payments that fail will be rejected at receive-time. Surfaced as a discrete tool so agents can quote it directly without having to call a readiness check first.
  • +12 more on the listing page

Ready-to-paste client configs

Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.

FiatDock

mcpServers (Claude Desktop / Cursor)
{
  "mcpServers": {
    "fiatdock": {
      "command": "npx",
      "args": [
        "-y",
        "fiatdock-mcp"
      ],
      "env": {
        "AGENT_PRIVATE_KEY": "YOUR_AGENT_PRIVATE_KEY_HERE",
        "FIATDOCK_TOOLS": "YOUR_FIATDOCK_TOOLS_HERE"
      }
    }
  }
}

Camt053 MCP

mcpServers (Claude Desktop / Cursor)
{
  "mcpServers": {
    "sebastienrousseau-camt053-mcp": {
      "command": "uvx",
      "args": [
        "camt053-mcp"
      ]
    }
  }
}

Frequently asked questions

FiatDock is categorized under Finance & Fintech and uses a local stdio subprocess. Camt053 MCP belongs to Finance & Fintech and uses a local stdio subprocess. Pick FiatDock for finance & fintech work and Camt053 MCP for finance & fintech.

Copy the mcpServers block from the config section on this page into your client's config (for example claude_desktop_config.json or ~/.cursor/mcp.json), then fully restart the client.

FiatDock has no declared pricing — check the project's own site. Camt053 MCP is listed as free. Auth: no auth required. If a server needs environment variables such as API keys, define them under the env key in your client's MCP config.

Yes. MCP clients support multiple servers: add fiatdock and sebastienrousseau-camt053-mcp as separate keys in the same mcpServers object, and your assistant will call tools from either one.

On AllMCPs, FiatDock has a quality signal of 64/100 (Good) with 2 views, 0 installs and 1 GitHub stars. Camt053 MCP has 61/100 (Good) with 5 views, 0 installs and 2 GitHub stars.