Skip to main content
The Infinite MCP Server allows AI assistants like Claude, Cursor, Codex, and other MCP-compatible tools to interact with your Infinite account. Query API logs, debug errors, explore the API, onboard a business (hosted KYB or capability-driven document upload), and — connected with an agent key — pay within that agent’s limits.

Overview

The Model Context Protocol (MCP) is an open standard that enables AI assistants to securely access external tools and data sources. The Infinite MCP Server provides:
  • API Log Access: Query your recent API requests and errors
  • Request Debugging: Look up specific requests by ID
  • API Exploration: Make read-only API calls to explore your data
  • Documentation Search: Natural-language search over these docs and the API reference (with snippets), plus full page reads and endpoint schemas
  • Agent onboarding: Create a business customer, start hosted verification, poll status, and ensure a balance account
  • Payments: With an agent key, draft and submit payments within the agent’s limits
Assistants should read the Infinite skill first — it’s the full playbook: setup per host, tool reference, rules for moving money, and step-by-step journeys. It’s also served as raw markdown at https://docs.infinite.dev/agent-skill.md.

Getting Started

Endpoint

Sign-in clients use Streamable HTTP:
API-key clients can use that same URL, or the legacy Server-Sent Events transport:

Authentication

Sign in with your Infinite account, or send an API key. Sign in. Add the server URL with no API key. Your assistant opens Auth Kit sign-in for the organization tied to your login. That session acts as you for that organization. It uses the production environment. Sandbox access stays on an API key. Agent payment tools stay on an agent key. Do not sign in as a member of the shared Infinite Connect platform org (org_connect) in a personal client — that membership is org-wide on the API, not customer-scoped. API key. Include it as a Bearer token:
The server detects the environment from the key prefix:
  • sk_live_* → Production environment
  • sk_sandbox_* → Sandbox environment
Optional binding header (recommended for agent onboarding flows):
BYO org: use your organization API key to onboard customers under your org. Platform / net-new (Infinite Connect): Net-new businesses onboard under organization id org_connect (slug=connect). In a correctly scoped operator session, get_organization_info reports org_connect. End users: net-new Connect is operator-assisted today — do not join the shared org_connect org in Auth Kit, do not paste the shared Connect platform org API key into personal MCP clients, and do not use MCP sign-in while a member of org_connect. Auth Kit tokens for that org are accepted on public /v1 routes with org-wide permissions; MCP bind_session_customer only scopes bot tools, not direct REST. Integrators with an existing org: use your BYO org API key. Trusted Infinite-operated hosts only: platform org API key or operator-run MCP for net-new Connect (demos and hosted integrations). Platform MCP sessions still require binding a customer before customer-scoped tools. Do not use org_infinite for new Connect onboarding. Customers already on org_infinite remain on that org unchanged. Never paste an unconstrained live organization key into a shared chat. Prefer sandbox keys for demos.

Configuring Your AI Assistant

Sign in. Point the client at https://bot.api.infinite.dev/mcp and omit the key. The assistant opens Auth Kit sign-in for your organization (not the shared org_connect platform org unless you are an Infinite operator on a trusted host). API key. Put the key in the Authorization header. Use the host’s native header support where it exists; otherwise bridge with mcp-remote and pass the key with --header. Setting only an environment variable does not send the key. The API-key commands below read the key from INFINITE_API_KEY so it doesn’t end up in your shell history. Export it first (export INFINITE_API_KEY=sk_sandbox_…).

Claude Code

Sign in:
Or send an API key:
Start a new session and run /mcp to confirm infinite is connected.

Cursor

Sign in (no API key) in ~/.cursor/mcp.json (or .cursor/mcp.json in a project):
Or send an API key:

Codex

${AUTH} is single-quoted on purpose: your shell leaves it alone, and mcp-remote substitutes it from the AUTH variable Codex passes to the bridge.

Claude Desktop

Add the following to your Claude Desktop configuration file: macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

Other MCP Clients

Point a Streamable HTTP client at https://bot.api.infinite.dev/mcp and sign in, or configure an SSE transport to https://bot.api.infinite.dev/mcp/sse with Authorization: Bearer <key>.

Verify the connection

Ask the assistant: “What organization am I connected to?” It should call get_organization_info. Only a successful call proves the tools are usable — if they don’t appear, reload the host’s MCP tools or restart it, then try again. To operate as an agent alongside your organization, add a second server (for example infinite-agent) with the agent key.

Docs-only MCP

To search these docs without an Infinite key, connect https://docs.infinite.dev/mcp. It’s read-only and moves no money.

Available Tools

Every code example in these docs has an MCP tab: the prompt to give an assistant connected to this server. Read prompts and dedicated onboarding tools (create_business_customer, start_verification, …) run on MCP. Generic api_request remains GET-only. Payments run on MCP when the session uses an agent key (see Paying with an agent key); with an organization key use the CLI/REST tabs to pay.

get_my_api_errors

Get recent API errors for your organization. Parameters:
  • hours (optional): Hours to look back (default: 24, max: 72)
  • path_pattern (optional): Filter by path pattern
  • limit (optional): Max results (default: 20, max: 50)
Example prompt:
“Show me API errors from the last 6 hours”

get_my_api_logs

Get recent API request logs for debugging. Parameters:
  • hours (optional): Hours to look back (default: 24, max: 72)
  • path_pattern (optional): Filter by path pattern
  • method (optional): Filter by HTTP method (GET, POST, etc.)
  • status_code (optional): Filter by status code
  • limit (optional): Max results (default: 20, max: 100)
