---
title: "List tools"
method: GET
path: "/v1/workspaces/{workspaceId}/tool_sets/{toolSetId}/tools"
tags: ["ToolService", "Tools"]
---

# List tools

`GET /v1/workspaces/{workspaceId}/tool_sets/{toolSetId}/tools`

Lists all tools in the tool set

## Path parameters

- `workspaceId` string, required
- `toolSetId` string, required

## Query parameters

- `limit` integer
- `cursor` string
- `prefix` string
- `query` string
- `names` string[]
- `states` string[]
- `requiresApproval` boolean
- `labels` string
- `sortOrder` string
- `includeInfo` boolean

## Response `200`

OK

- ListToolsResponse
  - `items` Tool[]
    - `metadata` ResourceMetadata, required — Standard metadata for persistent, named resources (e.g., agents, tools, prompts)
      - `id` string, required — Unique identifier for the resource (prefixed ULID, e.g., "agent_01HXK...")
      - `accountId` string, required — Account this resource belongs to for multi-tenant isolation (prefixed ULID)
      - `workspaceId` string, required — Workspace this resource belongs to for organizational grouping (prefixed ULID)
      - `name` string, required — Human-readable name for the resource (e.g., "Customer Support Agent", "Email Tool") Required for resources that users interact with directly
      - `externalId` string — External ID for the resource (e.g., a workflow ID from an external system)
      - `labels` object — Key-value pairs for categorization and filtering. Values are 0-63 alphanumeric characters with "-", "_", or "." allowed between; keys follow the same shape and additionally accept an optional DNS-subdomain prefix (e.g. "cadenya.com/") of at most 253 characters. Examples: {"environment": "production", "team": "platform", "version": "v2"}
      - `profileId` string, required — ID of the actor (user or service account) that created this resource
      - `createdAt` string, date-time, required — Timestamp when this resource was created
      - `updatedAt` string, date-time — Timestamp when this resource was last updated
    - `spec` ToolSpec, required
      - `description` string, required
      - `requiresApproval` boolean, required
      - `parameters` object, required — The tool's JSON Schema, as handed to the LLM. Required, but may be the empty object `{}` for a tool that takes no arguments. Requiring it rather than defaulting it means a misspelled field name (`inputSchema`, say) is a 400 instead of a silently parameterless tool.
      - `config` union, required — Config defines the adapter to use for the tool. This is used to determine how the tool is called. For example, if the tool is an HTTP tool, the adapter will be Http. If the tool is an inline tool, the adapter will be Inline.
        - ToolSpecConfigHttp
          - `type` 'http', required
          - `http` ConfigHTTP, required
            - `requestMethod` 'HTTP_METHOD_UNSPECIFIED' | 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE', enum, required
            - `path` string
            - `query` string
            - `headers` object
            - `requestBodyTemplate` string — These are only used when the request method is a POST, PUT, or PATCH
            - `requestBodyContentType` string
        - ToolSpecConfigMcp
          - `type` 'mcp', required
          - `mcp` ConfigMCP, required
            - `annotations` MCPAnnotations — Behavior hints synced from the MCP server's tool definition (ToolAnnotations in the MCP specification). All hints are advisory: servers are not required to send them, and clients should not rely on them for security decisions. Absent hints keep the MCP spec defaults (destructiveHint and openWorldHint default to true; readOnlyHint and idempotentHint default to false).
              - …
        - ToolSpecConfigOpenapi
          - `type` 'openapi', required
          - `openapi` ConfigOpenAPI, required
            - `path` string
            - `method` string
        - ToolSpecConfigBare
          - `type` 'bare', required
          - `bare` ConfigBare, required — Marks the tool as bare: it has no execution adapter of its own and relies on the parent tool set being a Bare tool set. Present so a webhook consumer can tell a tool is bare from the tool data alone, without cross-referencing the tool set.
      - `llmToolName` string — The name provided to the LLM, which may differ from the metadata.name on the tool. LLMs have specific length and format requirements, and tool set sources may not comply with them, so Cadenya does its best to format names into a usable format.
    - `info` ToolInfo
      - `toolSet` ResourceMetadata — Standard metadata for persistent, named resources (e.g., agents, tools, prompts)
        - `id` string, required — Unique identifier for the resource (prefixed ULID, e.g., "agent_01HXK...")
        - `accountId` string, required — Account this resource belongs to for multi-tenant isolation (prefixed ULID)
        - `workspaceId` string, required — Workspace this resource belongs to for organizational grouping (prefixed ULID)
        - `name` string, required — Human-readable name for the resource (e.g., "Customer Support Agent", "Email Tool") Required for resources that users interact with directly
        - `externalId` string — External ID for the resource (e.g., a workflow ID from an external system)
        - `labels` object — Key-value pairs for categorization and filtering. Values are 0-63 alphanumeric characters with "-", "_", or "." allowed between; keys follow the same shape and additionally accept an optional DNS-subdomain prefix (e.g. "cadenya.com/") of at most 253 characters. Examples: {"environment": "production", "team": "platform", "version": "v2"}
        - `profileId` string, required — ID of the actor (user or service account) that created this resource
        - `createdAt` string, date-time, required — Timestamp when this resource was created
        - `updatedAt` string, date-time — Timestamp when this resource was last updated
      - `createdBy` Profile — A profile identifies a user or non-human principal (such as an API key) at the account level. Profiles are account-scoped and can be granted access to multiple workspaces.
        - `metadata` AccountResourceMetadata, required — AccountResourceMetadata is used to represent a resource that is associated to an account but not to a workspace.
          - `id` string, required — Unique identifier for the resource (prefixed ULID, e.g., "apikey_01HXK...")
          - `accountId` string, required — Account this resource belongs to for multi-tenant isolation (prefixed ULID)
          - `name` string, required — Human-readable name for the resource (e.g., "Customer Support Agent", "Email Tool") Required for resources that users interact with directly
          - `externalId` string — External ID for the resource (e.g., a workflow ID from an external system)
          - `labels` object — Key-value pairs for categorization and filtering. Values are 0-63 alphanumeric characters with "-", "_", or "." allowed between; keys follow the same shape and additionally accept an optional DNS-subdomain prefix (e.g. "cadenya.com/") of at most 253 characters. Examples: {"environment": "production", "team": "platform", "version": "v2"}
          - `profileId` string, required
          - `createdAt` string, date-time
        - `spec` ProfileSpec, required — Configuration for a profile.
          - `email` string — Email address of the profile. Required and unique within an account for user profiles.
          - `name` string — Display name (e.g., "Bobby Tables").
          - `type` 'PROFILE_TYPE_UNSPECIFIED' | 'PROFILE_TYPE_USER' | 'PROFILE_TYPE_API_KEY' | 'PROFILE_TYPE_SYSTEM', enum, required — Whether this profile represents a human user, an API key, or a system principal.
      - `signature` string — Content signature identifying the tool within its tool set: a hash of the sanitized llm_tool_name, description, and canonical parameters. Two tools with the same llm_tool_name but different parameters or description (as MCP servers may return per user) have distinct signatures.
    - `state` 'STATE_UNSPECIFIED' | 'STATE_AVAILABLE' | 'STATE_OMITTED' | 'STATE_ARCHIVED', enum, required — The current lifecycle state of the tool. Output only. Use the :omit and :restore actions to transition; tool set syncs may also update it.
  - `pagination` Page — Page carries cursor-based pagination state. There is no total: the cursor walks the result set without ever counting it, and a count would cost a second query on every list.
    - `nextCursor` string

