Connection issues
401 api_key_required
401 api_key_required
No API key was sent with the request. Check that your MCP client config includes
Authorization: Bearer sh_xxx (or X-API-Key: sh_xxx) exactly as shown in MCP Setup. If you’re using the local stdio proxy, confirm SHANONE_API_KEY is actually set in the env block — a missing env var is the most common cause.401 invalid_api_key
401 invalid_api_key
The key is malformed, was revoked, or expired. Create a new key from Settings → API Keys and update your client config. Remember the plaintext key is only ever shown once at creation time — if you lost it, revoke it and create a new one.
401 org_id_required or 403 invalid_org_id (direct HTTP connection only)
401 org_id_required or 403 invalid_org_id (direct HTTP connection only)
You’re connecting straight to
https://app.shanone.ai/mcp without the local proxy. This endpoint requires both your API key and your X-Org-Id header — an API key alone isn’t enough. Copy your organization ID from Settings → API Keys and add it as X-Org-Id (or append ?org_id=... to the URL if your client can’t send custom headers). The local stdio proxy (@duzzle/shanone-mcp) doesn’t need this — it only requires the API key.429 rate_limit_exceeded
429 rate_limit_exceeded
You’ve exceeded your API key’s rate limit (60 requests/minute and 10,000/day by default). The response includes a
Retry-After header — wait that long before retrying. If this happens often, ask a Root/admin to raise the key’s rate_limit in Settings → API Keys.Tools not appearing in my agent at all
Tools not appearing in my agent at all
- Fully restart your MCP client after editing its config (a reload isn’t always enough).
- Check the config file for JSON syntax errors — a trailing comma will silently break the whole
mcpServersblock in most clients. - Confirm the server name in your tool calls matches your config’s key (usually
shanone). - If using the local proxy, run
npx -y @duzzle/shanone-mcpdirectly in a terminal to see startup errors.
Authentication & OAuth
A tool keeps returning auth_required even after I connected the service
A tool keeps returning auth_required even after I connected the service
Each service’s OAuth connection is tied to your Shanone user, not your session. Make sure you completed the OAuth flow while signed in as the same Shanone account whose API key your agent is using — connecting Slack while logged in as a teammate won’t help your key.
A tool returns auth_expired
A tool returns auth_expired
The stored OAuth token for that service expired or was revoked upstream (e.g. you removed the app’s access from within Slack/Google/etc.). Follow the new
connect_link in the response to reauthorize — Shanone stores the refreshed token automatically afterward.Permission errors
'Permission Denied' when managing another user's tool access
'Permission Denied' when managing another user's tool access
The Permission Vendor tools (
shanone_set_user_tool_permission, shanone_set_user_service_permission, shanone_get_permission_summary, shanone_batch_set_user_permissions, shanone_list_user_tool_permissions) require the caller to be a Root user, or an SA2 user explicitly delegated the tool-permissions:ManageOthers policy action. Delegated SA2 users additionally cannot modify a Root user’s permissions. Ask your organization’s Root admin to grant that policy action if you need to manage teammates’ access.A specific tool fails even though the service is connected
A specific tool fails even though the service is connected
A tool-level permission override always takes priority over a service-level override, which in turn takes priority over the role default. Ask a Root/SA2 admin to run
shanone_get_permission_summary for your user_id to see exactly what’s enabled, or shanone_list_user_tool_permissions for the raw list of overrides.'Warning: not found in tool/service master data'
'Warning: not found in tool/service master data'
This shows up when setting a permission for a tool or service name that doesn’t (yet) exist in Shanone’s catalog — usually a typo. Double-check the exact name with
shanone_list_services or shanone_search_tools; the override is still saved and will simply apply automatically once/if that name is registered.Unexpected tool results
My agent picked the wrong tool
My agent picked the wrong tool
Make the
shanone_search_tools query more task-specific (see Best Practices) rather than a bare service name — this is especially common on large integrations like Slack, Stripe, and HubSpot where dozens of tools share overlapping keywords.'Confirmation Required' response
'Confirmation Required' response
Some destructive or high-risk tools require an explicit confirmation step. Re-run
shanone_execute_tool with the same arguments plus "confirm": true in the JSON payload once you’re sure you want to proceed.Invalid JSON in arguments
Invalid JSON in arguments
Updated
shanone_execute_tool.arguments takes a JSON object, such as {"channel": "#general", "text": "hi"}. Use {} for no arguments. Arrays, null, and scalars are rejected. Legacy JSON strings must decode to an object. If you still receive an error requiring a string, check your endpoint and package version, then reconnect to refresh tools/list.Getting more help
MCP Tools Reference
Full parameter and error-response reference for every tool
Support
Contact the Shanone team
Reporting a bug
When reporting an issue, include:- The exact tool name and arguments you called (redact secrets)
- The full response text, including any
reasonfield - Which client you’re using (Cursor, Claude Code, direct HTTP, etc.) and whether you’re on the local proxy or the direct
/mcpendpoint - Whether the same call works from the Shanone web dashboard’s tool tester, if you tried that