---
title: "Resolve inherited and node-local tools for a revision's flow"
method: GET
path: "/v1/assistants/{agent_id}/revisions/{revision_id}/effective-tool-surface"
tags: ["assistants"]
---

# Resolve inherited and node-local tools for a revision's flow

`GET /v1/assistants/{agent_id}/revisions/{revision_id}/effective-tool-surface`

## Request

- The document declares no server URL.
- Auth: API key in header `x-api-key`
- TypeScript: <https://skmtc.dev/oneloop-hq/apis/feather-api/docs/v1/assistants/:agent_id/revisions/:revision_id/effective-tool-surface/get.ts> (a function with typed inputs; its response is checked against the schema)

Return the backend-owned effective surface with provenance for every AgentNode.

Free revision model: resolved for the specific revision addressed in the path.
The client performs no inheritance or precedence logic of its own.

## Path parameters

- `agent_id` string, uuid, required
- `revision_id` string, uuid, required

## Response `200`

Successful Response

- EffectiveToolSurfaceResponse: Backend-resolved per-AgentNode authoring surface for one assistant revision.
  - `revision_id` string, uuid, required
  - `workflow_revision_id` string, uuid, nullable
  - `graph_version` integer
  - `utility_catalog` UtilityCatalogEntry[]
    - `name` string, required
    - `canonical_key` string, required
    - `display_name` string, nullable
    - `description` string
    - `parameters` object
  - `assistant_tools` EffectiveToolSurfaceEntry[]
    - `name` string, required
    - `canonical_key` string, nullable
    - `display_name` string, nullable
    - `mentionable` boolean
    - `description` string
    - `parameters` object
    - `provenance` 'util' | 'platform' | 'ambient' | 'node' | 'runtime', required
    - `locked` boolean, required
    - `dynamic` boolean
    - `selection_sources` string[]
  - `nodes` EffectiveNodeToolSurface[]
    - `node_id` string, required
    - `tools` EffectiveToolSurfaceEntry[]
      - `name` string, required
      - `canonical_key` string, nullable
      - `display_name` string, nullable
      - `mentionable` boolean
      - `description` string
      - `parameters` object
      - `provenance` 'util' | 'platform' | 'ambient' | 'node' | 'runtime', required
      - `locked` boolean, required
      - `dynamic` boolean
      - `selection_sources` string[]

## Other responses

- `422`: Validation Error

## Changes

- **2026-08-12** `5a5597ebb2d6`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/oneloop-hq/apis/feather-api/changes/v1/assistants/:agent_id/revisions/:revision_id/effective-tool-surface/get.md)

---

[API](https://skmtc.dev/oneloop-hq/apis/feather-api.md) - [All operations](https://skmtc.dev/oneloop-hq/apis/feather-api/llms.txt) - [OpenAPI document](https://skmtc.dev/oneloop-hq/apis/feather-api/revisions/9cd7291d4228?raw)