Example prompt:
“Show me all POST requests to /v1/customers/individuals in the last hour”

get_request_by_id

Look up a specific API request by request ID. Parameters:
  • request_id (required): The request ID to look up
Example prompt:
“Look up request req_abc123xyz”

search_docs

Search this documentation site and the API reference. Pass the question in natural language — not just keywords. Results include a short snippet so the assistant can answer before opening the full page. Parameters:
  • query (required): The user question or topic (e.g. “How do I fund an Infinite wallet in sandbox?”)
Example prompt:
“Deposit instructions are the same for every onramp and there is no memo — how do I tell deposits apart?“

read_doc

Read a documentation page in full. Parameters:
  • page (required): Page slug, as returned by search_docs (e.g., guides/webhooks)
Example prompt:
“Read the idempotency guide”

get_endpoint_schema

Get the request and response schema for an API endpoint, including required fields. Parameters:
  • method (required): HTTP method (e.g., “POST”)
  • path (required): API path (e.g., “/v1/customers”)
Example prompt:
“What fields are required to create a business customer?“

api_request

Make a read-only GET request to the Infinite API. Parameters:
  • path (required): API path (e.g., “/v1/customers”)
  • query_params (optional): Query parameters as key-value pairs
Example prompt:
“List all my customers with status ACTIVE”

Paying with an agent key

Connect with an agent key (sk_live_agent_… / sk_sandbox_agent_…, issued from Agents) instead of an organization key. The session is pinned to the agent’s customer and funding account, and these tools replace the onboarding tools: Amounts are decimal strings in the agent’s limit currency ("40.00"); the server converts to minor units. Every guardrail — customer, funding account, payee allowlist, per-transfer / daily / monthly caps — is enforced by the API, not by the assistant. Example prompt:
“Pay $40 to Acme Supplies for the June invoice.”
The assistant calls list_payees, then create_transfer (draft), shows you “Send $40.00 from vba_… to Acme Supplies via ACH”, and on your yes calls submit_transfer. If the daily cap is hit it reports the denial and the remaining headroom instead of retrying blindly.

get_organization_info

Get information about your authenticated organization. Example prompt:
“What organization am I connected to?”

Agent onboarding tools

Dedicated tools (session API key, not open POST): Draft and submit payments on MCP with an agent key. Organization-key sessions can discover quotes, create payee/transfer drafts (no settle), and read transfer status after the customer is bound. Example prompt:
“Onboard Acme Corp (acme@example.com, US), request USD_BALANCE, upload the formation docs I have, and tell me when we’re ACTIVE with a balance account.”

Example Conversations

Debugging API Errors

You: “I’m getting 400 errors when creating customers. Can you help me debug?” AI: Uses get_my_api_errors to find recent 400 errors, then uses get_endpoint_schema for POST /v1/customers/individuals and explains which required fields are missing.

Exploring Your Data

You: “Show me my recent transfers and their statuses” AI: Uses api_request to call GET /v1/transfers and summarizes the results.

Understanding the API

You: “How do I verify that a webhook actually came from you?” AI: Uses search_docs to find the webhooks guide, reads it with read_doc, and walks through signature verification.

Rate Limits

The MCP server enforces rate limits per organization:
  • 60 requests per minute per organization
  • Rate limit headers are included in responses

Security

  • Scoped to your organization: You can only access data belonging to your organization
  • API key validation: Keys are validated on every request
  • No sensitive data exposure: API keys and secrets are never returned in responses
  • api_request is GET-only: omitted entirely for platform Connect orgs (along with org-wide log tools); onboarding writes go through dedicated agent tools
  • Customer bind: platform sessions and immutable X-Infinite-On-Behalf-Of (trusted host only) pin tools to one cus_; platform bind allows header pin, customers created in that MCP session, or a signed continuationToken from create_business_customer — knowing a cus_ id is not enough on a shared platform key
  • create_business_customer: pass a secret UUID operationId (crypto.randomUUID()); reuse after reconnect to recover the same customer + continuationToken
  • Sandbox tools are sandbox-only: sandbox_* tools are registered only for sk_sandbox_ sessions and act only on the bound customer’s accounts and transfers
  • Rate limits: platform traffic is limited per SSE session (60/min) with a larger org ceiling (300/min)
  • Hosted KYB: prefer for humans — do not collect identity documents in chat when a verification URL is available; verification status tools return projected progress, not full form schemas. MCP upload_document / upload_rfi_document are allowed when the host supplies files for RFI fulfillment or API KYB substitute (10MB decoded cap).
  • Payments need an agent key: organization-key sessions can’t move money; agent-key sessions are limited by the agent’s customer, funding account, payee allowlist, and spend limits, all enforced by the API

Troubleshooting

”Invalid API key” error

Ensure your API key:
  • Starts with sk_sandbox_ or sk_live_ (agent keys: sk_sandbox_agent_ / sk_live_agent_)
  • Is sent in the Authorization header as Bearer <key> — with mcp-remote, pass it via --header, not only an environment variable
  • Has not been revoked (a revoked agent’s key stops working immediately)

“Rate limit exceeded” error

Wait a minute before making more requests. Consider batching your queries.

Connection issues

Verify:
  • Your network can reach https://bot.api.infinite.dev/mcp/sse
  • Your MCP client is correctly configured
  • The Authorization header is being sent

Need Help?