---
title: "List tool revisions"
method: GET
path: "/v1/tools/{tool_id}/revisions"
tags: ["tools"]
---

# List tool revisions

`GET /v1/tools/{tool_id}/revisions`

## Path parameters

- `tool_id` string, uuid, required

## Query parameters

- `limit` integer
- `cursor` string, nullable

## Response `200`

Successful Response

- CursorPageToolRevisionResponse
  - `items` ToolRevisionResponse[], required
    - `id` string, uuid, required
    - `tool_id` string, uuid, required
    - `name` string, required
    - `description` string, nullable, required
    - `configuration` APICallConfiguration — Configuration for an API_CALL tool, stored in Tool.configuration. Supports ``{{variable}}`` placeholders in url, headers, and body that are resolved at execution time from the tool's input variables and runtime metadata (via ``{{metadata.key}}``).
      - `url` string, required — API endpoint URL — supports {{variable}} placeholders
      - `method` 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'
      - `headers` HeaderConfig[]
        - `key` string, required
        - `value` string, required
        - `secure` boolean — When true, value is stored encrypted in the database
      - `query_params` QueryParamConfig[]
        - `key` string, required
        - `value` string, required
        - `secure` boolean — When true, value is stored encrypted in the database
      - `body` object
      - `timeout` integer — Request timeout in seconds
      - `variables` VariableDefinition[]
        - `name` string, required
        - `type` 'str' | 'int' | 'float' | 'bool'
        - `description` string, nullable
        - `required` boolean
      - `retry` RetryConfig — Retry configuration — same schema at org, tool, and integration-instance level.
        - `max_retries` integer
        - `base_delay_seconds` number
        - `max_delay_seconds` number
        - `jitter` boolean
    - `transfer_target` TransferTargetView — A call_transfer revision's stored target, surfaced on reads. ``ToolRevisionResponse.configuration`` is api_call-typed and parses to ``None`` for a transfer config (it has no ``url``), so this field carries the destination/mode back for the transfer-target picker. ``label`` / ``when_to_use`` come from the parent Tool's ``name`` / ``description``.
      - `destination` string, required
      - `mode` 'cold' | 'warm'
    - `response_schema` ResponseFieldSelector — Defines which fields to extract from a tool response.
      - `field_mappings` ResponseFieldMapping[]
        - `path` string, required — Dot-path into the response (e.g. 'data.order.id')
        - `alias` string, nullable — Output key name; defaults to full dot-path
    - `status` string, required
    - `has_secrets` boolean
    - `input_defaults` object, nullable
    - `created_by` string, nullable, required
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
    - `default_count` integer, required — How many input variables carry an operator *default* (ENG-590).
    - `pinned_count` integer, required — How many input variables are operator-*pinned* (ENG-590).
    - `stale_input_fields` string[], required — Configured variables removed/renamed/retyped by an operator edit.
    - `merged_input_preview` object, required — The input schema with each operator value injected as ``default``.
  - `next_cursor` string, nullable
  - `has_more` boolean, required

## Other responses

- `400` — Bad request
- `401` — Authentication required
- `422` — Validation Error

---

[API](https://skmtc.net/oneloop-hq/apis/feather-api.md) · [All operations](https://skmtc.net/oneloop-hq/apis/feather-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/oneloop-hq/feather-api/versions/888bdd5c076e/schema)
