Fixie tools API

The tools API from Fixie — 4 operation(s) for tools.

Operations 7

GET /api/tools #
POST /api/tools #
GET /api/tools/{tool_id} #
PUT /api/tools/{tool_id} #
DELETE /api/tools/{tool_id} #
GET /api/tools/{tool_id}/history #
POST /api/tools/{tool_id}/test #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/fixie-tools-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

fixie-tools-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Ultravox accounts Tools API
  version: 0.1.0
  description: API for the Ultravox service.
servers:
- url: https://api.ultravox.ai
tags:
- name: tools
paths:
  /api/tools:
    get:
      operationId: tools_list
      description: List tools available to your account.
      parameters:
      - name: cursor
        required: false
        in: query
        description: The pagination cursor value.
        schema:
          type: string
      - in: query
        name: ownership
        schema:
          enum:
          - private
          - public
          type: string
          minLength: 1
        description: 'The ownership used to filter results.


          * `private` - Only private tools

          * `public` - Only public tools'
      - name: pageSize
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      - in: query
        name: search
        schema:
          type: string
          minLength: 1
        description: The search string used to filter results.
      - in: query
        name: sortOrder
        schema:
          enum:
          - display
          - alphabetic
          - reverseAlphabetic
          - chronologic
          - reverseChronologic
          - default
          type: string
          default: default
          minLength: 1
        description: 'How results should be ordered. If a cursor is provided, this parameter must match the sortOrder used in the previous request for results to be sensible.


          * `display` - Display order. Public tools by name first, then private tools with most recent first.

          * `alphabetic` - Name ascending

          * `reverseAlphabetic` - Name descending

          * `chronologic` - Creation order with oldest first.

          * `reverseChronologic` - Creation order with newest first.

          * `default` - Default ordering. Same as reverseChronologic but with private tools first.'
      tags:
      - tools
      security:
      - apiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedToolList'
          description: ''
    post:
      operationId: tools_create
      tags:
      - tools
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Tool'
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
                  description: An OpenAPI schema file in either JSON or YAML format.
              required:
              - file
      security:
      - apiKeyAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Tool'
          description: ''
  /api/tools/{tool_id}:
    get:
      operationId: tools_retrieve
      parameters:
      - in: path
        name: tool_id
        schema:
          type: string
          format: uuid
        required: true
      tags:
      - tools
      security:
      - apiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Tool'
          description: ''
    put:
      operationId: tools_update
      parameters:
      - in: path
        name: tool_id
        schema:
          type: string
          format: uuid
        required: true
      tags:
      - tools
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Tool'
        required: true
      security:
      - apiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Tool'
          description: ''
    delete:
      operationId: tools_destroy
      parameters:
      - in: path
        name: tool_id
        schema:
          type: string
          format: uuid
        required: true
      tags:
      - tools
      security:
      - apiKeyAuth: []
      responses:
        '204':
          description: No response body
  /api/tools/{tool_id}/history:
    get:
      operationId: tools_history_list
      parameters:
      - name: cursor
        required: false
        in: query
        description: The pagination cursor value.
        schema:
          type: string
      - name: pageSize
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      - in: path
        name: tool_id
        schema:
          type: string
          format: uuid
        required: true
      tags:
      - tools
      security:
      - apiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedToolHistoryList'
          description: ''
  /api/tools/{tool_id}/test:
    post:
      operationId: tools_test_create
      description: Test a tool by executing it with the provided parameters.
      parameters:
      - in: path
        name: tool_id
        schema:
          type: string
          format: uuid
        required: true
      tags:
      - tools
      security:
      - apiKeyAuth: []
      responses:
        default:
          content:
            '*/*':
              schema: {}
          description: ''
