Skip to main content
The Model Context Protocol lets an AI agent call external tools. IOTools.cloud makes all 900+ API-enabled tools reachable over MCP, so an agent can format JSON, convert a file or generate a QR code without a per-tool integration.
The MCP server is in Beta, same as the REST API — see API overview.
Streamable HTTP transport, OAuth or a Bearer API key, same credits and same tools as the REST API.

What an agent sees

5 tools, not all. The catalog is reached through them: Listing all supported tools with their schemas is a ~844 KB, ~215k-token tools/list — and most clients inject that on connect whether a tool gets used or not. The gateway is ~5.2 KB.
Listing is not permission: tools/call still resolves any tool by its own name. run_tool makes names discoverable, it doesn’t gate them.

The full listing

If your client loads tools lazily (Claude Code, the Claude API’s tool-search), it pays no context for tools it doesn’t touch and typed schemas beat a generic run_tool. Ask for the catalog on the connect URL:
Every tool then appears by name with its own inputSchema and outputSchema — the same ones describe_tool and the OpenAPI document give. Names are the slug, / replaced by __ (MCP names can’t contain slashes): case-converter, html-generator__button. The 5 tools above are still there. Don’t use it on a client that loads eagerly — that’s the 215k-token bill, mostly wasted.

Cost

Same meter as REST: every tools/call on a real tool costs credits, refunded if the call fails. run_tool costs exactly what the inner tool costs. See Credits.
One user request often becomes 15–25 tool calls, so an agent burns credits faster than hand-written code. Watch your account for the first few sessions.

Your agent can’t spend credits without asking

Nothing about a tool-calling loop naturally stops at your allowance — so every paid call is put up for approval before anything is charged. Every one, not just the first: there is no “remember this” and no per-session allowance. Clients that implement MCP elicitation surface that as a prompt, quoting the price:
String Case Converter costs 3 credits. Run it?
The server always asks; how your client presents the question is the client’s choice. One that auto-approves without showing you anything is still behaving within the protocol. If it matters to you, check how yours handles elicitation — we can guarantee the ask, not that a human sees it.
The prompt lands after your inputs are validated and before any credit moves — the only window where “no” is free. Through run_tool it quotes the inner tool’s price, so the gateway is no way around it. The quoted number is what gets charged; it can only end up lower, never higher. Failed runs are refunded in full, and per-unit tools that under-deliver refund the shortfall. Free tools never interrupt you, so an agent can search, read a schema and check your balance without asking — then ask once, for the call that spends something.

If your client can’t show a prompt

Those clients keep working — each tool’s price is in its description anyway.
One exception: without a prompt, a single call over 50 credits is refused rather than spent silently. Today that’s only ai-image-generator at 640 credits, most of a free month’s allowance in one call.
To run a blocked tool, call REST directly with the same key — you’re the one pressing enter:

Authentication

Two ways in, and both meter identically — same credits, same tier, same rate limit:
  • OAuth — for clients that support it (Claude.ai, Claude Desktop’s Connectors settings). The connector signs in and authorizes itself; there’s no key to copy or paste. Consent shows the requesting app’s name and is asked every time a grant is issued, not skipped after the first.
  • API key — pass it as a Bearer token in the client config, for clients that only take a static config file (Cursor, Windsurf, most others).
See Install for both, step by step.
Authorized an app with OAuth? Account → Connected apps lists every live grant and revokes one immediately — no waiting on a token to expire.