Base URL
http://localhost:3333/api/· Authentication · Conventions
Tools Routes
Base path: /api/tools
Get Orchestrator Tools
GET /orchestrator-tools
- Authentication: Required
- Description: Get all orchestrator tools (native, registry, and plugin tools)
- Response:
{
"tools": [
{
"id": "tool-name",
"name": "Tool Name",
"title": "Tool Title",
"description": "Tool description",
"category": "Data & Knowledge",
"is_builtin": true,
"is_plugin": false,
"plugin_name": null
}
]
}Get Workflow Tools
GET /workflow-tools
- Authentication: Required
- Description: Get all tools for the workflow designer including plugins and custom tools
- Response:
{
"triggers": [
{
"type": "trigger-type",
"title": "Trigger Title",
"description": "Trigger description",
"icon": "trigger-icon",
"isPlugin": false
}
],
"actions": [
{
"type": "action-type",
"title": "Action Title",
"description": "Action description",
"icon": "action-icon",
"isPlugin": false
}
],
"utilities": [
{
"type": "utility-type",
"title": "Utility Title",
"description": "Utility description",
"icon": "utility-icon",
"isPlugin": false
}
],
"widgets": [],
"controls": [],
"custom": [
{
"id": "custom-tool-id",
"name": "Custom Tool",
"description": "Custom tool description"
}
]
}Get Plugin Tools Only
GET /plugins-only
- Authentication: None
- Description: Get only plugin tools (for real-time updates)
- Response:
{
"success": true,
"plugins": {
"triggers": [
{
"type": "plugin-trigger",
"title": "Plugin Trigger",
"description": "Description",
"icon": "puzzle-piece",
"isPlugin": true,
"pluginName": "plugin-name"
}
],
"actions": [],
"utilities": [],
"widgets": [],
"controls": [],
"custom": []
},
"totalCount": 1
}Execute Tool
POST /:toolName/execute
- Authentication: Required
- Parameters:
toolName(path): Tool identifier — accepts kebab-case (chucknorris-get-joke) or snake_case (chucknorris_get_joke). Resolves across native orchestrator tools, agent/workflow/goal/code/widget/tool-forge tools, registry tools, and installed plugin tools.
- Body:
{
"args": { "category": "dev" }
}- Description: Universal tool execution endpoint. Invokes any registered tool by name with the supplied arguments and returns the parsed result. Argument validation, OAuth resolution for tools that require it, and registry/plugin dispatch are all handled internally — this is the same pipeline the chat orchestrator uses to call tools.
- Response (success):
{
"success": true,
"tool": "chucknorris-get-joke",
"result": {
"joke": "Chuck Norris doesn't write code...",
"id": "abc123",
"categories": ["dev"],
"url": "https://api.chucknorris.io/jokes/abc123"
}
}- Response (tool reported failure):
{
"success": false,
"tool": "chucknorris-get-joke",
"error": "Validation failed: 'category' must be one of [...]",
"details": { "...": "full payload returned by the tool" }
}- Response 401:
{ "success": false, "error": "Authentication required" }
Custom Tool Routes
Base path: /api/custom-tools
Health Check
GET /health
- Authentication: None
- Description: Check if the custom tool service is running
- Response:
{
"status": "OK"
}Get All Custom Tools
GET /
- Authentication: Required
- Description: Retrieve all custom tools for the authenticated user
- Response:
[
{
"id": "tool-id",
"name": "Custom Tool",
"description": "Tool description",
"config": {},
"userId": "user-id",
"createdAt": "2024-01-01T00:00:00Z",
"updatedAt": "2024-01-01T00:00:00Z"
}
]Save/Update Custom Tool
POST /save
- Authentication: Required
- Description: Create a new custom tool or update an existing one
- Body:
{
"id": "optional-tool-id",
"name": "Custom Tool",
"description": "Tool description",
"config": {}
}- Response:
{
"success": true,
"tool": {
"id": "tool-id",
"name": "Custom Tool",
"description": "Tool description",
"config": {},
"userId": "user-id",
"createdAt": "2024-01-01T00:00:00Z",
"updatedAt": "2024-01-01T00:00:00Z"
}
}Get Custom Tool by ID
GET /:id
- Authentication: Required
- Parameters:
id(path): Tool ID
- Description: Retrieve a specific custom tool by ID
- Response:
{
"id": "tool-id",
"name": "Custom Tool",
"description": "Tool description",
"config": {},
"userId": "user-id",
"createdAt": "2024-01-01T00:00:00Z",
"updatedAt": "2024-01-01T00:00:00Z"
}Update Custom Tool
PUT /:id
- Authentication: Required
- Parameters:
id(path): Tool ID
- Body:
{
"name": "Updated Tool Name",
"description": "Updated description",
"config": {}
}- Response:
{
"success": true,
"tool": {
"id": "tool-id",
"name": "Updated Tool Name",
"description": "Updated description",
"config": {},
"userId": "user-id",
"createdAt": "2024-01-01T00:00:00Z",
"updatedAt": "2024-01-01T00:00:00Z"
}
}Delete Custom Tool
DELETE /:id
- Authentication: Required
- Parameters:
id(path): Tool ID
- Description: Delete a custom tool by ID
- Response:
{
"success": true,
"message": "Custom tool deleted successfully"
}Tool Schema Routes
Base path: /api/tool-schemas
Get All Tool Schemas
GET /schemas
- Authentication: None
- Description: Get all tool schemas organized by category
- Response:
{
"triggers": [
{
"type": "trigger-type",
"title": "Trigger Title",
"description": "Trigger description",
"schema": {}
}
],
"actions": [
{
"type": "action-type",
"title": "Action Title",
"description": "Action description",
"schema": {}
}
],
"utilities": [
{
"type": "utility-type",
"title": "Utility Title",
"description": "Utility description",
"schema": {}
}
]
}Get Tool Schema by Type
GET /schemas/:toolType
- Authentication: None
- Parameters:
toolType(path): Tool type
- Description: Get schema for a specific tool
- Response:
{
"type": "tool-type",
"title": "Tool Title",
"description": "Tool description",
"schema": {
"properties": {},
"required": []
}
}Get Schemas by Category
GET /schemas/category/:category
- Authentication: None
- Parameters:
category(path): Category name (triggers, actions, utilities, etc.)
- Description: Get schemas by category
- Response:
[
{
"type": "tool-type",
"title": "Tool Title",
"description": "Tool description",
"schema": {}
}
]Get Registry Statistics
GET /stats
- Authentication: None
- Description: Get registry statistics
- Response:
{
"totalTools": 50,
"categories": {
"triggers": 10,
"actions": 25,
"utilities": 15
},
"lastUpdated": "2024-01-01T00:00:00Z"
}Get Tool Metadata
GET /metadata/:toolType
- Authentication: None
- Parameters:
toolType(path): Tool type
- Description: Get metadata for a specific tool (includes source info)
- Response:
{
"type": "tool-type",
"source": "builtin|plugin|custom",
"plugin": "plugin-name",
"version": "1.0.0",
"author": "Author Name",
"createdAt": "2024-01-01T00:00:00Z"
}Reload Registry
POST /reload
- Authentication: Required
- Description: Reload the registry (useful for development)
- Response:
{
"success": true,
"message": "Tool registry reloaded successfully",
"stats": {
"totalTools": 50,
"categories": {
"triggers": 10,
"actions": 25,
"utilities": 15
}
}
}NPM Routes
Base path: /api/npm
Search MCP Servers
GET /search
- Authentication: Required
- Parameters:
q(query): Search querylimit(query): Maximum results (optional)
- Description: Search for MCP servers on NPM
- Response:
{
"success": true,
"packages": [
{
"name": "package-name",
"version": "1.0.0",
"description": "Package description",
"author": "Author Name",
"keywords": ["mcp", "server"],
"downloads": 1000
}
]
}Get Popular Servers
GET /popular
- Authentication: Required
- Description: Get popular MCP servers from NPM
- Response:
{
"success": true,
"packages": [
{
"name": "popular-package",
"version": "1.0.0",
"description": "Popular package description",
"downloads": 10000,
"rating": 4.5
}
]
}Get Package Details
GET /package/:packageName
- Authentication: Required
- Parameters:
packageName(path): NPM package name
- Description: Get detailed information about a specific NPM package
- Response:
{
"success": true,
"package": {
"name": "package-name",
"version": "1.0.0",
"description": "Package description",
"author": "Author Name",
"license": "MIT",
"repository": "https://github.com/user/repo",
"dependencies": {},
"downloads": {
"lastWeek": 1000,
"lastMonth": 5000,
"total": 50000
},
"readme": "README content"
}
}Test Package
POST /test
- Authentication: Required
- Body:
{
"packageName": "package-name",
"version": "1.0.0"
}- Response:
{
"success": true,
"testResults": {
"compatible": true,
"issues": [],
"recommendations": []
}
}