Troubleshooting
Symptom first, then the cause and the fix. Every error also carries a next_action sentence; read it before anything on this page.
401 Unauthorized
Every request to https://app.curviate.com/mcp is authenticated, the tool calls included, so a 401 means the credential on that request was missing or not accepted.
- API key setup: the key is wrong, was rotated, or was revoked, or the environment variable the client reads is empty in the environment the client runs in. Copy the current key under Settings › API & Webhooks in the dashboard and check the variable where the client starts. A
cvt_test_token is never valid. - OAuth setup: the client's access was revoked under Settings › Profile, Authorized applications, or its sign-in expired. Sign in again from the client (in Claude Code:
/mcp, curviate, Authenticate; in Codex:codex mcp login curviate; in Gemini CLI:/mcp auth curviate).
Credential details: Authentication.
A tool seems missing
Its toolset is probably off: every client lists the same small default, and every other toolset stays off until you turn it on. Ask the agent to call list_toolsets (or explain_tools with the task), then enable_toolsets for the toolset it needs. If the client still does not show the tool, reconnect it so it reloads the tool list. Calling the tool directly returns TOOLSET_DISABLED naming the toolset. Full rules: Toolsets.
TOOL_REMOVED
The agent called a tool that used to exist and has left MCP, usually from a saved prompt or a cached tool list. Nothing ran. The error names the tool to use instead in replacement, its toolset in toolset, and how to call it in next_action: start_chat is now send_message with attendee, update_chat is mark_chat_read, dismiss_notification is dismiss_linkedin_notification. edit_message and delete_message have no MCP replacement; use the CLI or the REST API. The full list: Toolsets.
AMBIGUOUS_IDENTIFIER
Several LinkedIn accounts are connected and the call did not say which one to use, or the name it passed matches none of them. The error lists the accounts in candidates. Re-call with account_id set to one of those acc_ ids or its exact name. With one account connected, account_id can be left out.
FILTER_CANDIDATES_REQUIRED
A search filter value (a location, an industry, a company) matched more than one entry, or none exactly, so the search did not run. unresolved lists each value with its candidates. Re-call the same search with each listed value replaced by the id of the candidate you mean. Prefer full terms over abbreviations (Artificial Intelligence, not AI). The mechanism in depth: Search.
The session dropped after a server update
Curviate keeps MCP sessions in the server process, so a server deploy ends them. The next request on the old session gets 404 Session not found, which is the MCP signal for a client to start a new session, and clients that follow the spec reconnect on their own without you noticing. If yours shows the server as failed or disconnected instead, reconnect the server from the client's MCP settings, or restart the client. Your saved toolsets and OAuth sign-in survive; nothing else needs redoing.
The client connects, then every tool call fails with 401
Some clients send custom headers when they open the connection but not on the requests that follow. Because Curviate authenticates every request, the connection succeeds and each tool call is refused. Fixes, in order of preference:
- Use OAuth if the client supports it; tokens are sent on every request.
- Update the client; this is a client bug.
- As a last resort, put the key in the URL:
https://app.curviate.com/mcp?token=cvt_live_YOUR_KEY. Read the warnings on Authentication first.