BlindPay

Official BlindPay MCP server: stablecoin payouts, payins, quotes and customers for global payments.

Hosted MCP Server

npx add-mcp 'https://mcp.blindpay.com/mcp'

Installs into Claude Code, Codex, Cursor and more

Documentation

BlindPay MCP Server

chat on Discord twitter npm version Install in VS Code

The official Model Context Protocol server for BlindPay - Stablecoin API for global payments.

What This MCP Server Does

This MCP server provides AI assistants (Cursor, Claude Code, Codex, etc.) with access to BlindPay's stablecoin payment infrastructure. It exposes tools that allow AI assistants to:

  • Create and manage customers (individuals/businesses)
  • Process payouts and payins on multiple blockchains
  • Create quotes and get FX rates
  • Manage virtual accounts and blockchain wallets
  • Configure webhooks and API keys
  • And more...

Two ways to connect

Remote server (recommended)Local npx server
URL / commandhttps://mcp.blindpay.com/mcpnpx -y @blindpay/mcp
AuthOAuth 2.1 sign-in with your BlindPay account (PKCE)BLINDPAY_API_KEY env var
TransportStreamable HTTPstdio
Works inClaude, ChatGPT, Cursor, VS Code, Grok, any remote-capable clientAny stdio MCP client

Both expose the same tools, the same server instructions (call order, units, test amounts) and the same webhook event resources at blindpay://webhooks/events. The remote server needs no API key: the client opens a browser, you sign in and pick an instance, and the token is scoped to your role on it.

Tool profiles

Set BLINDPAY_MCP_PROFILE on the local server to choose which tools are exposed:

ProfileToolsUse when
full (default)Every public API operation, including payouts and transfersBuilding or operating with an AI coding assistant
readonlyGET operations only: status, balances, history. Leaves out the wallet sign-message, webhook secret and webhook portal-access tools, and drops trace_id from JSON responses, like /mcp/readonlyConsumer assistants, or any place a tool that moves money is unwanted

Every tool carries MCP annotations (readOnlyHint, destructiveHint, idempotentHint) derived from its HTTP verb, so clients can gate confirmations themselves.

Prerequisites (local server only)

Get your API key and Instance ID:

  1. Create an account on BlindPay
  2. Create a development instance
  3. Go to the BlindPay Dashboard
  4. Select your instance and click on the API Keys tab
  5. Create a new API key
  6. Copy your instance ID (format: in_xxxxxxxxxxxx) from the dashboard url

Dependencies you need to have installed:

You can check if you have Node.js installed by running node -v. Same for Npm, you can check by running npm -v.

Installation

Cursor

One-click install (remote server, OAuth, no API key):

Add to Cursor

Or add it to ~/.cursor/mcp.json yourself, then select Needs login in Cursor's MCP settings and sign in with your BlindPay account:

{
  "mcpServers": {
    "blindpay": {
      "url": "https://mcp.blindpay.com/mcp",
      "auth": {
        "CLIENT_ID": "4c2rAa08DqbVvnon",
        "scopes": ["profile", "email", "offline_access"]
      }
    }
  }
}

Cursor only signs in through dynamic client registration or a fixed client ID, and BlindPay's sign-in has no registration endpoint, so 4c2rAa08DqbVvnon is BlindPay's public OAuth client ID for Cursor. Keep scopes as shown: without it Cursor asks for every scope the sign-in server advertises, and any scope outside these three fails with invalid_scope. An Authorization: Bearer header doesn't work here: Cursor ignores configured headers when the server publishes OAuth discovery. The Cursor plugin in plugins/cursor sets this up with both endpoints.

One-click install (local server with API key):

Add MCP to Cursor

After installation, add your API key and instance ID to ~/.cursor/mcp.json:

{
  "mcpServers": {
    "blindpay": {
      "command": "npx",
      "args": ["-y", "@blindpay/mcp"],
      "env": {
        "BLINDPAY_API_KEY": "your-api-key-here",
        "BLINDPAY_INSTANCE_ID": "your-instance-id-here"
      }
    }
  }
}

Claude Code

As a plugin (remote server, OAuth, no API key):

claude plugin marketplace add blindpaylabs/blindpay-mcp
claude plugin install blindpay@blindpay

Or as a plain MCP server:

claude mcp add --transport http blindpay https://mcp.blindpay.com/mcp

Local server with an API key:

