Two ways to reach Shanone programmatically
Most agent integrations should use the MCP server — it’s what Cursor, Claude Code, and other MCP clients speak natively. The REST API documented here is the same underlying functionality, useful when you want to call Shanone directly from a script, backend service, or CI job without an MCP client in the loop. In fact, Shanone’s own local stdio MCP proxies (@duzzle/shanone-mcp and the Python equivalent) are implemented as thin wrappers over this exact REST API.
Base URL
Authentication
External API requests (as opposed to the web dashboard’s session-based JWT auth) use a Shanone API key:Endpoint groups
Tool Vendor
GET /v1/tools/search, GET /v1/tools/list, GET /v1/tools/{tool_name}/schema, POST /v1/tools/{tool_name}/executeSkill Vendor
GET /v1/skills, GET /v1/skills/{skill_id}, POST /v1/skills, PUT /v1/skills/{skill_id}, DELETE /v1/skills/{skill_id}Permission Vendor
GET /v1/permissions/services, GET /v1/permissions/users/{user_id}, PATCH /v1/permissions/users/{user_id}/tools/{tool_name}, PATCH /v1/permissions/users/{user_id}/services/{service_name}, GET /v1/permissions/users/{user_id}/summary, PATCH /v1/permissions/users/{user_id}/batchHealth
GET /v1/health — the same check backing shanone_health_checkGET /v1/tools/search is what shanone_search_tools calls under the hood, POST /v1/tools/{tool_name}/execute is shanone_execute_tool, and so on. If you already know the MCP tool you want, the REST endpoint is almost always the same verb aimed at a slightly different URL shape.
Shanone’s dashboard (Settings, API Keys, Webhooks, Integrations, etc.) is backed by a much larger set of JWT-authenticated internal routes — those aren’t part of the external API and aren’t meant to be called directly with an API key.
Example: search, then execute
- cURL
- Python
Response shape
Tool Vendor and Skill Vendor REST endpoints return JSON objects. Updated MCP search also returns JSON text. Example search response structure (values and schema simplified for illustration):GET /v1/tools/search includes schemas for top candidates using schema_limit (default 3, range 0–5). Schemas exceeding the combined 24,000 UTF-8 byte budget, among other fallback cases, use schemaRef instead of inputSchema. See the MCP search reference.
Execution envelopes differ between REST and MCP implementations. Inspect the outer status, success, or reason fields as applicable, as well as the provider result.
Rate limits
Both are configurable per API key (up to 1,000/min and 1,000,000/day) from Settings → API Keys. Exceeding either returns
429 with a Retry-After header.
Next steps
Authentication
API key format, scoping, IP allowlists, and rotation
MCP Tools Reference
The same capabilities, described from the MCP tool-calling side