List App Tools

List the code tools the workspace's installed apps ship, at the version each install runs, with their input and output schemas. Requires read access and the Apps module. Returns the complete set in one page; nextCursor is always null. Workspace API keys return 403; use a personal API key or scoped OAuth token.

OAuth scope: api:read.

GET/api/v2/apps/tools
X-API-Key<token>

Your Agent Serve API key, personal or workspace-scoped. Generate one under Settings, then API Keys. Operations that reject workspace keys say so in their own description.

In: header

Query Parameters

workspaceId*string

Workspace the request is authorized against.

Length1 <= length <= 128
installId?string

Only the tools of this install.

Length1 <= length <= 64

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://agentserve.valnoraelric.com/api/v2/apps/tools?workspaceId=string" \  -H "X-API-Key: YOUR_API_KEY"
{
  "data": [
    {
      "reference": "string",
      "name": "string",
      "description": "string",
      "effect": "read",
      "language": "javascript",
      "inputSchema": {
        "property1": null,
        "property2": null
      },
      "outputSchema": {
        "property1": null,
        "property2": null
      },
      "timeoutMs": -9007199254740991,
      "appId": "string",
      "appSlug": "string",
      "installId": "string",
      "versionId": "string",
      "version": "string"
    }
  ],
  "nextCursor": "string"
}
{
  "error": {
    "code": "BAD_REQUEST",
    "message": "Invalid request"
  }
}
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Authentication required"
  }
}
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Insufficient workspace permissions",
    "details": {
      "code": "INSUFFICIENT_WORKSPACE_ROLE"
    }
  }
}
{
  "error": {
    "code": "NOT_FOUND",
    "message": "Not found"
  }
}
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "API rate limit exceeded",
    "details": {
      "retryAfter": "2026-01-01T00:00:30.000Z"
    }
  }
}
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "Internal server error"
  }
}
{
  "error": {
    "code": "SERVICE_UNAVAILABLE",
    "message": "Service temporarily unavailable"
  }
}