Amigo · Schema

TurnResponse

CompanyArtificial IntelligenceHealthcareAI AgentsVoiceClinicalConversational AIFHIRElectronic Health RecordsHIPAA

Properties

Name Type Description
turn_id object Identifier of the user exchange this turn created — or, for ``poll=true`` and greeting-kickoff turns (empty ``message``), the latest exchange the returned messages attach to. Deterministic: matches th
input object
output array
tool_calls array
conversation object
background_pending boolean Whether this turn's ``output`` is the final answer, or only an acknowledgement that work is still running in the background. ``false`` (default): ``output`` is the complete agent response for this tur
View JSON Schema on GitHub

JSON Schema

amigo-turn-response-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/amigo/main/json-schema/amigo-turn-response-schema.json",
  "title": "TurnResponse",
  "x-generated": "2026-10-12",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/amigo-conversations-api-openapi.yml#/components/schemas/TurnResponse",
  "properties": {
    "turn_id": {
      "anyOf": [
        {
          "type": "string",
          "format": "uuid"
        },
        {
          "type": "null"
        }
      ],
      "title": "Turn Id",
      "description": "Identifier of the user exchange this turn created — or, for ``poll=true`` and greeting-kickoff turns (empty ``message``), the latest exchange the returned messages attach to. Deterministic: matches the ``turn_id`` on this conversation's history turns, so it can anchor durable per-turn artifacts (e.g. feedback) across page reloads. Null only when the conversation has no user exchange yet (a poll or kickoff before the first user message)."
    },
    "input": {
      "$ref": "#/$defs/ConversationTurn"
    },
    "output": {
      "items": {
        "$ref": "#/$defs/ConversationTurn"
      },
      "type": "array",
      "title": "Output"
    },
    "tool_calls": {
      "items": {
        "$ref": "#/$defs/ConversationToolCallDetail"
      },
      "type": "array",
      "title": "Tool Calls",
      "default": []
    },
    "conversation": {
      "$ref": "#/$defs/TurnConversationSnapshot"
    },
    "background_pending": {
      "type": "boolean",
      "title": "Background Pending",
      "description": "Whether this turn's ``output`` is the final answer, or only an acknowledgement that\nwork is still running in the background.\n\n``false`` (default): ``output`` is the complete agent response for this turn.\n\n``true``: a tool crossed the server's blocking window and was handed to a background\ntask, so ``output`` is NOT the final answer — the definitive assistant answer is\nproduced later, out-of-band. It is **durable on the conversation**: drain it by\nre-issuing ``POST …/turns`` with ``poll=true`` (a no-message drain-and-report), by\nsending the next user turn, or by reading the conversation back\n(``GET …/conversations/{id}``). This is the per-conversation delivery contract — see\nthe web-integration paved path. (The workspace observer bus,\n``GET /v1/{workspace_id}/events/stream``, mirrors this activity as ``text.agent_message``\n/ ``text.tool_started`` / ``text.background_result`` for *dashboards* watching many\nconversations, but is not the per-chat delivery path.) A client that treats a\n``background_pending=true`` turn as complete without draining will miss the final answer.",
      "default": false
    }
  },
  "type": "object",
  "required": [
    "turn_id",
    "input",
    "output",
    "conversation"
  ],
  "$defs": {
    "Action": {
      "properties": {
        "description": {
          "type": "string",
          "title": "Description"
        },
        "filler_hint": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Filler Hint"
        }
      },
      "type": "object",
      "required": [
        "description"
      ],
      "title": "Action",
      "description": "A single action the agent can take within a state."
    },
    "ActionState-Output": {
      "properties": {
        "type": {
          "type": "string",
          "const": "action",
          "title": "Type"
        },
        "name": {
          "type": "string",
          "title": "Name"
        },
        "objective": {
          "type": "string",
          "title": "Objective"
        },
        "actions": {
          "items": {
            "$ref": "#/$defs/Action"
          },
          "type": "array",
          "title": "Actions"
        },
        "intra_state_navigation_guidelines": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Intra State Navigation Guidelines"
        },
        "action_guidelines": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Action Guidelines"
        },
        "boundary_constraints": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Boundary Constraints"
        },
        "exit_conditions": {
          "items": {
            "$ref": "#/$defs/ExitCondition"
          },
          "type": "array",
          "title": "Exit Conditions"
        },
        "action_tool_call_specs": {
          "items": {
            "$ref": "#/$defs/ToolCallSpec"
          },
          "type": "array",
          "title": "Action Tool Call Specs",
          "default": []
        },
        "exit_condition_tool_call_specs": {
          "items": {
            "$ref": "#/$defs/ToolCallSpec"
          },
          "type": "array",
          "title": "Exit Condition Tool Call Specs",
          "default": []
        },
        "wait_for": {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "surface_submission",
                "human_approval"
              ]
            },
            {
              "type": "null"
            }
          ],
          "title": "Wait For"
        },
        "guardrails": {
          "items": {
            "$ref": "#/$defs/Guardrail"
          },
          "type": "array",
          "title": "Guardrails",
          "default": []
        },
        "channel_overrides": {
          "additionalProperties": {
            "$ref": "#/$defs/ChannelOverride"
          },
          "type": "object",
          "title": "Channel Overrides"
        },
        "surface_spec_template": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "title": "Surface Spec Template"
        },
        "turn_policy": {
          "anyOf": [
            {
              "$ref": "#/$defs/TurnPolicy"
            },
            {
              "type": "null"
            }
          ]
        },
        "preload": {
          "items": {
            "$ref": "#/$defs/PreloadSpec"
          },
          "type": "array",
          "maxItems": 20,
          "title": "Preload"
        }
      },
      "type": "object",
      "required": [
        "type",
        "name",
        "objective",
        "actions",
        "intra_state_navigation_guidelines",
        "action_guidelines",
        "boundary_constraints",
        "exit_conditions"
      ],
      "title": "ActionState",
      "description": "User-facing engagement state with actions and exit conditions."
    },
    "AnnotationState": {
      "properties": {
        "type": {
          "type": "string",
          "const": "annotation",
          "title": "Type"
        },
        "name": {
          "type": "string",
          "title": "Name"
        },
        "inner_thought": {
          "type": "string",
          "title": "Inner Thought"
        },
        "next_state": {
          "type": "string",
          "title": "Next State"
        }
      },
      "type": "object",
      "required": [
        "type",
        "name",
        "inner_thought",
        "next_state"
      ],
      "title": "AnnotationState",
      "description": "Injects a hardcoded inner thought (no LLM call)."
    },
    "ChannelKind": {
      "type": "string",
      "enum": [
        "voice",
        "sms",
        "whatsapp",
        "email",
        "web",
        "imessage"
      ],
      "title": "ChannelKind",
      "description": "HSM execution channel type.\n\nDetermines how the HSM engine communicates with end users.\nEach kind maps to one or more providers."
    },
    "ChannelOverride": {
      "properties": {
        "objective": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Objective"
        },
        "action_guidelines": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Action Guidelines",
          "default": []
        },
        "progress": {
          "anyOf": [
            {
              "$ref": "#/$defs/ProgressHint"
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "type": "object",
      "title": "ChannelOverride",
      "description": "Per-channel behavior override for a state."
    },
    "CollectionField": {
      "properties": {
        "key": {
          "type": "string",
          "title": "Key"
        },
        "type": {
          "type": "string",
          "title": "Type"
        },
        "label": {
          "type": "string",
          "title": "Label"
        },
        "required": {
          "type": "boolean",
          "title": "Required",
          "default": true
        },
        "options": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "title": "Options"
        },
        "validation": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Validation"
        },
        "ask_prompt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Ask Prompt"
        },
        "fhir_path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Fhir Path"
        }
      },
      "type": "object",
      "required": [
        "key",
        "type",
        "label"
      ],
      "title": "CollectionField",
      "description": "A single field to collect during a data collection state."
    },
    "ContentPartPayload": {
      "properties": {
        "type": {
          "type": "string",
          "maxLength": 64,
          "minLength": 1,
          "pattern": "^[a-z][a-z0-9._-]*$",
          "title": "Type",
          "default": "text"
        },
        "text": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 10000
            },
            {
              "type": "null"
            }
          ],
          "title": "Text"
        },
        "url": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 2048
            },
            {
              "type": "null"
            }
          ],
          "title": "Url"
        },
        "media_type": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 128
            },
            {
              "type": "null"
            }
          ],
          "title": "Media Type"
        },
        "provider_id": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 256
            },
            {
              "type": "null"
            }
          ],
          "title": "Provider Id"
        },
        "metadata": {
          "additionalProperties": true,
          "type": "object",
          "maxProperties": 50,
          "title": "Metadata"
        }
      },
      "type": "object",
      "title": "ContentPartPayload",
      "description": "HTTP/WebSocket shape for a modality-neutral conversation content part."
    },
    "ContextGraphState-Output": {
      "oneOf": [
        {
          "$ref": "#/$defs/ActionState-Output"
        },
        {
          "$ref": "#/$defs/DecisionState-Output"
        },
        {
          "$ref": "#/$defs/AnnotationState"
        },
        {
          "$ref": "#/$defs/DataCollectionState-Output"
        }
      ]
    },
    "ConversationToolCallDetail": {
      "properties": {
        "tool_name": {
          "type": "string",
          "title": "Tool Name"
        },
        "call_id": {
          "type": "string",
          "title": "Call Id"
        },
        "input": {
          "additionalProperties": true,
          "type": "object",
          "title": "Input"
        },
        "result": {
          "type": "string",
          "title": "Result",
          "default": ""
        },
        "succeeded": {
          "type": "boolean",
          "title": "Succeeded",
          "default": true
        },
        "duration_ms": {
          "anyOf": [
            {
              "type": "number",
              "maximum": 3600000.0,
              "minimum": 0.0
            },
            {
              "type": "null"
            }
          ],
          "title": "Duration Ms",
          "description": "Wall-clock tool execution time in milliseconds, measured at the engage_step call site. Omitted (null) on legacy turns that did not capture timing."
        },
        "error_message": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Error Message",
          "description": "Failure detail recorded for the tool call when ``succeeded`` is false. Null on successful calls or when no message was captured."
        }
      },
      "type": "object",
      "required": [
        "tool_name",
        "call_id"
      ],
      "title": "ConversationToolCallDetail"
    },
    "ConversationTurn": {
      "properties": {
        "turn_id": {
          "anyOf": [
            {
              "type": "string",
              "format": "uuid"
            },
            {
              "type": "null"
            }
          ],
          "title": "Turn Id",
          "description": "Stable identifier of the user exchange this message belongs to, derived deterministically from (conversation_id, turn_index) — identical across ``POST /turns`` responses and re-reads of the conversation history. User and agent messages from the same exchange share this value. Null on messages that precede the first user turn (proactive greetings, channel-event preludes)."
        },
        "turn_index": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": 0.0
            },
            {
              "type": "null"
            }
          ],
          "title": "Turn Index",
          "description": "Zero-based ordinal of the user exchange this message belongs to (0 = first user turn). Derived server-side from the conversation's user-turn count — never stored. Null exactly when ``turn_id`` is null."
        },
        "role": {
          "type": "string",
          "enum": [
            "agent",
            "user",
            "system"
          ],
          "title": "Role"
        },
        "text": {
          "type": "string",
          "title": "Text"
        },
        "timestamp": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Timestamp"
        },
        "channel": {
          "anyOf": [
            {
              "$ref": "#/$defs/ChannelKind"
            },
            {
              "type": "null"
            }
          ],
          "description": "Channel this turn occurred on. A conversation that switched channels has a self-describing per-turn history; null on turns written before per-turn attribution or on channel-less internal turns."
        },
        "content": {
          "items": {
            "$ref": "#/$defs/ContentPartPayload"
          },
          "type": "array",
          "title": "Content",
          "default": []
        },
        "tool_calls": {
          "items": {
            "$ref": "#/$defs/ConversationToolCallDetail"
          },
          "type": "array",
          "title": "Tool Calls",
          "description": "Tool calls executed during this (agent) turn. Populated only when the request opts in via ``include_tool_calls=true``; empty otherwise and on turns that did not invoke tools.",
          "default": []
        },
        "selected_action_description": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Selected Action Description",
          "description": "Description of the context-graph action selected for this turn. Null means no action was selected or no selected action was recorded."
        },
        "state_transition": {
          "anyOf": [
            {
              "$ref": "#/$defs/ConversationTurnStateTransition"
            },
            {
              "type": "null"
            }
          ],
          "description": "Context-graph state transition that occurred during this turn. Null means no transition took place or no transition was recorded. Deprecated: use state_transitions instead. If multiple transitions were recorded, this field reports the first source state and final destination state.",
          "deprecated": true
        },
        "state_transitions": {
          "items": {
            "$ref": "#/$defs/ConversationTurnStateTransition"
          },
          "type": "array",
          "title": "State Transitions",
          "description": "Ordered context-graph state transitions that occurred during this turn.",
          "default": []
        },
        "available_actions": {
          "items": {
            "$ref": "#/$defs/ConversationTurnAvailableAction"
          },
          "type": "array",
          "title": "Available Actions",
          "description": "Action choices available in the turn's resolved context-graph state. Empty when actions cannot be resolved or the resolved state is not an action state.",
          "default": []
        }
      },
      "type": "object",
      "required": [
        "role",
        "text"
      ],
      "title": "ConversationTurn"
    },
    "ConversationTurnAvailableAction": {
      "properties": {
        "description": {
          "type": "string",
          "title": "Description",
          "description": "Human-readable description of an action available in the turn's state."
        }
      },
      "type": "object",
      "required": [
        "description"
      ],
      "title": "ConversationTurnAvailableAction"
    },
    "ConversationTurnStateTransition": {
      "properties": {
        "from": {
          "type": "string",
          "title": "From",
          "description": "Source context-graph state before the turn's state transition."
        },
        "to": {
          "type": "string",
          "title": "To",
          "description": "Destination context-graph state after the turn's state transition."
        }
      },
      "type": "object",
      "required": [
        "from",
        "to"
      ],
      "title": "ConversationTurnStateTransition"
    },
    "DataCollectionState-Output": {
      "properties": {
        "type": {
          "type": "string",
          "const": "data_collection",
          "title": "Type"
        },
        "name": {
          "type": "string",
          "title": "Name"
        },
        "objective": {
          "type": "string",
          "title": "Objective"
        },
        "fields": {
          "items": {
            "$ref": "#/$defs/CollectionField"
          },
          "type": "array",
          "title": "Fields"
        },
        "on_complete": {
          "type": "string",
          "title": "On Complete"
        },
        "action_guidelines": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Action Guidelines",
          "default": []
        },
        "boundary_constraints": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Boundary Constraints",
          "default": []
        },
        "surface_fallback": {
          "type": "boolean",
          "title": "Surface Fallback",
          "default": false
        },
        "surface_fallback_after_turns": {
          "type": "integer",
          "title": "Surface Fallback After Turns",
          "default": 6
        },
        "max_turns": {
          "type": "integer",
          "title": "Max Turns",
          "default": 10
        },
        "guardrails": {
          "items": {
            "$ref": "#/$defs/Guardrail"
          },
          "type": "array",
          "title": "Guardrails",
          "default": []
        },
        "channel_overrides": {
          "additionalProperties": {
            "$ref": "#/$defs/ChannelOverride"
          },
          "type": "object",
          "title": "Channel Overrides"
        },
        "turn_policy": {
          "anyOf": [
            {
              "$ref": "#/$defs/TurnPolicy"
            },
            {
              "type": "null"
            }
          ]
        },
        "tool_call_specs": {
          "items": {
            "$ref": "#/$defs/ToolCallSpec"
          },
          "type": "array",
          "title": "Tool Call Specs",
          "default": []
        }
      },
      "type": "object",
      "required": [
        "type",
        "name",
        "objective",
        "fields",
        "on_complete"
      ],
      "title": "DataCollectionState",
      "description": "Structured voice/text data collection with field tracking.\n\nThe engine presents fields conversationally, tracks completion, and\noptionally falls back to a Surface form after N turns. Each collected\nfield produces a world.event with confidence 0.5."
    },
    "DecisionState-Output": {
      "properties": {
        "type": {
          "type": "string",
          "const": "decision",
          "title": "Type"
        },
        "name": {
          "type": "string",
          "title": "Name"
        },
        "objective": {
          "type": "string",
          "title": "Objective"
        },
        "exit_conditions": {
          "items": {
            "$ref": "#/$defs/ExitCondition"
          },
          "type": "array",
          "title": "Exit Conditions"
        },
        "decision_guidelines": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Decision Guidelines",
          "default": []
        },
        "tool_call_specs": {
          "items": {
            "$ref": "#/$defs/ToolCallSpec"
          },
          "type": "array",
          "title": "Tool Call Specs",
          "default": []
        },
        "wait_for": {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "surface_submission",
                "human_approval"
              ]
            },
            {
              "type": "null"
            }
          ],
          "title": "Wait For"
        },
        "guardrails": {
          "items": {
            "$ref": "#/$defs/Guardrail"
          },
          "type": "array",
          "title": "Guardrails",
          "default": []
        },
        "channel_overrides": {
          "additionalProperties": {
            "$ref": "#/$defs/ChannelOverride"
          },
          "type": "object",
          "title": "Channel Overrides"
        },
        "turn_policy": {
          "anyOf": [
            {
              "$ref": "#/$defs/TurnPolicy"
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "type": "object",
      "required": [
        "type",
        "name",
        "objective",
        "exit_conditions"
      ],
      "title": "DecisionState",
      "description": "Passthrough routing state — Agent picks an exit condition, no user interaction."
    },
    "ExitCondition": {
      "properties": {
        "description": {
          "type": "string",
          "title": "Description"
        },
        "next_state": {
          "type": "string",
          "title": "Next State"
        },
        "filler_hint": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Filler Hint"
        }
      },
      "type": "object",
      "required": [
        "description",
        "next_state"
      ],
      "title": "ExitCondition"
    },
    "FailureClass": {
      "type": "string",
      "enum": [
        "timeout",
        "input_rejected",
        "rounds_exhausted",
        "generic"
      ],
      "title": "FailureClass",
      "description": "Why a tool result is a failure — produced by the executor at RUN time.\n\nUnlike ``ResultDelivery`` (a fixed config-time axis), this is a runtime\nclassification the executor knows at the moment of failure. It flavors the\nagent-facing failure wording and the world-event / status-tool observability,\nand it is ALSO an optional routing key: a state x tool binding may set\n``ToolCallSpec.failure_delivery_by_class`` to deliver differently per class\n(e.g. interrupt on timeout, queue on a generic error). With no per-class map\n(the default), failed results route by the ``failure_delivery`` floor,\nunchanged. Add a member only in the same change that wires a producer for it —\nadding one also widens the per-class routing surface, so it must be a\ndeliberate, produced class."
    },
    "Guardrail": {
      "properties": {
        "name": {
          "type": "string",
          "maxLength": 128,
          "title": "Name"
        },
        "description": {
          "type": "string",
          "maxLength": 1000,
          "title": "Description"
        },
        "enforcement": {
          "type": "string",
          "enum": [
            "hard",
            "soft"
          ],
          "title": "Enforcement",
          "default": "hard"
        }
      },
      "type": "object",
      "required": [
        "name",
        "description"
      ],
      "title": "Guardrail",
      "description": "Typed safety rule enforced per-state (not just global freetext guidelines)."
    },
    "PreloadSpec": {
      "properties": {
        "tool_id": {
          "type": "string",
          "maxLength": 256,
          "title": "Tool Id"
        },
        "params": {
          "additionalProperties": true,
          "type": "object",
          "maxProperties": 20,
          "title": "Params"
        }
      },
      "type": "object",
      "required": [
        "tool_id"
      ],
      "title": "PreloadSpec",
      "description": "A tool call executed deterministically by the engine on state entry.\n\nUnlike LLM-driven tool calls, preloads run before any LLM turn —\nthe results appear in the interaction log so the engage LLM sees\nthem as pre-loaded context.  All preloads in a state execute in\nparallel.  Param values support ``{caller_mrn}`` and ``{entity_id}``\ntemplate variables resolved from the session's caller context."
    },
    "ProgressHint": {
      "properties": {
        "deterministic": {
          "type": "boolean",
          "title": "Deterministic",
          "default": false
        },
        "phrases": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array",
              "maxItems": 10,
              "minItems": 1,
              "description": "Filler phrases. deterministic=true: played verbatim in order. deterministic=false: used as hints for early attempts."
            },
            {
              "type": "null"
            }
          ],
          "title": "Phrases"
        },
        "trigger_delay_ms": {
          "anyOf": [
            {
              "type": "integer",
              "maximum": 30000.0,
              "minimum": 0.0
            },
            {
              "type": "null"
            }
          ],
          "title": "Trigger Delay Ms"
        },
        "interval_ms": {
          "anyOf": [
            {
              "type": "integer",
              "maximum": 30000.0,
              "minimum": 100.0
            },
            {
              "type": "null"
            }
          ],
          "title": "Interval Ms"
        },
        "mode": {
          "type": "string",
          "enum": [
            "auto",
            "silent",
            "backchannel",
            "verbal"
          ],
          "title": "Mode",
          "default": "auto"
        },
        "progress_class": {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "lookup",
                "write",
                "external_call",
                "compute",
                "multi_step"
              ]
            },
            {
              "type": "null"
            }
          ],
          "title": "Progress Class"
        },
        "expected_latency_ms": {
          "anyOf": [
            {
              "type": "integer",
              "maximum": 60000.0,
              "minimum": 0.0
            },
            {
              "type": "null"
            }
          ],
          "title": "Expected Latency Ms"
        },
        "custom_phrase": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 500,
              "description": "Legacy: use phrases instead."
            },
            {
              "type": "null"
            }
          ],
          "title": "Custom Phrase"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "title": "ProgressHint",
      "description": "How the agent narrates waiting on a tool.\n\n``deterministic=true``: scripted — ``phrases`` play verbatim in order.\n``deterministic=false``: engine picks — ``phrases`` are hints.\n``trigger_delay_ms``: milliseconds before first filler (0 = immediate).\n``interval_ms``: milliseconds between subsequent fillers."
    },
    "ToolCallSpec": {
      "properties": {
        "tool_id": {
          "type": "string",
          "title": "Tool Id"
        },
        "additional_instruction": {
          "type": "string",
          "title": "Additional Instruction",
          "default": ""
        },
        "navigate_on_completion": {
          "type": "boolean",
          "title": "Navigate On Completion",
          "default": false
        },
        "progress": {
          "anyOf": [
            {
              "$ref": "#/$defs/ProgressHint"
            },
            {
              "type": "null"
            }
          ]
        },
        "result_persistence": {
          "type": "string",
          "enum": [
            "accumulate",
            "override"
          ],
          "title": "Result Persistence",
          "default": "accumulate"
        },
        "delivery": {
          "type": "string",
          "enum": [
            "interrupt",
            "queue"
          ],
          "title": "Delivery",
          "default": "interrupt"
        },
        "failure_delivery": {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "interrupt",
                "queue"
              ]
            },
            {
              "type": "null"
            }
          ],
          "title": "Failure Delivery"
        },
        "failure_delivery_by_class": {
          "anyOf": [
            {
              "additionalProperties": {
                "type": "string",
                "enum": [
                  "interrupt",
                  "queue"
                ]
              },
              "propertyNames": {
                "$ref": "#/$defs/FailureClass"
              },
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "title": "Failure Delivery By Class"
        },
        "execution": {
          "type": "string",
          "enum": [
            "blocking",
            "background"
          ],
          "title": "Execution",
          "default": "blocking"
        },
        "lifecycle": {
          "type": "string",
          "enum": [
            "coupled",
            "independent"
          ],
          "title": "Lifecycle",
          "default": "independent"
        },
        "audio_fillers": {
          "anyOf": [
            {
              "items": {
                "type": "str

# --- truncated at 32 KB (35 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/amigo/refs/heads/main/json-schema/amigo-turn-response-schema.json

Work with this as data

Every JSON Schema 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 schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • 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 JSON Schema
curl "https://apis.io/api/v1/json-schemas/amigo-turn-response"
All schemas
curl "https://apis.io/api/v1/json-schemas?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.