Arcade Tools API

List, inspect, authorize, execute, and schedule Arcade tools. Tools are user-scoped agent actions addressed by fully qualified name (Toolkit.Name@version) and executed against a stable user_id with Arcade-managed authorization tokens.

Arcade Tools API is one of 9 APIs that arcade-dev publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 1 machine-runnable capability that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko and 3 JSON Schema definitions.

Tagged areas include Tools, Agents, AI, and Execution. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, sample payloads, 1 Naftiko capability spec, and 3 JSON Schemas.

OpenAPI Specification

arcade-tools-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  description: Define, list, authorize, execute, and schedule agent tools. Includes tool requirements inspection and formatted
    tool descriptors for LLM consumption.
  title: Arcade Tools API
  contact:
    name: Arcade
    url: https://arcade.dev
    email: [email protected]
  version: 0.1.0
paths:
  /v1/formatted_tools:
    get:
      security:
      - Bearer: []
      - Bearer: []
      description: Returns a page of tools from the engine configuration, optionally filtered by toolkit, formatted for a
        specific provider
      tags:
      - Tools
      summary: List Formatted Static Tools
      operationId: tools-list-formatted
      parameters:
      - description: Toolkit name
        name: toolkit
        in: query
        schema:
          type: string
      - description: 'Number of items to return (default: 25, max: 100)'
        name: limit
        in: query
        schema:
          type: integer
      - description: 'Offset from the start of the list (default: 0)'
        name: offset
        in: query
        schema:
          type: integer
      - description: Provider format
        name: format
        in: query
        schema:
          type: string
      - description: User ID
        name: user_id
        in: query
        schema:
          type: string
      - description: Include all versions of each tool
        name: include_all_versions
        in: query
        schema:
          type: boolean
      - description: 'JSON metadata filter. Array fields (service_domains, operations): shorthand array or object with any_of/all_of/none_of
          operators (case-insensitive). Boolean fields: read_only, destructive, idempotent, open_world. Extras: case-sensitive
          key-value subset match.'
        name: filter
        in: query
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.OffsetPage-schemas_ArbitraryObject'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '415':
          description: Unsupported Media Type
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
  /v1/formatted_tools/{name}:
    get:
      security:
      - Bearer: []
      description: Returns the formatted tool specification for a specific tool, given a provider
      tags:
      - Tools
      summary: Get Formatted Tool Specification
      operationId: tool-spec-formatted
      parameters:
      - description: Tool name
        name: name
        in: path
        required: true
        schema:
          type: string
      - description: Provider format
        name: format
        in: query
        schema:
          type: string
      - description: User ID
        name: user_id
        in: query
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.ArbitraryObject'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '415':
          description: Unsupported Media Type
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
  /v1/scheduled_tools:
    get:
      security:
      - Bearer: []
      description: Returns a page of scheduled tool executions
      tags:
      - Tools
      summary: List Scheduled Tool Executions
      operationId: tool-scheduled-list
      parameters:
      - description: 'Number of items to return (default: 25, max: 100)'
        name: limit
        in: query
        schema:
          type: integer
      - description: 'Offset from the start of the list (default: 0)'
        name: offset
        in: query
        schema:
          type: integer
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.OffsetPage-schemas_ToolExecutionListResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '415':
          description: Unsupported Media Type
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
  /v1/scheduled_tools/{id}:
    get:
      security:
      - Bearer: []
      description: Returns the details for a specific scheduled tool execution
      tags:
      - Tools
      summary: Get Scheduled Tool Execution Details
      operationId: tool-scheduled-get
      parameters:
      - description: Scheduled execution ID
        name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.ToolExecutionDetailResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '415':
          description: Unsupported Media Type
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
  /v1/tools:
    get:
      security:
      - Bearer: []
      - Bearer: []
      description: Returns a page of tools from the engine configuration, optionally filtered by toolkit and/or metadata
      tags:
      - Tools
      summary: List Static Tools
      operationId: tools-list-static
      parameters:
      - description: Toolkit name
        name: toolkit
        in: query
        schema:
          type: string
      - description: 'Number of items to return (default: 25, max: 100)'
        name: limit
        in: query
        schema:
          type: integer
      - description: 'Offset from the start of the list (default: 0)'
        name: offset
        in: query
        schema:
          type: integer
      - description: Comma separated tool formats that will be included in the response.
        name: include_format
        in: query
        style: form
        explode: false
        schema:
          type: array
          items:
            enum:
            - arcade
            - openai
            - anthropic
            type: string
      - description: User ID
        name: user_id
        in: query
        schema:
          type: string
      - description: Include all versions of each tool
        name: include_all_versions
        in: query
        schema:
          type: boolean
      - description: 'JSON metadata filter. Array fields (service_domains, operations): shorthand array or object with any_of/all_of/none_of
          operators (case-insensitive). Boolean fields: read_only, destructive, idempotent, open_world. Extras: case-sensitive
          key-value subset match.'
        name: filter
        in: query
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.OffsetPage-schemas_ToolResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '415':
          description: Unsupported Media Type
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
  /v1/tools/authorize:
    post:
      security:
      - Bearer: []
      - Bearer: []
      description: Authorizes a user for a specific tool by name
      tags:
      - Tools
      summary: Authorize Tool
      operationId: tool-authorize
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/schemas.AuthorizeToolRequest'
        description: Tool authorization request
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/auth.AuthorizationResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '415':
          description: Unsupported Media Type
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
  /v1/tools/execute:
    post:
      security:
      - Bearer: []
      - Bearer: []
      description: Executes a tool by name and arguments
      tags:
      - Tools
      summary: Execute Tool
      operationId: tool-execute
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/schemas.ExecuteToolRequest'
        description: Tool execution request
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.ExecuteToolResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '415':
          description: Unsupported Media Type
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
  /v1/tools/requirements:
    post:
      security:
      - Bearer: []
      description: Checks authorization and secret requirements for multiple tools. Optionally starts OAuth flows for unmet
        auth requirements.
      tags:
      - Tools
      summary: Check Tool Requirements
      operationId: tool-requirements
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/schemas.ToolRequirementsRequest'
        description: Tool requirements request
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.ToolRequirementsResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '415':
          description: Unsupported Media Type
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
  /v1/tools/{name}:
    get:
      security:
      - Bearer: []
      description: Returns the arcade tool specification for a specific tool
      tags:
      - Tools
      summary: Get Arcade Tool Specification
      operationId: tool-spec
      parameters:
      - description: Tool name
        name: name
        in: path
        required: true
        schema:
          type: string
      - description: Comma separated tool formats that will be included in the response.
        name: include_format
        in: query
        style: form
        explode: false
        schema:
          type: array
          items:
            enum:
            - arcade
            - openai
            - anthropic
            type: string
      - description: User ID
        name: user_id
        in: query
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.ToolResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '415':
          description: Unsupported Media Type
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas.Error'
externalDocs:
  description: Documentation
  url: https://docs.arcade.dev
