IN_REVIEW until Infinite approves), and — connected with an agent key — pay within that agent’s limits without per-payment ops review.
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 a platform Connect organization key or Auth Kit sign-in,
create_transferfor a bound customer (forcedIN_REVIEWuntil Infinite ops release). With an agent key, draft and submit payments within the agent’s limits
Getting Started
Endpoint
Sign-in clients use Streamable HTTP: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. If you already belong to an Infinite organization, the session uses that org. If you are net-new (no org yet), Infinite routes you through Infinite Connect (org_connect) in platform mode: create your business customer, then bind_session_customer so you only see that customer. It uses the production environment. Sandbox access stays on an API key. Agent payment tools stay on an agent key. Self-created organizations awaiting Infinite approval cannot use MCP until approved (organization_pending_approval).
API key. Include it as a Bearer token:
sk_live_*→ Production environmentsk_sandbox_*→ Sandbox environment
- OAuth/Auth Kit sign-in: header is forbidden. Bind with
bind_session_customer(use thecontinuationTokenreturned bycreate_business_customerto resume after reconnect). - Delegation (in‑app assistant) sessions: header is allowed only when it matches the pinned customer in the delegation token; without a pinned claim it is allowed only for customers owned by the organization.
- API keys: header is allowed only for customers owned by the organization.
org_connect (slug=connect). OAuth sign-in without an existing org provisions Connect automatically; get_agent_session reports platform mode and connectNetNewAuth: true. Do not paste the shared Connect platform org API key into personal MCP clients. MCP bind_session_customer (and continuationToken after create) scopes bot tools to one customer. Integrators with an existing org: use your BYO org API key or sign in as a member of that org. 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 athttps://mcp.infinite.dev/mcp and omit the key. The assistant opens Auth Kit sign-in for your organization, or Infinite Connect for net-new users.
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:/mcp to confirm infinite is connected.
Cursor
Sign in (no API key) in~/.cursor/mcp.json (or .cursor/mcp.json in a project):
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 athttps://mcp.infinite.dev/mcp and sign in, or configure an SSE transport to https://mcp.infinite.dev/mcp/sse with Authorization: Bearer <key>.
Verify the connection
Ask the assistant: “What organization am I connected to?” It should callget_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, connecthttps://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. Agent-key payments run on MCP (see Paying with an agent key). Platform Connect organization-key or Auth Kit sessions can call create_transfer for a bound customer (see Platform Connect transfers). BYO organization keys cannot create transfers on MCP — use an agent key or REST. Other BYO payment writes use the CLI/REST tabs.
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 patternlimit(optional): Max results (default: 20, max: 50)
“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 patternmethod(optional): Filter by HTTP method (GET, POST, etc.)status_code(optional): Filter by status codelimit(optional): Max results (default: 20, max: 100)
“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
“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?”)
“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 bysearch_docs(e.g.,guides/webhooks)
“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”)
“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
“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.
Platform Connect transfers (organization key)
On Infinite Connect (org_connect), a platform MCP session — organization API key (sk_*) or Auth Kit sign-in on a trusted operator host — can call create_transfer for the bound business customer (bind_session_customer or X-Infinite-On-Behalf-Of). The tool creates a real transfer via POST /v1/transfers on the public API. Every such transfer is created in IN_REVIEW and stays there until Infinite operations approve it in the review UI. Customers cannot skip that review; funds do not move on deposit-funded corridors until ops release the transfer (the response may include fundingDirections — do not tell the end user to send deposit funds while status is still IN_REVIEW).
Confirm amount, payee, and rail with the user, pass a UUID v4
operationId (reuse only when retrying the same payment), optionally clientReferenceId (your invoice or order reference) and documentIds (doc_… from upload_document), then call create_transfer. Track status with get_transfer / list_transfers.
Example prompt:
“Create an ACH payout of $250 to the screened payee eba_… for invoice 1042 for the bound customer.”The assistant calls
create_transfer, returns transferId and IN_REVIEW, and explains that Infinite must approve before the payment proceeds.
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. On platform Connect, organization-key or Auth Kit sessions can also call
create_transfer for a bound customer (Platform Connect transfers). Those sessions can discover quotes, create payee/transfer drafts, and read transfer status. BYO organization keys cannot create_transfer on MCP.
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_requestis 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 pin tools to one
cus_. Bind withbind_session_customerand thecontinuationTokenfromcreate_business_customer. Header rules:- OAuth/Auth Kit sign‑in: header is forbidden. Bind with
bind_session_customer(use thecontinuationTokenreturned bycreate_business_customerto resume after reconnect). - Delegation (in‑app assistant): header is allowed only when it matches the pinned customer in the delegation token; without a pinned claim it is allowed only for customers owned by the organization.
- API keys (BYO org): header is allowed only for customers owned by your organization.
- API keys on a platform Connect org (
MCP_PLATFORM_ORG_IDS): the platform org owns every Connect customer it operates, so a validcus_…id alone is sufficient to bind any Connect customer by header. Use on trusted operator hosts only.
- OAuth/Auth Kit sign‑in: header is forbidden. Bind with
create_business_customer: pass a secret UUIDoperationId(crypto.randomUUID()); reuse after reconnect to recover the same customer +continuationToken- Sandbox tools are sandbox-only:
sandbox_*tools are registered only forsk_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_documentare allowed when the host supplies files for RFI fulfillment or API KYB substitute (10MB decoded cap). - Payments: BYO organization keys cannot create transfers on MCP (use an agent key or REST). Platform Connect organization-key or Auth Kit sessions can
create_transferfor a bound customer — each transfer is forcedIN_REVIEWuntil Infinite ops approve. Agent-key sessions draft andsubmit_transferwithin the agent’s customer, funding account, payee allowlist, and spend limits, all enforced by the API without per-payment Infinite approval
Troubleshooting
”Invalid API key” error
Ensure your API key:- Starts with
sk_sandbox_orsk_live_(agent keys:sk_sandbox_agent_/sk_live_agent_) - Is sent in the
Authorizationheader asBearer <key>— withmcp-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://mcp.infinite.dev/mcp/sse - Your MCP client is correctly configured
- The Authorization header is being sent
Need Help?
- Check the API Reference for endpoint details
- Contact support@infinite.dev for assistance