Toolshed
API Reference

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
  }
}
CodeStatusDescription
TOOL_NOT_FOUND404Tool does not exist
EXECUTION_FAILED500Tool execution failed
INTEGRATION_NOT_CONNECTED400Required integration not connected
INSUFFICIENT_SCOPES403Missing required integration scopes

© 2026 Shell Technology. All rights reserved.