servers:
- url: https://api.arcade.dev
components:
  securitySchemes:
    Bearer:
      description: 'Enter your API key or API token in the format: Bearer <token>'
      type: apiKey
      name: Authorization
      in: header
  schemas:
    auth.AuthorizationContext:
      type: object
      properties:
        token:
          type: string
        user_info:
          type: object
          additionalProperties: true
    auth.AuthorizationResponse:
      type: object
      properties:
        context:
          $ref: '#/components/schemas/auth.AuthorizationContext'
        id:
          type: string
        provider_id:
          type: string
        scopes:
          type: array
          items:
            type: string
        status:
          default: pending
          allOf:
          - $ref: '#/components/schemas/auth.AuthorizationStatus'
        url:
          type: string
        user_id:
          type: string
    auth.AuthorizationStatus:
      type: string
      enum:
      - not_started
      - pending
      - completed
      - failed
      x-enum-varnames:
      - StatusNotStarted
      - StatusPending
      - StatusCompleted
      - StatusFailed
    auth.Status:
      type: string
      enum:
      - active
      - inactive
      x-enum-varnames:
      - StatusActive
      - StatusInactive
    schemas.ArbitraryObject:
      type: object
      additionalProperties: true
    schemas.AuthorizationRequirement:
      type: object
      properties:
        id:
          type: string
        oauth2:
          $ref: '#/components/schemas/schemas.OAuth2AuthorizationRequirement'
        provider_id:
          type: string
        provider_type:
          type: string
        status:
          default: disabled
          allOf:
          - $ref: '#/components/schemas/auth.Status'
        status_reason:
          type: string
        token_status:
          $ref: '#/components/schemas/auth.AuthorizationStatus'
    schemas.AuthorizationRequirementResult:
      type: object
      properties:
        authorization_id:
          type: string
        met:
          type: boolean
        provider_id:
          type: string
        provider_type:
          type: string
        scopes:
          type: array
          items:
            type: string
        status:
          $ref: '#/components/schemas/auth.Status'
        token_status:
          $ref: '#/components/schemas/auth.AuthorizationStatus'
        tool_names:
          type: array
          items:
            type: string
        url:
          type: string
    schemas.AuthorizationRequirementsInfo:
      type: object
      properties:
        items:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/schemas.AuthorizationRequirementResult'
        met:
          type: boolean
    schemas.AuthorizeToolRequest:
      type: object
      required:
      - tool_name
      properties:
        next_uri:
          description: 'Optional: if provided, the user will be redirected to this URI after authorization'
          type: string
        tool_name:
          type: string
        tool_version:
          description: 'Optional: if not provided, any version is used'
          type: string
        user_id:
          description: Required only when calling with an API key
          type: string
    schemas.Error:
      type: object
      properties:
        message:
          type: string
        name:
          type: string
    schemas.ExecuteToolRequest:
      type: object
      required:
      - tool_name
      properties:
        include_error_stacktrace:
          description: Whether to include the error stacktrace in the response. If not provided, the error stacktrace is not
            included.
          type: boolean
        input:
          description: JSON input to the tool, if any
          allOf:
          - $ref: '#/components/schemas/tool.RawInputs'
        run_at:
          description: 'The time at which the tool should be run (optional). If not provided, the tool is run immediately.
            Format ISO 8601: YYYY-MM-DDTHH:MM:SS'
          type: string
        tool_name:
          type: string
        tool_version:
          description: The tool version to use (optional). If not provided, any version is used
          type: string
        user_id:
          type: string
    schemas.ExecuteToolResponse:
      type: object
      properties:
        duration:
          type: number
        execution_id:
          type: string
        execution_type:
          type: string
        finished_at:
          type: string
        id:
          type: string
        output:
          $ref: '#/components/schemas/tool.ResponseOutput'
        run_at:
          type: string
        status:
          type: string
        success:
          description: 'Whether the request was successful.

            For immediately-executed requests, this will be true if the tool call succeeded.

            For scheduled requests, this will be true if the request was scheduled successfully.'
          type: boolean
    schemas.Input:
      type: object
      properties:
        parameters:
          type: array
          minItems: 0
          items:
            $ref: '#/components/schemas/schemas.Parameter'
    schemas.OAuth2AuthorizationRequirement:
      type: object
      properties:
        scopes:
          type: array
          items:
            type: string
    schemas.OffsetPage-schemas_ArbitraryObject:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/schemas.ArbitraryObject'
        limit:
          type: integer
        offset:
          type: integer
        page_count:
          type: integer
        total_count:
          type: integer
    schemas.OffsetPage-schemas_ToolExecutionListResponse:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/schemas.ToolExecutionListResponse'
        limit:
          type: integer
        offset:
          type: integer
        page_count:
          type: integer
        total_count:
          type: integer
    schemas.OffsetPage-schemas_ToolResponse:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/schemas.ToolResponse'
        limit:
          type: integer
        offset:
          type: integer
        page_count:
          type: integer
        total_count:
          type: integer
    schemas.Output:
      type: object
      properties:
        available_modes:
          type: array
          items:
            type: string
        description:
          type: string
        value_schema:
          $ref: '#/components/schemas/schemas.ValueSchema'
    schemas.Parameter:
      type: object
      required:
      - name
      - value_schema
      properties:
        description:
          type: string
        inferrable:
          type: boolean
          default: true
        name:
          type: string
        required:
          type: boolean
        value_schema:
          $ref: '#/components/schemas/schemas.ValueSchema'
    schemas.Requirements:
      type: object
      properties:
        authorization:
          $ref: '#/components/schemas/schemas.AuthorizationRequirement'
        met:
          type: boolean
          default: false
        secrets:
          type: array
          items:
            $ref: '#/components/schemas/schemas.SecretRequirement'
    schemas.SecretRequirement:
      type: object
      required:
      - key
      properties:
        key:
          type: string
        met:
          type: boolean
          default: false
        status_reason:
          type: string
    schemas.SecretRequirementResult:
      type: object
      properties:
        met:
          type: boolean
        status_reason:
          type: string
        tool_names:
          type: array
          items:
            type: string
    schemas.SecretRequirementsInfo:
      type: object
      properties:
        items:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/schemas.SecretRequirementResult'
        met:
          type: boolean
    schemas.ToolExecutionAttemptResponse:
      type: object
      properties:
        finished_at:
          type: string
        id:
          type: string
        output:
          $ref: '#/components/schemas/tool.ResponseOutput'
        started_at:
          type: string
        success:
          type: boolean
        system_error_message:
          type: string
    schemas.ToolExecutionDetailResponse:
      type: object
      properties:
        attempts:
          type: array
          items:
            $ref: '#/components/schemas/schemas.ToolExecutionAttemptResponse'
        created_at:
          type: string
        execution_status:
          type: string
        execution_type:
          type: string
        finished_at:
          type: string
        id:
          type: string
        input:
          $ref: '#/components/schemas/tool.RawInputs'
        run_at:
          type: string
        started_at:
          type: string
        tool_name:
          type: string
        toolkit_name:
          type: string
        toolkit_version:
          type: string
        updated_at:
          type: string
        user_id:
          type: string
    schemas.ToolExecutionListResponse:
      type: object
      properties:
        created_at:
          type: string
        execution_status:
          type: string
        execution_type:
          type: string
        finished_at:
          type: string
        id:
          type: string
        run_at:
          type: string
        started_at:
          type: string
        tool_name:
          type: string
        toolkit_name:
          type: string
        toolkit_version:
          type: string
        updated_at:
          type: string
        user_id:
          type: string
    schemas.ToolRef:
      type: object
      required:
      - tool_name
      properties:
        tool_name:
          type: string
        tool_version:
          type: string
    schemas.ToolRequirementsRequest:
      type: object
      properties:
        authorize:
          type: boolean
        tool_names:
          type: array
          items:
            type: string
        tools:
          type: array
          items:
            $ref: '#/components/schemas/schemas.ToolRef'
        user_id:
          type: string
    schemas.ToolRequirementsResponse:
      type: object
      properties:
        authorization:
          $ref: '#/components/schemas/schemas.AuthorizationRequirementsInfo'
        met:
          type: boolean
        secrets:
          $ref: '#/components/schemas/schemas.SecretRequirementsInfo'
    schemas.ToolResponse:
      type: object
      required:
      - fully_qualified_name
      - input
      - name
      - qualified_name
      - toolkit
      properties:
        description:
          type: string
        formatted_schema:
          type: object
          additionalProperties: {}
        fully_qualified_name:
          type: string
        input:
          $ref: '#/components/schemas/schemas.Input'
        metadata:
          $ref: '#/components/schemas/tool.ToolMetadata'
        name:
          type: string
        output:
          $ref: '#/components/schemas/schemas.Output'
        qualified_name:
          type: string
        requirements:
          $ref: '#/components/schemas/schemas.Requirements'
        toolkit:
          $ref: '#/components/schemas/schemas.ToolkitResponse'
    schemas.ToolkitResponse:
      type: object
      required:
      - name
      properties:
        description:
          type: string
        name:
          type: string
        version:
          type: string
    schemas.ValueSchema:
      type: object
      required:
      - val_type
      properties:
        enum:
          type: array
          items:
            type: string
        inner_val_type:
          type: string
        val_type:
          type: string
    tool.Behavior:
      type: object
      properties:
        destructive:
          type: boolean
        idempotent:
          type: boolean
        open_world:
          type: boolean
        operations:
          type: array
          items:
            type: string
        read_only:
          type: boolean
    tool.Classification:
      type: object
      properties:
        service_domains:
          type: array
          items:
            type: string
    tool.Error:
      type: object
      required:
      - can_retry
      - kind
      - message
      properties:
        additional_prompt_content:
          type: string
        can_retry:
          type: boolean
        developer_message:
          type: string
        extra:
          type: object
          additionalProperties: {}
        kind:
          $ref: '#/components/schemas/tool.ErrorKind'
        message:
          type: string
        retry_after_ms:
          type: integer
        stacktrace:
          type: string
        status_code:
          type: integer
    tool.ErrorKind:
      type: string
      enum:
      - TOOLKIT_LOAD_FAILED
      - TOOL_DEFINITION_BAD_DEFINITION
      - TOOL_DEFINITION_BAD_INPUT_SCHEMA
      - TOOL_DEFINITION_BAD_OUTPUT_SCHEMA
      - TOOL_REQUIREMENTS_NOT_MET
      - TOOL_RUNTIME_BAD_INPUT_VALUE
      - TOOL_RUNTIME_BAD_OUTPUT_VALUE
      - TOOL_RUNTIME_RETRY
      - TOOL_RUNTIME_CONTEXT_REQUIRED
      - TOOL_RUNTIME_FATAL
      - CONTEXT_CHECK_FAILED
      - CONTEXT_DENIED
      - UPSTREAM_RUNTIME_BAD_REQUEST
      - UPSTREAM_RUNTIME_AUTH_ERROR
      - UPSTREAM_RUNTIME_NOT_FOUND
      - UPSTREAM_RUNTIME_VALIDATION_ERROR
      - UPSTREAM_RUNTIME_RATE_LIMIT
      - UPSTREAM_RUNTIME_SERVER_ERROR
      - UPSTREAM_RUNTIME_UNMAPPED
      - NETWORK_TRANSPORT_RUNTIME_TIMEOUT
      - NETWORK_TRANSPORT_RUNTIME_UNREACHABLE
      - NETWORK_TRANSPORT_RUNTIME_UNMAPPED
      - UNKNOWN
      x-enum-varnames:
      - ErrorKindToolkitLoadFailed
      - ErrorKindToolDefinitionBadDefinition
      - ErrorKindToolDefinitionBadInputSchema
      - ErrorKindToolDefinitionBadOutputSchema
      - ErrorKindToolRequirementsNotMet
      - ErrorKindToolRuntimeBadInputValue
      - ErrorKindToolRuntimeBadOutputValue
      - ErrorKindToolRuntimeRetry
      - ErrorKindToolRuntimeContextRequired
      - ErrorKindToolRuntimeFatal
      - ErrorKindContextCheckFailed
      - ErrorKindContextDenied
      - ErrorKindUpstreamRuntimeBadRequest
      - ErrorKindUpstreamRuntimeAuthError
      - ErrorKindUpstreamRuntimeNotFound
      - ErrorKindUpstreamRuntimeValidationError
      - ErrorKindUpstreamRuntimeRateLimit
      - ErrorKindUpstreamRuntimeServerError
      - ErrorKindUpstreamRuntimeUnmapped
      - ErrorKindNetworkTransportRuntimeTimeout
      - ErrorKindNetworkTransportRuntimeUnreachable
      - ErrorKindNetworkTransportRuntimeUnmapped
      - ErrorKindUnknown
    tool.Log:
      type: object
      required:
      - level
      - message
      properties:
        level:
          type: string
        message:
          type: string
        subtype:
          type: string
    tool.RawInputs:
      type: object
      additionalProperties: true
    tool.ResponseOutput:
      type: object
      properties:
        authorization:
          $ref: '#/components/schemas/auth.AuthorizationResponse'
        error:
          $ref: '#/components/schemas/tool.Error'
        logs:
          type: array
          items:
            $ref: '#/components/schemas/tool.Log'
        value: {}
    tool.ToolMetadata:
      type: object
      properties:
        behavior:
          $ref: '#/components/schemas/tool.Behavior'
        classification:
          $ref: '#/components/schemas/tool.Classification'
        extras:
          type: object
          additionalProperties: {}