components:
  schemas:
    ultravox.v1.PlivoMedium_OutgoingRequestParams:
      type: object
      properties:
        to:
          type: string
          description: The phone number(s) or sip URI(s) to call, separated by `<` if multiple.
        from:
          type: string
          description: The phone number initiating the call, in E.164 format (e.g. +14155552671).
        additionalParams:
          type: object
          description: "Additional parameters to include in the Plivo call creation request.\n See https://www.plivo.com/docs/voice/api/call/make-a-call"
      description: Parameters for a Plivo call creation request.
    ultravox.v1.SecurityRequirements:
      type: object
      properties:
        requirements:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/ultravox.v1.SecurityRequirement'
          description: Requirements keyed by name.
        ultravoxCallTokenRequirement:
          allOf:
          - $ref: '#/components/schemas/ultravox.v1.UltravoxCallTokenRequirement'
          description: "An additional special security requirement that can be automatically fulfilled\n during call creation. If a tool has this requirement set, a token identifying\n the call and relevant scopes will be created during call creation and set as\n an X-Ultravox-Call-Token header when the tool is invoked.\n Such tokens are only verifiable by the Ultravox service and primarily exist\n for built-in tools (though it's possible for third-party tools that wrap a\n built-in tool to make use of them as well)."
      description: The security requirements for a request. All requirements must be met.
    ultravox.v1.LmntVoice:
      type: object
      properties:
        voiceId:
          type: string
          description: The ID of the voice in LMNT.
        model:
          type: string
          description: The LMNT model to use.
        speed:
          type: number
          description: "The speaking rate. Must be between 0.25 and 2. Defaults to 1.\n See https://docs.lmnt.com/api-reference/speech/synthesize-speech-bytes#body-speed"
          format: float
        conversational:
          type: boolean
          description: See https://docs.lmnt.com/api-reference/speech/synthesize-speech-bytes#body-conversational
      description: Specification for a voice served by LMNT.
    ultravox.v1.GoogleVoice:
      type: object
      properties:
        voiceId:
          type: string
          description: The ID (name) of the voice in Google, e.g. "en-US-Chirp3-HD-Charon".
        speakingRate:
          type: number
          description: "The speaking rate. Must be between 0.25 and 2. Defaults to 1.\n See https://cloud.google.com/python/docs/reference/texttospeech/latest/google.cloud.texttospeech_v1.types.StreamingAudioConfig"
          format: float
      description: "Specification for a voice served by Google.\n This implementation uses bidirectional streaming, so voices prior to Chirp3 are not supported."
    TerminationReasonEnum:
      enum:
      - SIP_TERMINATION_NORMAL
      - SIP_TERMINATION_INVALID_NUMBER
      - SIP_TERMINATION_TIMEOUT
      - SIP_TERMINATION_DESTINATION_UNAVAILABLE
      - SIP_TERMINATION_BUSY
      - SIP_TERMINATION_CANCELED
      - SIP_TERMINATION_REJECTED
      - SIP_TERMINATION_UNKNOWN
      type: string
    ultravox.v1.Callbacks:
      type: object
      properties:
        joined:
          allOf:
          - $ref: '#/components/schemas/ultravox.v1.Callback'
          description: Callback invoked when the call is joined.
        ended:
          allOf:
          - $ref: '#/components/schemas/ultravox.v1.Callback'
          description: Callback invoked when the call has ended.
        billed:
          allOf:
          - $ref: '#/components/schemas/ultravox.v1.Callback'
          description: Callback invoked when the call is billed.
      description: Configuration for call lifecycle callbacks.
    ultravox.v1.ElevenLabsVoice:
      type: object
      properties:
        voiceId:
          type: string
          description: The ID of the voice in ElevenLabs.
        model:
          type: string
          description: The ElevenLabs model to use.
        speed:
          type: number
          description: "The speaking rate. Must be between 0.7 and 1.2. Defaults to 1.\n See https://elevenlabs.io/docs/api-reference/text-to-speech/convert#request.body.voice_settings.speed"
          format: float
        useSpeakerBoost:
          type: boolean
          description: See https://elevenlabs.io/docs/api-reference/text-to-speech/convert#request.body.voice_settings.use_speaker_boost
        style:
          type: number
          description: See https://elevenlabs.io/docs/api-reference/text-to-speech/convert#request.body.voice_settings.style
          format: float
        similarityBoost:
          type: number
          description: See https://elevenlabs.io/docs/api-reference/text-to-speech/convert#request.body.voice_settings.similarity_boost
          format: float
        stability:
          type: number
          description: See https://elevenlabs.io/docs/api-reference/text-to-speech/convert#request.body.voice_settings.stability
          format: float
        pronunciationDictionaries:
          type: array
          items:
            $ref: '#/components/schemas/ultravox.v1.ElevenLabsVoice_PronunciationDictionaryReference'
          description: See https://elevenlabs.io/docs/api-reference/text-to-speech/convert#request.body.pronunciation_dictionary_locators
        optimizeStreamingLatency:
          type: integer
          description: See https://elevenlabs.io/docs/api-reference/text-to-speech/convert#request.query.optimize_streaming_latency.optimize_streaming_latency
          format: int32
        maxSampleRate:
          type: integer
          description: "The maximum sample rate Ultravox will try to use. ElevenLabs limits your allowed sample rate\n based on your tier. See https://elevenlabs.io/pricing#pricing-table (and click \"Show API details\")"
          format: int32
        enableSsmlParsing:
          type: boolean
          description: See https://elevenlabs.io/docs/api-reference/text-to-speech/v-1-text-to-speech-voice-id-stream-input#request.query.enable_ssml_parsing
      description: Specification for a voice served by ElevenLabs.
    ultravox.v1.RespeecherVoice:
      type: object
      properties:
        voiceId:
          type: string
          description: The ID of the voice in Respeecher.
        model:
          type: string
          description: "The model to use, e.g. \"/v1/public/tts/ua-rt\" or \"/v1/public/tts/en-rt\"\n Requests will be sent to wss://api.respeecher.com{model}/tts/websocket.\n If not set, defaults to \"/v1/public/tts/en-rt\" for calls with an English\n language hint and \"/v1/public/tts/ua-rt\" otherwise."
        seed:
          type: integer
          description: Random seed for reproducible generation.
          format: int32
        temperature:
          type: number
          description: "Controls randomness of the output. Higher values produce more varied speech.\n If set, must be greater than or equal to 0.0."
          format: float
        topK:
          type: integer
          description: "Limits sampling to the top K most likely tokens.\n If set, must be exactly -1 or greater than 0."
          format: int32
        topP:
          type: number
          description: "Limits sampling to tokens with cumulative probability up to this value.\n If set, must be greater than 0 and less than or equal to 1.0."
          format: float
        minP:
          type: number
          description: "Minimum probability threshold for token sampling.\n If set, must be between 0.0 and 1.0, inclusive."
          format: float
        presencePenalty:
          type: number
          description: "Penalty for tokens already present in the context.\n If set, must be between 0 and 2, inclusive."
          format: float
        repetitionPenalty:
          type: number
          description: "Penalty for repeating tokens.\n If set, must be between 1 and 2, inclusive."
          format: float
        frequencyPenalty:
          type: number
          description: "Penalty based on token frequency.\n If set, must be between 0 and 2, inclusive."
          format: float
      description: "Specification for a voice served by Respeecher.\n See https://space.respeecher.com/docs/api/tts/sampling-params-guide\n for parameter guidance."
    ultravox.v1.SipMedium_SipIncoming:
      type: object
      properties: {}
      description: Details for an incoming SIP call.
    ultravox.v1.AutomaticParameter:
      type: object
      properties:
        name:
          type: string
          description: The name of the parameter.
        location:
          enum:
          - PARAMETER_LOCATION_UNSPECIFIED
          - PARAMETER_LOCATION_QUERY
          - PARAMETER_LOCATION_PATH
          - PARAMETER_LOCATION_HEADER
          - PARAMETER_LOCATION_BODY
          type: string
          description: Where the parameter is used.
          format: enum
        knownValue:
          enum:
          - KNOWN_PARAM_UNSPECIFIED
          - KNOWN_PARAM_CALL_ID
          - KNOWN_PARAM_CONVERSATION_HISTORY
          - KNOWN_PARAM_OUTPUT_SAMPLE_RATE
          - KNOWN_PARAM_CALL_STATE
          - KNOWN_PARAM_CALL_STAGE_ID
          - KNOWN_PARAM_THREAD_ID
          - KNOWN_PARAM_THREAD_STATES
          - KNOWN_PARAM_CALL_METADATA
          type: string
          description: The value to set for the parameter.
          format: enum
      description: A parameter that is automatically set by the system.
    AgentBasic:
      type: object
      properties:
        agentId:
          type: string
          format: uuid
          readOnly: true
        name:
          type: string
          readOnly: true
      required:
      - agentId
      - name
    ultravox.v1.VadSettings:
      type: object
      properties:
        turnEndpointDelay:
          pattern: ^-?(?:0|[1-9][0-9]{0,11})(?:\.[0-9]{1,9})?s$
          type: string
          description: "The minimum amount of time the agent will wait to respond after the user seems to be done\n speaking. Increasing this value will make the agent less eager to respond, which may increase\n perceived response latency but will also make the agent less likely to jump in before the user\n is really done speaking.\n\n Built-in VAD currently operates on 32ms frames, so only multiples of 32ms are meaningful.\n (Anything from 1ms to 31ms will produce the same result.)\n\n Defaults to \"0.384s\" (384ms) as a starting point, but there's nothing special about this value\n aside from it corresponding to 12 VAD frames."
        minimumTurnDuration:
          pattern: ^-?(?:0|[1-9][0-9]{0,11})(?:\.[0-9]{1,9})?s$
          type: string
          description: "The minimum duration of user speech required to be considered a user turn.\n Increasing this value will cause the agent to ignore short user audio. This may be useful in\n particularly noisy environments, but it comes at the cost of possibly ignoring very short\n user responses such as \"yes\" or \"no\".\n\n Defaults to \"0s\" meaning the agent considers all user audio inputs (that make it through\n built-in noise cancellation)."
        minimumInterruptionDuration:
          pattern: ^-?(?:0|[1-9][0-9]{0,11})(?:\.[0-9]{1,9})?s$
          type: string
          description: "The minimum duration of user speech required to interrupt the agent. This works the same way\n as minimumTurnDuration, but allows for a higher threshold for interrupting the agent. (This\n value will be ignored if it is less than minimumTurnDuration.)\n\n Defaults to \"0.09s\" (90ms) as a starting point, but there's nothing special about this value."
        frameActivationThreshold:
          type: number
          description: "The threshold for the VAD to consider a frame as speech. This is a value between 0.1 and 1.\n\n Miniumum value is 0.1, which is the default value."
          format: float
      description: Call-level VAD settings.
    google.protobuf.Value:
      description: Represents a dynamically typed value which can be either null, a number, a string, a boolean, a recursive struct value, or a list of values.
    ultravox.v1.SecurityOptions:
      type: object
      properties:
        options:
          type: array
          items:
            $ref: '#/components/schemas/ultravox.v1.SecurityRequirements'
          description: "The options for security. Only one must be met. The first one that can be\n satisfied will be used in general. The single exception to this rule is\n that we always prefer a non-empty set of requirements over an empty set\n unless no non-empty set can be satisfied."
      description: The different options for satisfying a tool's security requirements.
    ultravox.v1.HeaderApiKeyRequirement:
      type: object
      properties:
        name:
          type: string
          description: The name of the header.
      description: A security requirement that will cause an API key to be added to the header.
    OwnershipEnum:
      enum:
      - public
      - private
      type: string
    ultravox.v1.QueryApiKeyRequirement:
      type: object
      properties:
        name:
          type: string
          description: The name of the query parameter.
      description: A security requirement that will cause an API key to be added to the query string.
    ultravox.v1.CallMedium_DtmfHandling:
      type: object
      properties:
        ignore:
          type: boolean
          description: If true, DTMF digits are ignored entirely.
        userTextMessage:
          allOf:
          - $ref: '#/components/schemas/ultravox.v1.CallMedium_DtmfUserTextMessage'
          description: Customizes how DTMF digits are sent as a user text message.
      description: "Configuration for how incoming DTMF digits are handled during a call.\n When dtmf_handling is absent from the enclosing medium, DTMF digits are\n sent as a user text message containing just the digits with urgency\n URGENCY_IMMEDIATE (the default behavior).\n Note: consecutive DTMF digits are batched together with a short delay\n before being dispatched, so a rapid sequence of key presses will be\n delivered as a single message."
    ultravox.v1.SipMedium_SipOutgoing:
      type: object
      properties:
        to:
          type: string
          description: The SIP URI to connect to. (Phone numbers are not allowed.)
        from:
          type: string
          description: The SIP URI to connect from. This is the "from" field in the SIP INVITE.
        username:
          type: string
          description: The SIP username to use for authentication.
        password:
          type: string
          description: The password for the specified username.
      description: Details for an outgoing SIP call.
    ultravox.v1.FirstSpeakerSettings_AgentGreeting:
      type: object
      properties:
        uninterruptible:
          type: boolean
          description: "Whether the user should be prevented from interrupting the agent's first message.\n Defaults to false (meaning the agent is interruptible as usual)."
        text:
          type: string
          description: A specific greeting the agent should say.
        prompt:
          type: string
          description: A prompt for the agent to generate a greeting.
        delay:
          pattern: ^-?(?:0|[1-9][0-9]{0,11})(?:\.[0-9]{1,9})?s$
          type: string
          description: "If set, the agent will wait this long before starting its greeting. This may be useful\n for ensuring the user is ready."
      description: Additional properties for when the agent speaks first.
    ultravox.v1.ElevenLabsVoice_PronunciationDictionaryReference:
      type: object
      properties:
        dictionaryId:
          type: string
          description: The dictionary's ID.
        versionId:
          type: string
          description: The dictionary's version.
      description: A reference to a pronunciation dictionary within ElevenLabs.
    EndReasonEnum:
      enum:
      - unjoined
      - hangup
      - agent_hangup
      - timeout
      - connection_error
      - system_error
      type: string
      description: '* `unjoined` - Client never joined

        * `hangup` - Client hung up

        * `agent_hangup` - Agent hung up

        * `timeout` - Call timed out

        * `connection_error` - Connection error

        * `system_error` - System error'
    ultravox.v1.CallMedium_TelnyxMedium:
      type: object
      properties:
        outgoing:
          allOf:
          - $ref: '#/components/schemas/ultravox.v1.TelnyxMedium_OutgoingRequestParams'
          description: "If set, Ultravox will directly create a call with Telnyx. Telnyx must be configured\n for the requesting account."
        dtmfHandling:
          allOf:
          - $ref: '#/components/schemas/ultravox.v1.CallMedium_DtmfHandling'
          description: Controls how DTMF digits received during the call are handled.
      description: Details for a Telnyx call.
    ultravox.v1.BaseHttpToolDetails:
      type: object
      properties:
        baseUrlPattern:
          type: string
          description: The base URL pattern for the tool, possibly with placeholders for path parameters.
        httpMethod:
          type: string
          description: The HTTP method for the tool.
      description: Details for invoking a tool via HTTP.
    ultravox.v1.GenericVoice:
      type: object
      properties:
        url:
          type: string
          description: The endpoint to which requests are sent.
        headers:
          type: object
          additionalProperties:
            type: string
          description: Headers to include in the request.
        body:
          type: object
          description: "The request body to send. Some field should include a placeholder for text\n represented as {text}. The placeholder will be replaced with the text to synthesize."
        responseSampleRate:
          type: integer
          description: The sample rate of the audio returned by the API.
          format: int32
        responseWordsPerMinute:
          type: integer
          description: "An estimate of the speaking rate of the returned audio in words per minute. This is\n used for transcript timing while audio is streamed in the response. (Once the response\n is complete, Ultravox Realtime uses the real audio duration to adjust the timing.)\n Defaults to 150 and is unused for non-streaming responses."
          format: int32
        responseMimeType:
          type: string
          description: "The real mime type of the content returned by the API. If unset, the Content-Type response header\n will be used. This is useful for APIs whose response bodies don't strictly adhere to what the\n API claims via header. For example, if your API claims to return audio/wav but omits the WAV\n header (thus really returning raw PCM), set this to audio/l16. Similarly, if your API claims to\n return JSON but actually streams JSON Lines, set this to application/jsonl."
        jsonAudioFieldPath:
          type: string
          description: "For JSON responses, the path to the field containing base64-encoded audio data. The data must\n be PCM audio, optionally with a WAV header."
        jsonByteEncoding:
          enum:
          - JSON_BYTE_ENCODING_UNSPECIFIED
          - JSON_BYTE_ENCODING_BASE64
          - JSON_BYTE_ENCODING_HEX
          type: string
          description: "For JSON responses, how audio bytes are encoded into the json_audio_field_path string.\n Defaults to base64. Also supports hex."
          format: enum
      description: "Specification for a voice served by some generic REST-based TTS API. The API must\n accept an application/json POST request (as defined below) and return either WAV\n audio, raw PCM audio, or application/json with a base64 encoded audio data field\n that itself corresponds to WAV or raw PCM audio.\n Note that this simple API implies a lack of either input streaming or audio timing\n information, so more specific voice types are preferable when available."
    ultravox.v1.StaticParameter:
      type: object
      properties:
        name:
          type: string
          description: The name of the parameter.
        location:
          enum:
          - PARAMETER_LOCATION_UNSPECIFIED
          - PARAMETER_LOCATION_QUERY
          - PARAMETER_LOCATION_PATH
          - PARAMETER_LOCATION_HEADER
          - PARAMETER_LOCATION_BODY
          type: string
          description: Where the parameter is used.
          format: enum
        value:
          allOf:
          - $ref: '#/components/schemas/google.protobuf.Value'
          description: The value of the parameter.
      description: "A static parameter that is unconditionally added when the tool is invoked. This\n parameter is not exposed to or set by the model."
    ultravox.v1.UltravoxCallTokenRequirement:
      type: object
      properties:
        scopes:
          type: array
          items:
            type: string
          description: The scopes that must be present in the token.
      description: "A security requirement that will automatically be fulfilled during call creation.\n The generated token will be set as an X-Ultravox-Call-Token header when the tool\n is invoked. The token is only verifiable by the Ultravox service and should not be\n used for authentication by any other service.\n The token will also be invalid as soon as the call is completed."
    ultravox.v1.BaseToolDefinition:
      type: object
      properties:
        modelToolName:
          type: string
          description: The name of the tool, as presented to the model. Must match ^[a-zA-Z0-9_-]{1,64}$.
        description:
          type: string
          description: The description of the tool.
        dynamicParameters:
          type: array
          items:
            $ref: '#/components/schemas/ultravox.v1.DynamicParameter'
          description: The parameters that the tool accepts.
        staticParameters:
          type: array
          items:
            $ref: '#/components/schemas/ultravox.v1.StaticParameter'
          description: The static parameters added when the tool is invoked.
        automaticParameters:
          type: array
          items:
            $ref: '#/components/schemas/ultravox.v1.AutomaticParameter'
          description: Additional parameters that are automatically set by the system when the tool is invoked.
        requirements:
          allOf:
          - $ref: '#/components/schemas/ultravox.v1.ToolRequirements'
          description: Requirements that must be fulfilled when creating a call for the tool to be used.
        timeout:
          pattern: ^-?(?:0|[1-9][0-9]{0,11})(?:\.[0-9]{1,9})?s$
          type: string
          description: "The maximum amount of time the tool is allowed for execution. The conversation is frozen\n while tools run, so prefer sticking to the default unless you're comfortable with that\n consequence. If your tool is too slow for the default and can't be made faster, still try to\n keep this timeout as low as possible."
        precomputable:
          type: boolean
          description: "The tool is guaranteed to be non-mutating, repeatable, and free of side-effects. Such tools\n can safely be executed speculatively, reducing their effective latency. However, the fact they\n were called may not be reflected in the call history if their result ends up unused."
        http:
          allOf:
          - $ref: '#/components/schemas/ultravox.v1.BaseHttpToolDetails'
          description: Details for an HTTP tool.
        client:
          allOf:
          - $ref: '#/components/schemas/ultravox.v1.BaseClientToolDetails'
          description: "Details for a client-implemented tool. Only body parameters are allowed\n for client tools."
        dataConnection:
          allOf:
          - $ref: '#/components/schemas/ultravox.v1.BaseDataConnectionToolDetails'
          description: "Details for a tool implemented via a data connection websocket. Only body\n parameters are allowed for data connection tools."
        defaultReaction:
          enum:
          - AGENT_REACTION_UNSPECIFIED
          - AGENT_REACTION_SPEAKS
          - AGENT_REACTION_LISTENS
          - AGENT_REACTION_SPEAKS_ONCE
          type: string
          description: "Indicates the default for how the agent should proceed after the tool is invoked.\n Can be overridden by the tool implementation via the X-Ultravox-Agent-Reaction\n header."
          format: enum
        staticResponse:
          allOf:
          - $ref: '#/components/schemas/ultravox.v1.StaticToolResponse'
          description: "Static response to a tool. When this is used, this response will be returned\n without waiting for the tool's response."
      description: "The base definition of a tool that can be used during a call. Exactly one\n implementation (http or client) should be set."
    ultravox.v1.BaseDataConnectionToolDetails:
      type: object
      properties: {}
      description: Details for invoking a tool via a data connection.
    ultravox.v1.EnabledDataMessages:
      type: object
      properties:
        pong:
          type: boolean
          description: 'Responds to a ping message. (Default: enabled)'
        state:
          type: boolean
          description: 'Indicates that the agent state has changed. (Default: enabled)'
        transcript:
          type: boolean
          description: 'Provides transcripts of the user and agent speech. (Default: enabled)'
        clientToolInvocation:
          type: boolean
          description: 'Requests a client-implemented tool invocation. (Default: enabled)'
        dataConnectionToolInvocation:
          type: boolean
          description: 'Requests a data-connection-implemented tool invocation. (Default: enabled for data connections, disabled otherwise)'
        playbackClearBuffer:
          type: boolean
          description: 'Requests the client-side audio buffer to be cleared. (Default: enabled for websocket connections, disabled otherwise)'
        callStarted:
          type: boolean
          description: 'Provides information about the call when it starts. (Default: enabled)'
        debug:
          type: boolean
          description: 'Communicates debug information. (Default: disabled)'
        callEvent:
          type: boolean
          description: 'Indicates that a call event has been recorded. (Default: disabled)'
        toolUsed:
          type: boolean
          description: 'Indicates that a tool was used. (Default: disabled)'
        userStartedSpeaking:
          type: boolean
          description: 'Indicates that the user has started speaking (according to simple VAD). (Default: disabled)'
        userStoppedSpeaking:
          type: boolean
          description: 'Indicates that the user has stopped speaking (according to simple VAD). (Defaul

# --- truncated at 32 KB (64 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/fixie/refs/heads/main/openapi/fixie-tools-api-openapi.yml