Call a marketplace service
call_serviceInvoke 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. TO BUY: call once WITHOUT payment to get the 402 challenge and step-by-step instructions, sign it with your own wallet, then call again with the same id/args plus payment set to the base64 x402 payload — the gateway settles on-chain directly to the seller and returns their response. No wallet? npx fiatdock-mcp with AGENT_PRIVATE_KEY signs 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 Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Listing id (svc_…) to invoke, from search_services | |
| args | No | JSON payload to send to the service (e.g. an MCP JSON-RPC request body) — shape is defined by that service | |
| payment | No | Base64 x402 v2 PaymentPayload signed by YOUR wallet, satisfying every entry in the 402's `accepts`. Omit on the first call to receive the challenge; send it on the second call to complete the purchase. Sent to the gateway as the X-PAYMENT header — FiatDock never holds the funds. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| ok | Yes | true when the underlying service returned a 2xx | |
| result | No | The service's response body — parsed JSON when it returned JSON, otherwise the raw text | |
| status | Yes | HTTP status returned by the service (or the gateway) | |
| service | Yes | Listing id that was invoked | |
| routedThroughGateway | Yes | true if PAID (settled 99% seller / 1% FiatDock via /s/:id); false if FREE/first-party direct |