Skip to content

Build stablecoin payins with AI agents: API, MCP server, Agent Skills, and CLI

Build stablecoin payins with AI coding agents using BlindPay's API, MCP server, Agent Skills, and CLI. Setup in 6 steps, a task map, and guardrails.

BlindPay offers a REST API with an OpenAPI spec, a hosted MCP server, Agent Skills, and a CLI. An AI coding agent can use them to create customers, wallets, payin quotes, payins, virtual accounts, and webhook endpoints, and to read back structured results. Start on a development instance, and keep a human in the loop for money movement.

This guide is about payins: fiat in, stablecoins out. For the manual version of the same flow, read the integration quickstart. For the payout and FX angle, see how AI agents get live FX quotes through MCP.

Key takeaways

  • BlindPay gives agents four surfaces: the REST API, the MCP server, Agent Skills, and the CLI. They sit on the same API.
  • The hosted MCP server uses sign-in and instance selection, so no API key goes into the client.
  • API keys have full access to an instance. For read-only access, use the read-only MCP URL.
  • Development instances run payins with test money. 66600 forces a failure and 77700 a refund, so an agent can practice the unhappy paths.
  • The server does not block a write call on its own. Put the confirmation step in your prompt or app.

Why do AI agents need structured payment APIs?

Agents work best when an API returns predictable fields and clear errors. A payin has exact rules: amounts are integers in minor units, a quote expires in 5 minutes, and a created payin cannot be canceled. An agent that guesses at those rules writes code that fails in production.

Structured surfaces remove the guessing. The MCP server hands the agent the call order, amount units, and the steps a person must do in the dashboard. Agent Skills teach rails and fees. The CLI returns JSON. Together they make generated payin code more likely to be correct on the first pass. Agents also need a way to see payments after the fact, which is why the same surfaces cover listing and retrieving payins.

What does each surface do?

The four surfaces cover different working styles. Pick by where the agent runs and what it needs to do.

SurfaceBest forExample payin taskGuardrail
REST API and OpenAPI 3.1 specCode the agent writes into your backend, app buildersGenerate a typed client from https://api.blindpay.com/doc and write the payin routeKey stays server side, never in client code
MCP serverAn agent that acts during a chat or coding sessionCall PostV1InstancesPayinQuotes, show fees, then PostV1InstancesPayinsEvm after you confirmSign in to a development instance; use /mcp/readonly to look only
Agent SkillsBetter generated code in Codex, Claude Code, CursorBuild a webhook handler that follows BlindPay's conventionsReview the generated diff
CLIShell sessions, scripts, CIblindpay payin_quotes create, then blindpay payins create --quote-id qu_...Development key stored as a CI secret

The MCP server's tools are generated from the public API, and each carries read-only or destructive annotations. The payin tools include PostV1InstancesPayinQuotes, PostV1InstancesPayinsEvm, GetV1InstancesPayins, and GetV1InstancesPayinsById. Related tools cover customers (PostV1InstancesCustomers), blockchain wallets (PostV1InstancesCustomersBlockchainWallets), virtual accounts (PostV1InstancesCustomersVirtualAccounts), and webhook endpoints (PostV1InstancesWebhookEndpoints). The full list is in the MCP tools reference.

The CLI installs with npm install -g @blindpay/cli and is configured with blindpay config set --api-key <your-api-key> --instance-id <your-instance-id>. Every command takes --json, blindpay schema returns the field definitions, and exit codes are 0, 1, and 2. See the CLI announcement for the command list.

What can an agent safely do?

An agent can safely do anything that reads or that happens on a development instance. It should not move production money without a person approving the exact amount and recipient.

TaskSafe by default?Why
Read payins, customers, wallets, webhook endpointsYesRead tools; also served at the read-only URL
Look up rails and required bank fieldsYesReference data tools
Write payin code, webhook handlers, and testsYes, with reviewOutput is code you read before it runs
Create customers, quotes, and payins on developmentYesUSDB test token, no real money
Create a virtual account on productionNeeds a personTriggers real compliance and bank review
Create a payin on productionNeeds a personConfirm the amount and the destination wallet first
Register a production webhook or change settingsNeeds a personAffects how real events reach your systems

Payins are the lower-risk direction, because the payer moves the fiat, but a wrong destination wallet still matters. BlindPay cannot recover stablecoins delivered to a wrong address. Treat the wallet address like a payment instruction and have a person confirm it.

How do I set it up?

