Skip to main content
A source is a unit of tool registration. Toolshed supports four source types, each with its own adapter that resolves a configuration into a set of tools.

Source types

OpenAPI

Fetches an OpenAPI/Swagger specification and auto-generates tools from each endpoint.
Tool path generation: namespace.resource.action (e.g., billing.invoices.list). Action is derived from HTTP method: GET -> list/get, POST -> create, PUT -> update, PATCH -> patch, DELETE -> delete. Destructiveness: Derived from HTTP method. GET, HEAD, OPTIONS are safe; all others are destructive.

GraphQL

Introspects a GraphQL schema and generates tools from queries and mutations.
Tool path generation: namespace.field_name (camelCase converted to snake_case). Destructiveness: Queries are safe, mutations are destructive.

MCP

Connects to an external MCP server and imports its tools.
Tool path generation: namespace.tool_name (spaces and non-alphanumeric characters converted to underscores). Destructiveness: Reads annotations.destructiveHint from MCP tool metadata.
Stdio transport is defined in the config schema but not yet implemented in the adapter.

Plugin

Wraps a hand-written definePlugin() result as a source for registry consistency.

Authentication types

The auth field supports four types:

Registering via API

The server validates the config against SourceConfigSchema, calls resolveSource() to fetch and parse the spec, and registers all discovered tools in the catalog.