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.

Cline

Run cline mcp and pick Add server. Pick Remote (HTTP), point at the hosted endpoint, choose Static headers, and pass both x-api-key and x-mcp-transactions:enabled in one comma-separated line.

$ cline mcp
┌  MCP Servers
│
◇  What would you like to do?    Add server
◇  Server name                   EmblemAI
◇  Server type                   Remote (HTTP)
◇  Server URL                    https://emblemvault.ai/api/mcp
◇  Authentication                Static headers
◇  Headers (KEY:VALUE, comma-separated)
│  x-api-key:YOUR_API_KEY, x-mcp-transactions:enabled
│
◆  Added "EmblemAI" to ~/.cline/data/settings/cline_mcp_settings.json

Cline runs an agent loop that calls the MCP tools, and that loop needs its own LLM provider — separate from EmblemAI MCP auth. The managed cline provider may carry a $0 balance; bring your own:

# Cline runs the agent loop with its own LLM provider —
# this is separate from EmblemAI MCP auth. The managed
# "cline" provider may carry a $0 balance; bring your own:
cline auth anthropic
# paste ANTHROPIC_API_KEY when prompted, then pick a model:
cline model claude-haiku-4-5-20251001

Curl-verify the key against the endpoint first. Dev keys only work on dev.emblemvault.ai; prod keys only on emblemvault.ai.

Client notes worth knowing

  • Tested locally in GitHub Copilot CLI and Claude Code and Cline.
  • 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.
  • Cline tool allowlists use names like emblem__emblemListMyVaults (double-underscore server delimiter).

Related resources