Follow these six steps. They work in Claude Code, Codex, Cursor, VS Code, and other MCP clients.

  1. Create a development instance. Do this in the BlindPay dashboard. Customers are approved automatically and payins complete about 30 seconds after creation.
  2. Connect the MCP server. In Claude Code run claude mcp add --transport http blindpay https://mcp.blindpay.com/mcp. In Codex run codex mcp add blindpay --url https://mcp.blindpay.com/mcp. Sign in and pick the development instance. For hosts that run only local servers, or for CI, use npx -y @blindpay/mcp with BLINDPAY_API_KEY and BLINDPAY_INSTANCE_ID set.
  3. Add Agent Skills. Run npx skills add blindpaylabs/skills.
  4. Give the agent the payin prompt. The payins integration prompt encodes the gotchas, and the connect an AI agent prompt covers the MCP setup. A task prompt that works: "Using the BlindPay tools on my development instance, create a customer, register a testnet wallet, create a payin quote for 10000 with cover_fees true, create the payin, and write a webhook handler that verifies the Svix signature and deduplicates on svix-id."
  5. Have it test failures. Ask for a failed payin (request_amount 66600) and a refunded one (77700), and for tests proving the ledger is correct in both. The case list is in the payin sandbox testing checklist.
  6. Review before production. Read the diff, confirm signature verification and idempotency, and switch to production keys yourself.

The full per-platform table, including Lovable, v0, Bolt, and Replit, is in the Build with AI docs.

What guardrails should I add?

Add guardrails at four levels: keys, environment, approval, and review.

  • Scoped access, with what exists today. API keys carry full read and write access to one instance, and a read-only key type is not yet available. So give an agent a development key only, and use https://mcp.blindpay.com/mcp/readonly when it should just observe.
  • Sandbox first. Do all building on a development instance. Switching to production means a new instance, a new API key, and a new webhook endpoint.
  • Human approval for money movement. The MCP server does not block a call itself. Tools carry annotations, so clients that support them can ask before any non-read call, and the server tells the agent to confirm amounts and recipients on production. Keep a confirmation step in your own prompt as well.
  • Secrets hygiene. Keep keys in environment variables or secrets, never in prompts or client code. If a key leaks, delete it and create a new one, which revokes it immediately.
  • Idempotency. Have the agent send an Idempotency-Key on every create call, so a retried tool call cannot create two payins. The behavior is covered in idempotency keys in a stablecoin API.
  • Disconnect when done. You can disconnect an agent from Settings, then Connected apps, in the dashboard.

Respect the development rate limit too: 40 requests per minute per instance, which a looping agent can hit.

What should the agent build for webhooks?

Ask it for the same handler you would write by hand: verify the svix-id, svix-timestamp, and svix-signature headers on the raw body, deduplicate on svix-id, read status from the payload, and never move a terminal payin backwards. The design is in payin webhooks, idempotency, and reconciliation. The MCP server also exposes every webhook event and its payload schema as resources under blindpay://webhooks/events, so the agent can check payload shapes without guessing.

Where does BlindPay fit?

BlindPay offers the REST API with an OpenAPI 3.1 spec, official SDKs for Node.js, Python, Go, PHP, and Swift, a hosted MCP server with a read-only endpoint, a local @blindpay/mcp package, Agent Skills, the CLI, and prebuilt quickstart prompts. BlindPay describes itself as AI-native stablecoin infrastructure, and these are the documented surfaces behind that description. Details are on the MCP page.

For where agent payment protocols fit, see AP2, ACP, and x402 compared. If you are new to the payin model, begin with what a stablecoin payin API is. BlindPay's fees are shown in the quote before you create a payin. See /pricing.

Sources

This article is for general information only and is not legal, tax, or financial advice.

FAQ

One API.
Multiple payment rails.

Blind Pay, Inc. (“BlindPay”) is a United States-based financial technology and payments infrastructure company, incorporated in the State of Delaware on May 2, 2024. BlindPay is duly registered as a Money Services Business (“MSB”) with the Financial Crimes Enforcement Network (“FinCEN”) under registration number 31000277566153. BlindPay is not a state-licensed money transmitter and does not, in its own capacity, engage in regulated money transmission services. All such regulated activities are conducted exclusively through, and under the licenses of, duly authorized financial institution partners. BlindPay's role is limited to providing financial technology, virtual account management, payment processing, and related payments infrastructure services that facilitate payment flows and account functionalities. These services are provided in coordination with its licensed partners and in compliance with applicable federal MSB requirements and relevant state regulatory frameworks.

Blind Pay, LLC (“BlindPay”) is a Delaware limited liability company formed on June 24, 2025. BlindPay is duly registered as a Money Services Business (“MSB”) with the Financial Crimes Enforcement Network (“FinCEN”) under registration number 31000318334247 and is listed in the Nationwide Multistate Licensing System (“NMLS”) under NMLS ID #2745309.

BLIND PAY SOCIEDADE PRESTADORA DE SERVIÇOS DE ATIVOS VIRTUAIS LTDA. (“BlindPay”) is a Virtual Asset Service Provider (“VASP”) operating in Brazil. The company is presently completing the regulatory adaptation process required of Virtual Asset Service Provider Companies (SPSAV) under Central Bank of Brazil Resolution No. 520/2025, and remains subject to the transitional regime set forth in Article 88 of that Resolution. Registered address: Avenida Princesa Isabel, nº 15, Sala 1405, Edifício Martinho de Freitas, Centro, Vitória/ES, 29010-361.

BlindPay is a stablecoin API that enables individuals and businesses to move money worldwide.