MCP returns 401 Unauthorized
Symptoms:tools/list or tools/call fails with missing/invalid credentials.
Checks:
- Header is
Authorization: <api-key>orX-API-Key: <api-key>— noBearerprefix unless your client adds it consistently. - Key is the application API key from Agentic Stack → Overview (not a wallet
accessKey). - Key matches the same application you created agents under.
- Key is not expired or rotated in the dashboard without updating env /
mcp.json.
Invalid API key — validation failed against Kong; re-copy from Overview.
Message: Missing credentials — no header sent; fix MCP client or curl -H.
No active agents exist for this app
Symptoms: Wallet tools fail; discovery may still work. Cause: Agents are created viacreateAgent (SDK) or REST POST /agents, not from the dashboard UI alone.
Fix:
- Run SDK quickstart once for a test user.
- Confirm the agent appears under All agents and status is Active.
- Retry MCP with
agent_idif you have multiple agents.
Multiple active agents — pass agent_id
Symptoms:X-Agent-Id: <uuid> on the MCP HTTP request.
Production tip: One agent per end-user identity; always pass agent_id explicitly instead of relying on “most recent agent” dev behavior.
agent_id does not match customer API key
Symptoms: 403 Forbidden when using a per-agent API key asAuthorization.
Cause: agent_id in arguments refers to a different agent than the key is bound to.
Fix: Omit agent_id when using per-agent agent.apiKey, or pass the matching UUID only.
No agents exist — create via REST first
Symptoms:No agents exist for this app. Create an agent via REST before calling MCP tools.
Fix: Call createAgent before wallet MCP tools. discover_services / get_service / tools/list do not need agents.
paid_fetch returns payment required (-32402)
Symptoms: Firstpaid_fetch call returns JSON-RPC error -32402 or a paymentRequired object — not a bug.
Cause: The HTTP API requires x402 payment before returning data.
Fix:
- Treat as success path: parse
accepts[]from the response. - On your backend, sign
paymentPayloadwith the agent’s accessKey (x402 payments). - Retry
tools/callwithpaymentPayloadat the top level ofparams(sibling toname/arguments).
accessKey.
Insufficient funds / transfer preflight fails
Symptoms:transfer or signing fails; balance tools show low native balance.
Fix:
- Call
get_wallet_addressfor the agent’s EVM address. - Fund that address with native gas on the target chain (ETH on Base, etc.).
- For token transfers, ensure token balance on the same chain.
transfer returns unsigned transaction — nothing broadcast
Symptoms: MCP returnsunsigned_transaction_ready or similar; chain state unchanged.
Expected: Agent Kit does not submit transactions. Your backend must sign with accessKey and broadcast (see AgentSigningService in the sample backend API).
accessKey lost after createAgent
Symptoms: Cannot sign; only have application API key. Cause:wallet.accessKey is shown once at agent creation.
Fix: There is no dashboard “reveal access key.” Create a new agent (or follow your product’s key-rotation flow) and store the new key encrypted immediately.
Claude / ChatGPT connector shows wrong or generic icon
Symptoms: Connector works, but the sidebar shows an old logo, generic MCP triangle, or globe instead of the Abstraxn icon. Cause: The client fetches branding from your MCP host (/favicon.png, OAuth logo_uri, or MCP initialize → serverInfo.icons). If Kong returns 401 on favicon paths, or the connector cached an icon from an earlier failed fetch, you see a placeholder.
Fix:
- Confirm public favicon (no API key):
- Confirm OAuth metadata includes
logo_uri→https://abstraxn.com/icon.png:
-
Ask infra to bypass Kong key-auth on
GET /favicon.icoandGET /favicon.png(see External agents — Connector icon). - Disconnect and re-add the connector in Claude or ChatGPT so the client refetches branding.
Cursor does not show MCP tools
Checks:urlends with/mcpand uses"transport": "http".Authorizationheader value is the raw application API key.- Restart Cursor after editing config.
- Run 5-minute smoke test with the same key — if curl works but Cursor does not, the issue is IDE config.
Dashboard Tools page empty or errors
Checks:- Application selected in the sidebar dropdown.
- Agent Kit provisioned for that app (created with application).
- API key in Overview matches the app you are viewing.
Spend policy denied (-32403)
Symptoms: MCP JSON-RPC error -32403 on a paid or restricted tool. Cause: Agent or app spend policy blocked the action (limits, allowlists). Fix: Review agent status, plan limits (Pricing), and dashboard activity logs for the agent.FAQ
Can I call MCP from the browser?
No. Keep the application API key andaccessKey on your server. The frontend should call your JWT API only (Full-stack app integration).
Do I need both application API key and per-agent apiKey?
No. Most apps use only the application API key +agent_id per user. Per-agent keys are optional for stricter scoping.
Which tools need agent_id?
With an application API key, any tool that acts on a specific agent wallet needs a resolved agent — passagent_id when you have multiple agents. Whether a tool requires agent_id is defined in its inputSchema from tools/list or the dashboard Tools page.
Can I test x402 without a backend?
You can run discover_services from curl or Cursor. paid_fetch payment completion requires backend signing with accessKey.Still stuck?
- Re-run the smoke test and note the exact error message.
- Compare env vars to Credentials.
- Contact Abstraxn support with app id, agent id (if any), and redacted error text.