Core CRUD
Basic toolkit creation, retrieval, update, and deletion operations.
GET /api/toolkits
Search and filter toolkits.
Authentication: Required
Permission: toolkits:read
Response:
The response is a paginated HAL collection. Toolkit items are returned under _embedded["inf:toolkit"].
{
"_links": {
"self": { "href": "/api/toolkits" }
},
"_embedded": {
"inf:toolkit": [
{
"_links": {
"self": { "href": "/api/toolkits/d4f8a2b1-..." },
"inf:tools": { "href": "/api/toolkits/engineering:filesystem-toolkit/tools" }
},
"id": "d4f8a2b1-...",
"slug": "filesystem-toolkit",
"name": "Filesystem Tools",
"type": "mcp-stdio",
"description": "Access filesystem via MCP",
"instructions": "Use these tools to read/write files",
"config": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/docs"]
},
"integrationId": null,
"ownerId": "engineering",
"shared": true,
"createdAt": "2024-01-15T10:00:00.000Z",
"updatedAt": "2024-02-08T14:30:00.000Z"
}
]
},
"start": 0,
"count": 1,
"total": 5
}
Query Support:
name- Search by toolkit nametype- Filter by toolkit typeslug- Search by slug
GET /api/toolkits-list
Get a simple list of all accessible toolkits.
Authentication: Required
Permission: toolkits:read
Response: Array of toolkit objects without pagination
GET /api/toolkits/{id}
Get a single toolkit with full details.
Authentication: Required
Permission: toolkit:read
Path Parameters:
| Parameter | Type | Description |
|---|---|---|
id | string | Toolkit ID (natural ID or compound key) |
Response:
{
"id": "team:github-toolkit",
"name": "GitHub Integration",
"slug": "github-toolkit",
"type": "mcp-remote",
"description": "Access GitHub repositories and issues",
"instructions": "Use these tools to interact with GitHub",
"config": {
"url": "https://mcp.example.com/github",
"headers": {
"Authorization": "Bearer token"
}
},
"integrationId": "oauth-github",
"integration": {
"id": "oauth-github",
"name": "GitHub OAuth",
"type": "oauth2"
},
"shared": true,
"createdAt": "2024-01-15T10:00:00Z",
"updatedAt": "2024-02-08T14:30:00Z",
"_links": {
"self": { "href": "/api/toolkits/team:github-toolkit" },
"inf:tools": { "href": "/api/toolkits/team:github-toolkit/tools" },
"inf:driver": { "href": "/api/toolkits/team:github-toolkit/driver" }
}
}
POST /api/toolkits
Create a new toolkit.
Authentication: Required
Permission: toolkits:create
Plan Requirement: Pro plan or higher (admins bypass)
Request Body:
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Toolkit display name |
slug | string | Yes | Unique slug identifier |
type | string | Yes | Toolkit type (mcp-stdio, mcp-remote, custom, informer) |
description | string | No | Toolkit description |
instructions | string | No | Usage instructions for AI |
config | object | No | Type-specific configuration |
integrationId | string | No | Associated integration ID (for OAuth) |
oauth | object | No | OAuth configuration (creates integration if not provided) |
shared | boolean | No | Team-shared toolkit (default: false) |
Example Request (MCP stdio):
{
"name": "Filesystem Access",
"slug": "filesystem",
"type": "mcp-stdio",
"description": "Local filesystem operations",
"config": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/workspace"]
},
"shared": true
}
Example Request (MCP remote with OAuth):
{
"name": "GitHub Toolkit",
"slug": "github-toolkit",
"type": "mcp-remote",
"description": "GitHub API integration",
"config": {
"url": "https://mcp.github.com",
"transport": "sse"
},
"oauth": {
"resourceName": "GitHub",
"authorizationEndpoint": "https://github.com/login/oauth/authorize",
"tokenEndpoint": "https://github.com/login/oauth/access_token",
"scopes": ["repo", "read:user"],
"clientId": "your-client-id",
"clientSecret": "your-client-secret"
},
"shared": true
}
Response: 201 Created
OAuth Integration:
If oauth is provided without integrationId, an OAuth integration is automatically created with Dynamic Client Registration (DCR) if supported.
Creating toolkits requires a Pro, Max, Max+, or BYOK plan. Free and Basic plan users will receive 403 Forbidden.
PUT /api/toolkits/{id}
Update a toolkit.
Authentication: Required
Permission: toolkit:write
Path Parameters:
| Parameter | Type | Description |
|---|---|---|
id | string | Toolkit ID |
Request Body:
| Field | Type | Description |
|---|---|---|
name | string | Update name |
slug | string | Update slug (must be valid: ^[a-z][a-z0-9_]*$) |
description | string | Update description (null allowed) |
instructions | string | Update instructions (null allowed) |
config | object | Update configuration (null allowed) |
integrationId | string | Change integration (null allowed) |
shared | boolean | Toggle team sharing |
Response: Updated toolkit object
Transaction: Yes
DELETE /api/toolkits/{id}
Delete a toolkit permanently.
Authentication: Required
Permission: toolkit:delete
Path Parameters:
| Parameter | Type | Description |
|---|---|---|
id | string | Toolkit ID |
Response: 204 No Content
Transaction: Yes
This operation permanently deletes the toolkit and all associated tools, chat associations, and configuration. This cannot be undone.
Toolkit Types
mcp-stdio
Local MCP server running as subprocess:
{
"type": "mcp-stdio",
"config": {
"command": "node",
"args": ["server.js"]
}
}
mcp-remote
Remote MCP server via HTTP/SSE:
{
"type": "mcp-remote",
"config": {
"url": "https://mcp.example.com",
"transport": "sse",
"headers": {
"X-API-Key": "secret"
}
}
}
custom
User-defined custom tools:
{
"type": "custom",
"config": {}
}
informer
Built-in Informer tools (no configuration needed).