Skip to main content
The Veil MCP server connects to Claude Desktop and Cursor through the Model Context Protocol. Once connected, you can log in, complete onboarding, run offramps, and check transaction status — all from inside a conversation. The same Veil account, KYC approval, and bank accounts you set up in the dashboard work here.

Who this is for

Anyone who has a Veil account and wants to trigger crypto-to-fiat conversions from inside an AI assistant. Developers and individuals both work; the onboarding steps are the same either way.

The five-step flow at a glance

Every offramp via MCP follows this sequence:
  1. Check sessionveil_get_session_status tells the assistant whether you are already logged in.
  2. Log inveil_request_otp + veil_verify_otp authenticate you with an email code.
  3. Check onboardingveil_get_account_status shows whether KYC and a bank account are in place.
  4. Get a quoteveil_offramp_quote returns the exchange rate and estimated fiat amount.
  5. Execute (and confirm if needed)veil_offramp_execute creates the transaction; when a code is required it’s emailed and veil_offramp_confirm releases the funds, otherwise the offramp settles immediately.
For the full conversation walkthrough, see In-chat flow.

Sandbox vs. production

The MCP server supports both sandbox (test) and live (real money) modes. Sandbox offramps run against a test environment — no real funds move and settlement is instant. See Environments for how to switch modes in chat, or Sandbox vs. production for the full two-environment model.
The server is currently reachable at the staging URL https://veil-mcp-staging-193185291080.us-east4.run.app/mcp. A permanent custom domain is coming in a later phase.

Get started

Connect

Add the Veil MCP server to Claude Desktop or Cursor and complete the OAuth handshake.

In-chat flow

Walk through a complete offramp conversation step by step.

Tool reference

All 31 tools grouped by category with inputs, outputs, and examples.

Offramp lifecycle

How the quote → execute → confirm → settle sequence works across all surfaces.

See also

  • Usernames — handle-routed offramps via @handle