## Other responses

- `default` — Default error response

## Changes

- **2026-07-19** `3ecc1debabfa` — 2 breaking, 4 warning, 1 info
  - added `#/components/schemas/ToolSpec_Config_Http, #/components/schemas/ToolSpec_Config_Mcp, #/components/schemas/ToolSpec_Config_Openapi, #/components/schemas/ToolSpec_Config_Bare` to the `items/items/spec/config/allOf[#/components/schemas/ToolSpec_Config]/` response property `oneOf` list for the response status `200`
  - the `items/items/spec/config/allOf[#/components/schemas/ToolSpec_Config]/` response's property type/format changed from `object`/`` to ``/`` for status `200`
  - removed the optional property `items/items/spec/config/allOf[#/components/schemas/ToolSpec_Config]/bare` from the response with the `200` status
  - removed the optional property `items/items/spec/config/allOf[#/components/schemas/ToolSpec_Config]/http` from the response with the `200` status
  - …3 more
- **2026-07-08** `a99a473ee3ad` — 1 warning
  - removed the optional property `pagination/total` from the response with the `200` status
- **2026-07-08** `e72f368ddab7` — 1 info
  - added the new optional `query` request parameter `labels`
- **2026-07-06** `ca78d3d0b7c2` — 1 info
  - added the optional property `items/items/spec/config/allOf[#/components/schemas/ToolSpec_Config]/bare` to the response with the `200` status
- **2026-07-03** `02498bf606f0` — 1 info
  - added the optional property `items/items/info/signature` to the response with the `200` status

[Full history](https://skmtc.dev/cadenya/apis/cadenya-api/changes/v1/workspaces/:workspaceId/tool_sets/:toolSetId/tools/get.md)

---

[API](https://skmtc.dev/cadenya/apis/cadenya-api.md) · [All operations](https://skmtc.dev/cadenya/apis/cadenya-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/cadenya/cadenya-api/revisions/ac1a7f084068/schema)