claude mcp add --transport stdio blindpay --env BLINDPAY_API_KEY=your-api-key-here --env BLINDPAY_INSTANCE_ID=your-instance-id-here -- npx -y @blindpay/mcp

Claude Desktop

Add to your Claude Desktop configuration file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "blindpay": {
      "command": "npx",
      "args": ["-y", "@blindpay/mcp"],
      "env": {
        "BLINDPAY_API_KEY": "your-api-key-here",
        "BLINDPAY_INSTANCE_ID": "your-instance-id-here"
      }
    }
  }
}

Codex

Remote server (OAuth, no API key):

codex mcp add blindpay --url https://mcp.blindpay.com/mcp

Local server with an API key:

codex mcp add blindpay --env BLINDPAY_API_KEY=your-api-key-here --env BLINDPAY_INSTANCE_ID=your-instance-id-here -- npx -y @blindpay/mcp

Or add to your ~/.codex/config.toml (or project-scoped .codex/config.toml):

[mcp_servers.blindpay]
command = "npx"
args = ["-y", "@blindpay/mcp"]

[mcp_servers.blindpay.env]
BLINDPAY_API_KEY = "your-api-key-here"
BLINDPAY_INSTANCE_ID = "your-instance-id-here"

VS Code

Click the Install in VS Code badge at the top, or add to .vscode/mcp.json:

{
  "servers": {
    "blindpay": {
      "type": "http",
      "url": "https://mcp.blindpay.com/mcp"
    }
  }
}

You can also search @mcp blindpay in the Extensions view once the gallery entry is live.

Windsurf

Add to ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "blindpay": {
      "serverUrl": "https://mcp.blindpay.com/mcp"
    }
  }
}

Raycast

Open the Model Context Protocol Registry extension in Raycast, search for BlindPay and click Install Server. Or install manually with Manage Servers → Add Server using the local config from the Cursor section.

Claude (claude.ai / Claude Desktop, remote)

In Settings → Connectors → Add custom connector, paste https://mcp.blindpay.com/mcp and complete the sign-in. Only read-only tools are exposed to consumer directories.

ChatGPT

Enable Developer Mode in Settings → Connectors → Advanced, then Create a connector with https://mcp.blindpay.com/mcp and OAuth authentication.

Grok

Grok Build plugin (recommended): install blindpay from the xAI plugin marketplace. The plugin ships both remote HTTP MCP endpoints:

ServerURLScope
blindpayhttps://mcp.blindpay.com/mcpFull (read + write)
blindpay-readonlyhttps://mcp.blindpay.com/mcp/readonlyRead-only

Both use OAuth 2.1 (PKCE) with your BlindPay account — no API key to paste.

Custom connector (paid Grok tier): go to https://grok.com/connectors → New Connector → Custom, enter https://mcp.blindpay.com/mcp (or the readonly URL), leave client credentials empty, and complete the BlindPay sign-in when prompted.

Cline

Ask Cline to install the BlindPay MCP server from https://github.com/blindpaylabs/blindpay-mcp. It follows llms-install.md.

Gemini CLI

gemini extensions install https://github.com/blindpaylabs/blindpay-mcp

Docker

Local stdio server in a container, built from this repo:

docker build -t blindpay-mcp .
docker run -i --rm -e BLINDPAY_API_KEY=your-api-key-here -e BLINDPAY_INSTANCE_ID=your-instance-id-here blindpay-mcp

Any other MCP client

Remote: point the client at https://mcp.blindpay.com/mcp (Streamable HTTP, OAuth 2.1 discovery via /.well-known/oauth-protected-resource). Local: run npx -y @blindpay/mcp over stdio with BLINDPAY_API_KEY set.

Example Prompts

Once configured, you can ask your AI assistant to interact with BlindPay:

"Get me a quote for sending 1000 USDC to a bank account in Brazil"

"List all my recent payouts from the last 7 days"

"Create a virtual account for the customer with ID re_xxxxxxxxxxxx"

"Show me the available payment rails"

"Get all customers for instance in_xxxxxxxxxxxx"

[!TIP] Set BLINDPAY_INSTANCE_ID and every instance-scoped tool fills in the instance id for you, the way the remote server does; a value the model sends is ignored. Without it, give the instance id in your prompt.

Documentation

Support

License

This project is licensed under the MIT License - see the LICENSE file for details.

Made with ❤️ by the BlindPay team