Skip to main content

Get catalog

GET /api/registry
Returns the full serialized tool catalog including all registered sources and their tools. Response (200):
{
  "version": "v1",
  "types": {
    "t0": { "type": "object", "properties": { ... } },
    "t1": { "type": "object", "properties": { ... } }
  },
  "tools": [
    {
      "path": "github.issues.list",
      "name": "List Issues",
      "description": "List issues in a GitHub repository",
      "sourceId": "github",
      "inputSchemaRef": "t0",
      "destructive": false,
      "serviceAccountAllowed": false
    }
  ],
  "sources": [
    {
      "id": "github",
      "type": "plugin",
      "name": "GitHub",
      "description": "GitHub issues, pull requests, and repository operations.",
      "toolCount": 3
    }
  ]
}
The catalog uses a shared type dictionary (types) to deduplicate JSON Schema objects. Tool entries reference schemas by key (e.g., "t0") instead of inlining them.

Register source

POST /api/registry/sources
Register a new source and import its tools into the catalog.

Request body

A SourceConfig object. See Adding Sources for the full schema. Example (plugin source):
{
  "type": "plugin",
  "id": "github",
  "namespace": "github",
  "pluginId": "github"
}

Response (201)

{
  "registered": true,
  "sourceId": "github",
  "name": "GitHub",
  "toolCount": 3,
  "tools": ["github.issues.list", "github.issues.create", "github.repos.search"]
}

Deregister source

DELETE /api/registry/sources/:id
Removes a source and all its tools from the catalog.
ParameterInRequiredDescription
idpathYesSource ID
Response (200):
{
  "removed": true,
  "sourceId": "github"
}

Search tools

GET /api/registry/search?q=<query>&limit=<limit>
Fuzzy search across all registered tools.
ParameterInRequiredDefaultDescription
qqueryYesSearch query
limitqueryNo10Max results
Response (200):
{
  "query": "issues",
  "results": [
    {
      "path": "github.issues.list",
      "name": "List Issues",
      "description": "List issues in a GitHub repository",
      "destructive": false
    }
  ]
}

Get tool

GET /api/registry/tool/:path
Returns the full ToolDefinition for a specific tool.
ParameterInRequiredDescription
pathpathYesTool path (e.g., github.issues.create)
Response (200):
{
  "path": "github.issues.create",
  "name": "Create Issue",
  "description": "Create a new issue in a GitHub repository.",
  "inputSchema": { ... },
  "outputSchema": { ... },
  "destructive": true,
  "authProvider": "github",
  "serviceAccountAllowed": false
}