Toolshed API Reference
Base URL: https://toolshed.shellapps.com/api/v1/
All endpoints require authentication via ShellApps ID.
Tool Registration
POST /tools
Register a new tool.
// Request
{
"name": "github.create-issue",
"description": "Create a GitHub issue in a repository",
"version": "1.0.0",
"parameters": {
"repo": { "type": "string", "required": true, "description": "Repository (owner/name)" },
"title": { "type": "string", "required": true, "description": "Issue title" },
"body": { "type": "string", "description": "Issue body (markdown)" },
"labels": { "type": "array", "items": "string", "description": "Labels to apply" }
},
"integration": "github",
"requiredScopes": ["repo"]
}
// Response 201
{
"id": "tool_abc123",
"name": "github.create-issue",
"version": "1.0.0",
"status": "active",
"createdAt": "2025-03-01T10:00:00Z"
}GET /tools
List available tools. Supports filtering.
GET /tools?integration=github&q=issue// Response 200
{
"tools": [
{
"id": "tool_abc123",
"name": "github.create-issue",
"description": "Create a GitHub issue in a repository",
"version": "1.0.0",
"integration": "github"
}
],
"total": 1
}GET /tools/:toolId
Get tool details including full parameter schema.
Tool Discovery
POST /tools/search
Semantic search for tools by description. Used by RapidStack agents to find relevant tools.
// Request
{
"query": "I need to create a GitHub issue",
"limit": 5
}
// Response 200
{
"results": [
{
"tool": { "id": "tool_abc123", "name": "github.create-issue" },
"relevance": 0.95
}
]
}Tool Execution
POST /tools/:toolId/execute
Execute a tool. The caller must have appropriate permissions.
// Request
{
"parameters": {
"repo": "shellapps/experience",
"title": "Bug: page not loading",
"body": "Steps to reproduce..."
},
"context": {
"agentId": "agent_xyz",
"taskId": "task_123"
}
}
// Response 200
{
"executionId": "exec_abc",
"status": "completed",
"result": {
"issueNumber": 42,
"url": "https://github.com/shellapps/experience/issues/42"
},
"durationMs": 1200
}Integrations
GET /integrations
List available integrations.
POST /integrations/:name/connect
Initiate an OAuth connection for an integration.
// Request
{
"redirectUri": "https://your-app.com/callback"
}
// Response 200
{
"authorizationUrl": "https://github.com/login/oauth/authorize?client_id=..."
}DELETE /integrations/:name/disconnect
Remove an integration connection.
Error Responses
{
"error": {
"code": "TOOL_NOT_FOUND",
"message": "Tool 'github.create-issue' not found",
"status": 404
}
}| Code | Status | Description |
|---|---|---|
TOOL_NOT_FOUND | 404 | Tool does not exist |
EXECUTION_FAILED | 500 | Tool execution failed |
INTEGRATION_NOT_CONNECTED | 400 | Required integration not connected |
INSUFFICIENT_SCOPES | 403 | Missing required integration scopes |