Developer docs

Connect EmblemAI over hosted MCP.

Use the hosted MCP endpoint when you want Claude Code, GitHub Copilot CLI, or another MCP client to call EmblemAI tools without building a wrapper around the app.

Quickstart

The shortest path is simple: copy a vault API key from the app, point your client at POST /api/mcp, and send that header from the first request.

  1. Log in to EmblemAI.
  2. Open Settings -> Vault Access Key and copy your key.
  3. Configure your client to call https://emblemvault.ai/api/mcp.
  4. Send either x-api-key or Authorization: Bearer <JWT>.

Hosted MCP is auth-first. Your client needs headers on initialize, tools/list, and tools/call.

Public endpoint

Base URL: https://emblemvault.ai/api/mcp

  • Transport: hosted HTTP MCP
  • Protocol version: 2025-06-18
  • Methods: initialize, ping, tools/list, tools/call
  • CORS preflight is enabled for hosted client integrations.

Authentication

Send exactly one of these auth surfaces on every MCP request:

  • x-api-key: <apiKey>
  • Authorization: Bearer <JWT> — either a user-issued Emblem token or one obtained via the hosted OAuth 2.0 flow at api.emblemvault.ai/.well-known/oauth-authorization-server

API key is the easiest path for scripts and server-to-server calls. OAuth is the right choice for interactive clients like Claude Code — it handles install, consent, and token refresh without any secret to paste.

What the hosted MCP exposes

Read-only tools ship by default. State-changing (transaction) tools are opt-in via a single request header — once enabled they surface with a -transaction suffix so clients can filter them with a *-transaction wildcard.

Read-only by default
  • Coinglass market data
  • advanced search and research tools
  • Nansen analytics
  • wallet and balance reads across major chains
  • Bitcoin, ordinals, runes, and stamp research
  • OpenSea and Emblem read-safe NFT surfaces
Transactions (opt-in)
  • transfers and sends across EVM, Solana, Bitcoin, Hedera
  • swaps and buys (including ChangeNow cross-chain)
  • prediction market order placement and redemption
  • NFT listing, offers, and transfer flows
  • Emblem vault creation, minting, and key reveal
  • Conditional trading position create / update / cancel

Enable by sending x-mcp-transactions: enabled on every request. Omit the header (or any other value) to stay on the read-only surface.

Opt in to transaction tools

Transaction tools move value — they send, swap, trade, mint, and mutate vaults. Clients must opt in per connection by sendingx-mcp-transactions: enabled alongside your auth header. Without it, tools/list and tools/call behave as a pure research surface, and any transaction tool call returns Unknown tool.

When opted in, every transaction tool ships with a -transaction suffix (for example ethNativeSend-transaction, baseSwap-transaction). The suffix makes it trivial to scope allowlists with wildcards in clients that support pattern-based filtering, and it lets annotation-aware clients rely on the destructiveHint: true flag as a second signal.

GitHub Copilot CLI (key-based, transactions enabled):

{
  "mcpServers": {
    "emblemai": {
      "type": "http",
      "url": "https://emblemvault.ai/api/mcp",
      "headers": {
        "x-api-key": "YOUR_API_KEY",
        "x-mcp-transactions": "enabled"
      },
      "tools": ["*"]
    }
  }
}

Claude Code (key-based, transactions enabled):

claude mcp add --transport http EmblemAI https://emblemvault.ai/api/mcp \
  --header "x-api-key: YOUR_API_KEY" \
  --header "x-mcp-transactions: enabled"

Client allowlist patterns — keep research-only surface even after opting in, or allow everything:

// Read-only surface only (default — no header needed)
"tools": ["*"]

// Opt in to everything including transactions
"tools": ["*"]   // with x-mcp-transactions: enabled

// Opt in, then filter transactions out client-side by suffix
"tools": ["*", "!*-transaction"]

OAuth flows don't let you add custom headers during consent, so the header-based opt-in is currently API key-first. For OAuth sessions, stick to the read-only surface or contact us for a token policy that pre-approves transactions.

Smoke test the endpoint

Want to verify auth and protocol handling before you wire a client? Start with a plain tools/list request.

curl https://emblemvault.ai/api/mcp \
  -H 'Content-Type: application/json' \
  -H 'MCP-Protocol-Version: 2025-06-18' \
  -H 'x-api-key: YOUR_API_KEY' \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/list",
    "params": {}
  }'

Copy-paste client configs

These are the fastest review-ready ways to connect the hosted endpoint in real clients.

GitHub Copilot CLI

Save this as ~/.copilot/mcp-config.json or pass it session-only with --additional-mcp-config @file.

{
  "mcpServers": {
    "emblemai": {
      "type": "http",
      "url": "https://emblemvault.ai/api/mcp",
      "headers": {
        "x-api-key": "YOUR_API_KEY"
      },
      "tools": ["*"]
    }
  }
}
Claude Code

The fastest path — no API key, no secret to paste. Run the command and Claude Code walks you through the hosted OAuth flow in your browser:

claude mcp add --transport http EmblemAI https://emblemvault.ai/api/mcp

Prefer an API key (for headless agents or CI)? Use the key-based form:

claude mcp add --transport http EmblemAI https://emblemvault.ai/api/mcp --header "x-api-key: YOUR_API_KEY"

If you want a shareable project config, use a standard.mcp.json file with the same hosted endpoint:

{
  "mcpServers": {
    "emblemai": {
      "type": "http",
      "url": "https://emblemvault.ai/api/mcp",
      "headers": {
        "x-api-key": "YOUR_API_KEY"
      }
    }
  }
}
Claude Desktop bridge config

If your Claude Desktop build only accepts local stdio MCP servers, bridge the hosted endpoint with mcp-remote inside claude_desktop_config.json.

{
  "mcpServers": {
    "emblemai": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://emblemvault.ai/api/mcp",
        "--header",
        "x-api-key:${EMBLEM_AI_API_KEY}"
      ],
      "env": {
        "EMBLEM_AI_API_KEY": "YOUR_API_KEY"
      }
    }
  }
}

If your Claude Desktop build exposes direct remote MCP connectors, use the same hosted URL and auth header instead of the bridge.

Client notes worth knowing

  • Tested locally in GitHub Copilot CLI and Claude Code.
  • Copilot CLI tool allowlists flatten to names like emblemai-getCoinglassCDRIIndex.
  • Claude Code tool allowlists use names like mcp__emblemai__getCoinglassCDRIIndex.
  • Because the endpoint is auth-first, clients must send headers before they ask for tools/list.
  • Transaction tools always carry the -transaction suffix when exposed — use *-transaction in client allowlists to scope or exclude the destructive surface.

Related resources