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

# Get Tool

> Endpoint to retrieve a tool configuration by its ID.
Checks both custom tools in the database and inbuilt tools from the registry.



## OpenAPI

````yaml https://api-prod.interactly.ai/api-docs/workflows/api.json get /workflows/v1/tools/{tool_id}
openapi: 3.1.0
info:
  title: Interactly API
  description: API for building interactly.ai services
  version: 1.1.0
  contact:
    name: Interactly
    url: https://interactly.ai
    email: developers@interactly.ai
servers:
  - url: https://api-prod.interactly.ai
    description: API Server
security: []
paths:
  /workflows/v1/tools/{tool_id}:
    get:
      tags:
        - Tools
      summary: Get Tool
      description: >-
        Endpoint to retrieve a tool configuration by its ID.

        Checks both custom tools in the database and inbuilt tools from the
        registry.
      operationId: workflow_service_get_tool_v1_tools__tool_id__get
      parameters:
        - name: tool_id
          in: path
          required: true
          schema:
            type: string
            title: Tool Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolsResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - bearer: []
components:
  schemas:
    ToolsResponse:
      properties:
        tool:
          $ref: '#/components/schemas/ToolsModel'
          description: Single tool object
      type: object
      required:
        - tool
      title: ToolsResponse
      description: |-
        Response model for a single tool.
        Contains a ToolsModel object.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ToolsModel:
      properties:
        team_id:
          anyOf:
            - type: string
            - type: 'null'
          description: ID of the team that owns this edge
        created_by:
          anyOf:
            - type: string
            - type: 'null'
          description: ID of the user who created this edge
        updated_by:
          anyOf:
            - type: string
            - type: 'null'
          description: ID of the user who last updated this edge
        created_at:
          type: string
          format: date-time
          title: Created At
        updated_at:
          type: string
          format: date-time
          title: Updated At
        _id:
          anyOf:
            - $ref: '#/components/schemas/PydanticObjectId'
            - type: 'null'
          description: MongoDB document ObjectID
        tool_config:
          anyOf:
            - oneOf:
                - $ref: '#/components/schemas/InlinePythonToolConfig'
                - $ref: '#/components/schemas/InbuiltFunctionToolConfig'
                - $ref: '#/components/schemas/ExternalAPIToolConfig'
                - $ref: '#/components/schemas/KnowledgeBaseToolConfig'
              discriminator:
                propertyName: type
                mapping:
                  external_api:
                    $ref: '#/components/schemas/ExternalAPIToolConfig'
                  inbuilt_function:
                    $ref: '#/components/schemas/InbuiltFunctionToolConfig'
                  inline_python:
                    $ref: '#/components/schemas/InlinePythonToolConfig'
                  knowledge_base:
                    $ref: '#/components/schemas/KnowledgeBaseToolConfig'
            - type: 'null'
          title: Tool Config
          description: Tool Configuration
      type: object
      title: ToolsModel
      description: >-
        Stores a tool config present in the workflow system.

        It contains configuration fields for different types of tools
        (inbuilt_function, inline_python, external_api).
    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
    PydanticObjectId:
      type: string
      maxLength: 24
      minLength: 24
      pattern: ^[0-9a-f]{24}$
      example: 5eb7cf5a86d9755df3a6c593
    InlinePythonToolConfig:
      properties:
        logical_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Tool ID
          description: Unique identifier for the tool
          input_field_disallowed: true
        tool_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Attachable Tool ID
          description: >-
            Reference to the tool already created in the Workflow System. If not
            provided, the tool config is assumed to be provided inline here.
          input_field_type: inline_python_tool_selection
        name:
          anyOf:
            - type: string
            - type: 'null'
          title: Tool Name
          description: Name for the tool
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Tool Description
          description: Human friendly description for the tool (not used by AI)
        category:
          anyOf:
            - type: string
            - type: 'null'
          title: Tool Category
          description: Category for the tool. E.g math, ehr, etc
        signature:
          anyOf:
            - type: string
            - type: 'null'
          title: Tool Signature
          description: >-
            Docstring or signature for the tool used by AI. If provided and
            there is a default signature already, it will override the default
            signature.
          input_field_type: textarea
        args_schema:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Tool Arguments Schema
          description: >-
            Schema for the arguments that the tool accepts. This should be a
            JSON schema dictionary. Information provided here will override any
            default arguments schema.
        static_messages_config:
          anyOf:
            - $ref: '#/components/schemas/StaticMessagesConfig'
            - type: 'null'
          title: Static Messages Configuration
          description: >-
            Static messages that an LLM node should emit while this tool is
            being invoked
        result_runtime_variable_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Result Runtime Variable Name
          description: Name of the runtime variable to store the result from this tool call
          default: tool_result
        ignore_content_received_during_llm_tool_call_specification:
          type: boolean
          title: Ignore content received during LLM tool call specification
          description: >-
            If true, any free-text content the LLM returns in the same response
            as a call to this tool is ignored: not emitted via
            AssistantResponseEvent, not added to chat history, and not added to
            the node's structured output. When a response contains multiple tool
            calls, the text is ignored only if every tool call targets a tool
            for which this flag is set.
          default: false
        type:
          type: string
          const: inline_python
          title: Tool Type
          description: Type of the tool. Must be 'inline_python'
          default: inline_python
          input_field_not_visible: true
        code:
          anyOf:
            - type: string
            - type: 'null'
          title: Tool Code
          description: >-
            Python code to be executed by the tool. It should define a function
            with proper signature and descriptions for its parameters.
          input_field_type: textarea
      type: object
      title: Inline Python Tool
      description: >-
        Configuration for an inline Python tool.

        The "code" field should contain a self-contained executable Python
        function.

        Example value of "code" string could be:
                def add(
                    a: float,
                    b: float,
                ) -> float:
                    return float(a + b)
    InbuiltFunctionToolConfig:
      properties:
        logical_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Tool ID
          description: Unique identifier for the tool
          input_field_disallowed: true
        tool_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Attachable Tool ID
          description: >-
            Reference to the tool already created in the Workflow System. If not
            provided, the tool config is assumed to be provided inline here.
          input_field_type: inbuilt_tool_selection
        name:
          anyOf:
            - type: string
            - type: 'null'
          title: Tool Name
          description: Name for the tool
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Tool Description
          description: Human friendly description for the tool (not used by AI)
        category:
          anyOf:
            - type: string
            - type: 'null'
          title: Tool Category
          description: Category for the tool. E.g math, ehr, etc
        signature:
          anyOf:
            - type: string
            - type: 'null'
          title: Tool Signature
          description: >-
            Docstring or signature for the tool used by AI. If provided and
            there is a default signature already, it will override the default
            signature.
          input_field_type: textarea
        args_schema:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Tool Arguments Schema
          description: >-
            Schema for the arguments that the tool accepts. This should be a
            JSON schema dictionary. Information provided here will override any
            default arguments schema.
        static_messages_config:
          anyOf:
            - $ref: '#/components/schemas/StaticMessagesConfig'
            - type: 'null'
          title: Static Messages Configuration
          description: >-
            Static messages that an LLM node should emit while this tool is
            being invoked
        result_runtime_variable_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Result Runtime Variable Name
          description: Name of the runtime variable to store the result from this tool call
          default: tool_result
        ignore_content_received_during_llm_tool_call_specification:
          type: boolean
          title: Ignore content received during LLM tool call specification
          description: >-
            If true, any free-text content the LLM returns in the same response
            as a call to this tool is ignored: not emitted via
            AssistantResponseEvent, not added to chat history, and not added to
            the node's structured output. When a response contains multiple tool
            calls, the text is ignored only if every tool call targets a tool
            for which this flag is set.
          default: false
        type:
          type: string
          const: inbuilt_function
          title: Tool Type
          description: Type of the tool. Must be 'inbuilt_function'
          default: inbuilt_function
          input_field_not_visible: true
        configurable_key:
          anyOf:
            - type: string
            - type: 'null'
          title: Configurable Tool Key
          description: >-
            Stable key identifying which configurable inbuilt tool this is (e.g.
            'call_forward'). None for plain static inbuilt references.
          input_field_not_visible: true
        extra_config:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Extra Configuration
          description: >-
            Tool-specific user configuration values. Schema is defined per
            configurable key.
          input_field_not_visible: true
      type: object
      title: Inbuilt Function Tool
      description: >-
        Configuration for an inbuilt function tool.

        This tool type refers to functions that are already registered in the
        tools registry.

        The "tool_id" field must match the ID (decorated with "@tool_id") of a
        registered tool.
    ExternalAPIToolConfig:
      properties:
        logical_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Tool ID
          description: Unique identifier for the tool
          input_field_disallowed: true
        tool_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Attachable Tool ID
          description: >-
            Reference to the tool already created in the Workflow System. If not
            provided, the tool config is assumed to be provided inline here.
          input_field_type: external_api_tool_selection
        name:
          anyOf:
            - type: string
            - type: 'null'
          title: Tool Name
          description: Name for the tool
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Tool Description
          description: Human friendly description for the tool (not used by AI)
        category:
          anyOf:
            - type: string
            - type: 'null'
          title: Tool Category
          description: Category for the tool. E.g math, ehr, etc
        signature:
          anyOf:
            - type: string
            - type: 'null'
          title: Tool Signature
          description: >-
            Docstring or signature for the tool used by AI. If provided and
            there is a default signature already, it will override the default
            signature.
          input_field_type: textarea
        args_schema:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Tool Arguments Schema
          description: >-
            Schema for the arguments that the tool accepts. This should be a
            JSON schema dictionary. Information provided here will override any
            default arguments schema.
        static_messages_config:
          anyOf:
            - $ref: '#/components/schemas/StaticMessagesConfig'
            - type: 'null'
          title: Static Messages Configuration
          description: >-
            Static messages that an LLM node should emit while this tool is
            being invoked
        result_runtime_variable_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Result Runtime Variable Name
          description: Name of the runtime variable to store the result from this tool call
          default: tool_result
        ignore_content_received_during_llm_tool_call_specification:
          type: boolean
          title: Ignore content received during LLM tool call specification
          description: >-
            If true, any free-text content the LLM returns in the same response
            as a call to this tool is ignored: not emitted via
            AssistantResponseEvent, not added to chat history, and not added to
            the node's structured output. When a response contains multiple tool
            calls, the text is ignored only if every tool call targets a tool
            for which this flag is set.
          default: false
        type:
          type: string
          const: external_api
          title: Tool Type
          description: Type of the tool. Must be 'external_api'
          default: external_api
          input_field_not_visible: true
        api_endpoint:
          anyOf:
            - type: string
            - type: 'null'
          title: API Endpoint
          description: The endpoint URL of the external API
        api_method:
          anyOf:
            - $ref: '#/components/schemas/APIMethodType'
            - type: 'null'
          title: API Method
          description: HTTP method to use for the API call (e.g., GET, POST)
          default: GET
        api_headers:
          additionalProperties:
            type: string
          type: object
          title: API Headers
          description: >-
            HTTP headers to include with the API request (e.g., authorization,
            content-type)
          default: {}
        api_body:
          anyOf:
            - additionalProperties: true
              type: object
            - type: string
            - type: 'null'
          title: API Request Body
          description: >-
            The request body payload for the API call. Usually applicable for
            POST/PUT methods.
          input_field_type: textarea
      type: object
      title: External API Tool
      description: >-
        Configuration for an external API tool.

        This tool type represents an external API endpoint that the LLM can
        call.
    KnowledgeBaseToolConfig:
      properties:
        logical_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Tool ID
          description: Unique identifier for the tool
          input_field_disallowed: true
        tool_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Attachable Tool ID
          description: >-
            Reference to the tool already created in the Workflow System. If not
            provided, the tool config is assumed to be provided inline here.
          input_field_type: kb_tool_selection
        name:
          anyOf:
            - type: string
            - type: 'null'
          title: Tool Name
          description: Name for the tool
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Tool Description
          description: Human friendly description for the tool (not used by AI)
        category:
          anyOf:
            - type: string
            - type: 'null'
          title: Tool Category
          description: Category for the tool. E.g math, ehr, etc
          default: Knowledge Base
        signature:
          anyOf:
            - type: string
            - type: 'null'
          title: Tool Signature
          description: >-
            Docstring or signature for the tool used by AI. If provided and
            there is a default signature already, it will override the default
            signature.
          default: >-
            Searches the knowledge bases given a natural language query and
            retrieves relevant chunks of information matching the query.
          input_field_type: textarea
        args_schema:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Tool Arguments Schema
          description: >-
            Schema for the arguments that the tool accepts. This should be a
            JSON schema dictionary. Information provided here will override any
            default arguments schema.
          field_visibility_level: super_admin
          input_field_not_visible: true
        static_messages_config:
          anyOf:
            - $ref: '#/components/schemas/StaticMessagesConfig'
            - type: 'null'
          title: Static Messages Configuration
          description: >-
            Static messages that an LLM node should emit while this tool is
            being invoked
        result_runtime_variable_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Result Runtime Variable Name
          description: Name of the runtime variable to store the result from this tool call
          default: kb_tool_result
        ignore_content_received_during_llm_tool_call_specification:
          type: boolean
          title: Ignore content received during LLM tool call specification
          description: >-
            If true, any free-text content the LLM returns in the same response
            as a call to this tool is ignored: not emitted via
            AssistantResponseEvent, not added to chat history, and not added to
            the node's structured output. When a response contains multiple tool
            calls, the text is ignored only if every tool call targets a tool
            for which this flag is set.
          default: false
        type:
          type: string
          const: knowledge_base
          title: Tool Type
          description: Type of the tool. Must be 'knowledge_base'
          default: knowledge_base
          input_field_not_visible: true
        target_knowledge_base_ids:
          items:
            type: string
          type: array
          title: Target Knowledge Base IDs
          description: The IDs of the knowledge bases to query
          input_field_type: knowledge_base_selection
      type: object
      title: Knowledge Base Tool
      description: >-
        Configuration for a knowledge base tool.

        This tool type represents a knowledge base endpoint that the LLM can
        call.
    StaticMessagesConfig:
      properties:
        static_messages:
          items:
            type: string
          type: array
          title: Static Messages
          description: List of pre-configured messages from which one will be emitted
        static_messages_selection_mode:
          anyOf:
            - $ref: '#/components/schemas/SelectionMode'
            - type: 'null'
          title: Static Messages Selection Mode
          description: Selection mode for static messages
          default: random
      type: object
      title: StaticMessagesConfig
    APIMethodType:
      type: string
      enum:
        - GET
        - POST
        - PUT
        - DELETE
      title: APIMethodType
      description: Enumeration of HTTP methods for API calls.
    SelectionMode:
      type: string
      enum:
        - random
        - sequence
      title: SelectionMode
  securitySchemes:
    bearer:
      scheme: bearer
      bearerFormat: Bearer
      type: http
      description: >-
        Retrieve your API Key from [Dashboard API Keys
        Section](https://dashboard.interactly.ai/api-keys).

````