Use this guide when you want end users to talk to their Abstraxn agent from ChatGPT, Claude, or your own product — not only from Cursor.
Three paths: (1) OAuth MCP for ChatGPT / Claude Web, (2) API key MCP for Claude Code / Cursor, (3) Backend bridge (@abstraxn/mcp-client) for any LLM API (OpenAI, Anthropic, Gemini).

Choose your integration

ClientAuthSetup
CursorApplication or per-agent API keyMCP in Cursor
Claude CodePer-agent API key + --headerBelow
Claude Web / DesktopOAuth 2.1Below
ChatGPT (Developer Mode)OAuth 2.1Below
Your app (any LLM)API key on your serverApp integration + SDK
Signing (transfer, x402 paymentPayload) still requires your backend with the agent accessKey — see Credentials.

Prerequisites

  1. Dashboard setup — create an agent and copy credentials.
  2. MCP URL from Agentic Stack → Overview (e.g. https://agent-kit.abstraxn.com/mcp).
  3. For OAuth connectors: MCP_OAUTH_ENABLED=true on the deployment. Kong on /mcp must use a pre-function plugin to strip Bearer before key-auth (see MCP integration).

Path 1 — Claude Code (API key)

Use the per-agent API key from createAgent (not the application key):
claude mcp add -s user web3-agent-kit https://agent-kit.abstraxn.com/mcp \
  --header "Authorization: YOUR_PER_AGENT_API_KEY"
Verify:
claude --mcp-debug
Example prompt: “Check my Agent Kit wallet balance on Base.”

Path 2 — ChatGPT & Claude Web (OAuth)

ChatGPT and Claude Web expect a remote MCP server with OAuth 2.1 (no static API key in the connector UI). After consent, the OAuth access_token is the same per-agent API key you pasted on the consent form. ChatGPT sends it as Authorization: Bearer <key> so Kong key-auth (with a Bearer strip pre-function) can validate /mcp without opening the route.

What Abstraxn exposes

EndpointPurpose
GET /.well-known/oauth-protected-resourceMCP resource metadata (RFC 9728)
GET /.well-known/oauth-authorization-serverOAuth server metadata (RFC 8414)
GET /oauth/authorizeConsent screen
POST /oauth/tokenToken exchange (PKCE)
POST /oauth/registerDynamic client registration
POST /mcpMCP JSON-RPC (Authorization: Bearer <per-agent-api-key> after OAuth)

ChatGPT

  1. Settings → Apps → Advanced Settings → enable Developer Mode.
  2. Create app → name it Abstraxn Agent Kit.
  3. MCP server URL: https://agent-kit.abstraxn.com/mcp
  4. Authentication: OAuth (ChatGPT discovers metadata automatically).
  5. On first tool use, complete the Authorize redirect.
  6. On the consent page, paste your per-agent API key from the dashboard.
  7. Use the app in chat (e.g. /abstraxn if configured as slash command).

Claude Web & Desktop

  1. Settings → Connectors → Add custom connector.
  2. Name: Abstraxn Agent Kit
  3. URL: https://agent-kit.abstraxn.com/mcp
  4. Click Connect → complete OAuth consent (per-agent API key on consent form).
Dev environment:
https://dev-agent-kit.abstraxn.com/mcp

OAuth scopes

Scopes gate categories of tools, not a fixed name list. New tools are added to Agent Kit over time; clients should call tools/list after connect to see every name available for the granted scopes.
ScopeCategory
mcp:tools:readWallet/chain reads and x402 catalog discovery
mcp:tools:transferUnsigned transfer intents (signing on your backend)
mcp:tools:paidFixed-price and external x402 calls
Call tools/list after connect for the live tool names and schemas. See MCP tools reference.

Connector icon (Claude / ChatGPT)

Claude and ChatGPT pick the connector icon from your MCP host — not from the name you type in the UI.
SourceWhere it is exposed
OAuth logo_uriGET /.well-known/oauth-authorization-server
Public faviconGET /favicon.png and GET /favicon.ico on the same host as /mcp
MCP serverInfo.iconsReturned in the initialize JSON-RPC response
Canonical Abstraxn brand assets (used in OAuth logo_uri, MCP serverInfo.icons, and consent UI):
AssetURL
Favicon / connector iconhttps://abstraxn.com/icon.png
Light logo (wordmark)https://abstraxn.com/_next/static/media/logo.6a015f32.svg
Dark logo (wordmark)https://abstraxn.com/_next/static/media/dark-mode.d252c03d.svg
OAuth metadata and MCP initialize point at https://abstraxn.com/icon.png by default. The agent-kit host also redirects /favicon.png → that URL (useful when clients fetch favicon from the MCP domain).

Why you might still see an old or generic icon

  1. Kong blocked /favicon.png — if the favicon URL returns 401 Key, Claude falls back to a generic MCP placeholder (colorful triangle / globe). Whitelist GET /favicon.ico and GET /favicon.png from Kong key-auth (same as OAuth discovery paths).
  2. Connector cached the first icon — Claude caches connector metadata. After deploying a new favicon, disconnect and re-add the connector (or toggle off → on in the Connectors menu).
  3. Client rollout — some Claude builds read logo_uri from OAuth metadata; others use /favicon.png or MCP icons[]. Abstraxn exposes all three so icons update as clients adopt each mechanism.

Verify branding endpoints

# Canonical favicon (200 image/png)
curl -sS -D - -o /dev/null "https://abstraxn.com/icon.png"

# OAuth metadata must include logo_uri → abstraxn.com/icon.png
curl -sS "https://agent-kit.abstraxn.com/.well-known/oauth-authorization-server" | jq '.logo_uri'

# Optional: MCP host redirect (302 → abstraxn.com/icon.png; Kong must allow GET without key-auth)
curl -sS -D - -o /dev/null "https://agent-kit.abstraxn.com/favicon.png"
Optional env overrides when self-hosting:
VariableDefault
MCP_BRAND_FAVICON_URLhttps://abstraxn.com/icon.png
MCP_BRAND_LOGO_LIGHT_URLhttps://abstraxn.com/_next/static/media/logo.6a015f32.svg
MCP_BRAND_LOGO_DARK_URLhttps://abstraxn.com/_next/static/media/dark-mode.d252c03d.svg
MCP_BRAND_DOCUMENTATION_URLhttps://docs.abstraxn.com/guides/ai/external-agents
After fixing Kong + redeploying, reconnect the connector in Claude (Settings → Connectors → Abstraxn → disconnect → Add connector).

Path 3 — Any LLM via @abstraxn/mcp-client

Install the SDK in your backend (never in the browser):
npm install @abstraxn/mcp-client
import { AgentKitMcpClient, mcpToolsToOpenAi } from '@abstraxn/mcp-client';

const mcp = new AgentKitMcpClient({
  serverUrl: process.env.MCP_SERVER_URL!,
  authToken: process.env.MCP_SERVER_AUTH_TOKEN!,
  defaultAgentId: session.agentKitId, // when using application API key
});

const tools = await mcp.discoverTools(); // live names from tools/list
const openAiTools = mcpToolsToOpenAi(tools);

// LLM returns tool_call → forward to MCP (use names from discoverTools only)
const toolName = tools[0].name;
const outcome = await mcp.callTool(toolName, { agent_id: session.agentKitId });
Works with OpenAI, Anthropic (tools API or OpenAI-compatible proxy), Gemini, OpenRouter, etc. Full chat loop with signing: Full-stack app integration.

Streamable HTTP (2025-06-18)

Agent Kit supports Streamable HTTP for modern MCP clients:
  • POST /mcp — JSON-RPC; returns Mcp-Session-Id on initialize
  • GET /mcp — SSE heartbeat stream (optional)
  • DELETE /mcp — close session
The @abstraxn/mcp-client package handles session headers automatically.

ERC-8004 discovery

Registered agents publish MCP + OAuth metadata in the public registration file:
{
  "services": [
    {
      "name": "MCP",
      "endpoint": "https://agent-kit.abstraxn.com/mcp",
      "version": "2025-06-18",
      "security": {
        "oauth2": {
          "protectedResourceMetadata": "https://agent-kit.abstraxn.com/.well-known/oauth-protected-resource",
          "scopes": ["mcp:tools:read", "mcp:tools:transfer", "mcp:tools:paid"]
        },
        "apiKey": { "header": "Authorization" }
      }
    }
  ]
}