> ## Documentation Index
> Fetch the complete documentation index at: https://doc.featherhq.com/llms.txt
> Use this file to discover all available pages before exploring further.

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

> 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.



## OpenAPI

````yaml /api-reference/openapi.json get /v1/assistants/{agent_id}/revisions/{revision_id}/effective-tool-surface
openapi: 3.1.0
info:
  title: Feather API
  description: >-
    Unified customer experience platform API. Manages identity, conversations,
    memory, agents, procedures, policies, model routing, knowledge bases,
    integrations, and runtime execution.
  version: 1.87.0
servers:
  - url: https://api-sandbox.featherhq.com
    description: Sandbox
  - url: http://localhost:8000
    description: Local dev
security: []
paths:
  /v1/assistants/{agent_id}/revisions/{revision_id}/effective-tool-surface:
    get:
      tags:
        - assistants
      summary: Resolve inherited and node-local tools for a revision's flow
      description: >-
        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.
      operationId: getAssistantEffectiveToolSurface
      parameters:
        - name: agent_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Agent Id
        - name: revision_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Revision Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EffectiveToolSurfaceResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
components:
  schemas:
    EffectiveToolSurfaceResponse:
      properties:
        revision_id:
          type: string
          format: uuid
          title: Revision Id
        workflow_revision_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Workflow Revision Id
        graph_version:
          type: integer
          title: Graph Version
          default: 0
        utility_catalog:
          items:
            $ref: '#/components/schemas/UtilityCatalogEntry'
          type: array
          title: Utility Catalog
        assistant_tools:
          items:
            $ref: '#/components/schemas/EffectiveToolSurfaceEntry'
          type: array
          title: Assistant Tools
        nodes:
          items:
            $ref: '#/components/schemas/EffectiveNodeToolSurface'
          type: array
          title: Nodes
      type: object
      required:
        - revision_id
      title: EffectiveToolSurfaceResponse
      description: >-
        Backend-resolved per-AgentNode authoring surface for one assistant
        revision.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    UtilityCatalogEntry:
      properties:
        name:
          type: string
          title: Name
        canonical_key:
          type: string
          title: Canonical Key
        display_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Display Name
        description:
          type: string
          title: Description
          default: ''
        parameters:
          additionalProperties: true
          type: object
          title: Parameters
      type: object
      required:
        - name
        - canonical_key
      title: UtilityCatalogEntry
      description: >-
        One selectable utility definition, independent of any effective surface.


        Catalog entries describe what may be selected. They deliberately carry
        no provenance,

        lock state, dynamic state, or selection sources because those concepts
        exist only after

        a capability has been selected into an assistant or node surface.
    EffectiveToolSurfaceEntry:
      properties:
        name:
          type: string
          title: Name
        canonical_key:
          anyOf:
            - type: string
            - type: 'null'
          title: Canonical Key
        display_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Display Name
        mentionable:
          type: boolean
          title: Mentionable
          default: false
        description:
          type: string
          title: Description
          default: ''
        parameters:
          additionalProperties: true
          type: object
          title: Parameters
        provenance:
          type: string
          enum:
            - util
            - platform
            - ambient
            - node
            - runtime
          title: Provenance
        locked:
          type: boolean
          title: Locked
        dynamic:
          type: boolean
          title: Dynamic
          default: false
        selection_sources:
          items:
            type: string
            enum:
              - assistant_mention
              - node_mention
              - node_attachment
          type: array
          title: Selection Sources
      type: object
      required:
        - name
        - provenance
        - locked
      title: EffectiveToolSurfaceEntry
      description: >-
        One model-callable capability after all inheritance/dedup rules are
        applied.
    EffectiveNodeToolSurface:
      properties:
        node_id:
          type: string
          title: Node Id
        tools:
          items:
            $ref: '#/components/schemas/EffectiveToolSurfaceEntry'
          type: array
          title: Tools
      type: object
      required:
        - node_id
      title: EffectiveNodeToolSurface
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  securitySchemes:
    APIKeyHeader:
      type: apiKey
      in: header
      name: x-api-key

````