Skip to main content

ToolCall

A single structured tool call emitted by the model

clientToolDeadlineAt is the client answer window. Expiry ends that wait and rejects late results; the timeout policy determines the outcome.

Usage profiles​

UsageFields and validation
In requestsView fields
In responsesView fields
In webhook payloadsView fields

In requests​

API JSON uses JSON field names (camelCase).

FieldTypePresenceMeaning
idstringOptionalProvider-supplied call id.
namestringOptionalName of the tool or function being invoked.
argumentsJsonMap from string to JSON valueOptionalJSON object payload.
statusstring (TOOL_EXECUTION_STATUS_PENDING, TOOL_EXECUTION_STATUS_EXECUTING, TOOL_EXECUTION_STATUS_COMPLETED, TOOL_EXECUTION_STATUS_SUCCESS, TOOL_EXECUTION_STATUS_FAILED, TOOL_EXECUTION_STATUS_REQUIRES_CONFIRMATION, TOOL_EXECUTION_STATUS_CANCELLED, TOOL_EXECUTION_STATUS_TIMED_OUT) or integer (int32)OptionalExecution status recorded for the tool call.
resultJsonMap from string to JSON valueOptionalTool execution result (object).
executedAtstring (date-time)OptionalTime when the tool execution was recorded.
serverIdstringOptionalWhich server provides this tool (for MCP tools).
isClientToolbooleanOptionalTrue if this is a client-side tool handled by client.
descriptionstringOptionalTool description captured when the call is emitted, preserving the definition used for historical calls even if the tool configuration later changes.
parametersJsonSchemaMap from string to JSON valueOptionalJSON Schema describing the tool’s input arguments.
requiresApprovalAtstring (date-time)OptionalDeadline for an approval decision, calculated from the effective approval timeout. This is not the time the call began waiting. An approval received after the deadline is rejected.
approvedAtstring (date-time)OptionalTimestamp when approval decision was recorded (if approved/rejected)
approvedBystringOptionalIdentifier of the approver (user id, email, or actor key)
executionDurationstringOptionalEnd-to-end execution duration once terminal (includes tool server latency or client-side time) Pattern: ^-?(?:0|[1-9][0-9]*)(?:.[0-9]{1,9})?s$.
endReasonstringOptionalWhy this call ended, in one short phrase — "approval rejected", "approval timeout", the underlying error. Set only once status is terminal, and empty on a clean COMPLETED.
clientToolDeadlineAtstring (date-time)OptionalDeadline by which the client must submit a result for this call, stamped when the call is dispatched to a caller. Mirrors requires_approval_at.

Values of status​

Execution state of one tool call, including approval waiting and terminal outcomes.

ValueNo.FormMeaning
TOOL_EXECUTION_STATUS_PENDING1CanonicalThe tool call is waiting to begin execution.
TOOL_EXECUTION_STATUS_EXECUTING2CanonicalThe tool call is currently executing.
TOOL_EXECUTION_STATUS_COMPLETED3CanonicalThe tool call completed successfully. Responses use this canonical spelling for numeric value 3.
TOOL_EXECUTION_STATUS_SUCCESS3Alias of TOOL_EXECUTION_STATUS_COMPLETEDLegacy alias of TOOL_EXECUTION_STATUS_COMPLETED with the same numeric value; use COMPLETED for new writes.
TOOL_EXECUTION_STATUS_FAILED4CanonicalTool execution ended unsuccessfully; inspect the tool error or end reason.
TOOL_EXECUTION_STATUS_REQUIRES_CONFIRMATION5CanonicalThe tool call is waiting for approval before it can execute.
TOOL_EXECUTION_STATUS_CANCELLED6CanonicalThe tool call was cancelled before normal completion.
TOOL_EXECUTION_STATUS_TIMED_OUT7CanonicalTool execution ended because its time limit elapsed.

In responses​

API JSON uses JSON field names (camelCase).

FieldTypePresenceMeaning
idstringOptionalProvider-supplied call id.
namestringOptionalName of the tool or function being invoked.
argumentsJsonMap from string to JSON valueOptionalJSON object payload.
statusstring (TOOL_EXECUTION_STATUS_PENDING, TOOL_EXECUTION_STATUS_EXECUTING, TOOL_EXECUTION_STATUS_COMPLETED, TOOL_EXECUTION_STATUS_FAILED, TOOL_EXECUTION_STATUS_REQUIRES_CONFIRMATION, TOOL_EXECUTION_STATUS_CANCELLED, TOOL_EXECUTION_STATUS_TIMED_OUT) or integer (int32)OptionalExecution status recorded for the tool call.
resultJsonMap from string to JSON valueOptionalTool execution result (object).
executedAtstring (date-time)OptionalTime when the tool execution was recorded.
serverIdstringOptionalWhich server provides this tool (for MCP tools).
isClientToolbooleanOptionalTrue if this is a client-side tool handled by client.
descriptionstringOptionalTool description captured when the call is emitted, preserving the definition used for historical calls even if the tool configuration later changes.
parametersJsonSchemaMap from string to JSON valueOptionalJSON Schema describing the tool’s input arguments.
requiresApprovalAtstring (date-time)OptionalDeadline for an approval decision, calculated from the effective approval timeout. This is not the time the call began waiting. An approval received after the deadline is rejected.
approvedAtstring (date-time)OptionalTimestamp when approval decision was recorded (if approved/rejected)
approvedBystringOptionalIdentifier of the approver (user id, email, or actor key)
executionDurationstringOptionalEnd-to-end execution duration once terminal (includes tool server latency or client-side time) Pattern: ^-?(?:0|[1-9][0-9]*)(?:.[0-9]{1,9})?s$.
endReasonstringOptionalWhy this call ended, in one short phrase — "approval rejected", "approval timeout", the underlying error. Set only once status is terminal, and empty on a clean COMPLETED.
clientToolDeadlineAtstring (date-time)OptionalDeadline by which the client must submit a result for this call, stamped when the call is dispatched to a caller. Mirrors requires_approval_at.

Values of status​

Execution state of one tool call, including approval waiting and terminal outcomes.

ValueNo.FormMeaning
TOOL_EXECUTION_STATUS_PENDING1CanonicalThe tool call is waiting to begin execution.
TOOL_EXECUTION_STATUS_EXECUTING2CanonicalThe tool call is currently executing.
TOOL_EXECUTION_STATUS_COMPLETED3CanonicalThe tool call completed successfully. Responses use this canonical spelling for numeric value 3.
TOOL_EXECUTION_STATUS_SUCCESS3Alias of TOOL_EXECUTION_STATUS_COMPLETED; Name not accepted for this field; number acceptedLegacy alias of TOOL_EXECUTION_STATUS_COMPLETED with the same numeric value; use COMPLETED for new writes.
TOOL_EXECUTION_STATUS_FAILED4CanonicalTool execution ended unsuccessfully; inspect the tool error or end reason.
TOOL_EXECUTION_STATUS_REQUIRES_CONFIRMATION5CanonicalThe tool call is waiting for approval before it can execute.
TOOL_EXECUTION_STATUS_CANCELLED6CanonicalThe tool call was cancelled before normal completion.
TOOL_EXECUTION_STATUS_TIMED_OUT7CanonicalTool execution ended because its time limit elapsed.

In webhook payloads​

Webhook JSON uses protobuf field names (snake_case).

FieldTypePresenceMeaning
idstringOptionalProvider-supplied call id.
namestringOptionalName of the tool or function being invoked.
arguments_jsonMap from string to JSON valueOptionalJSON object payload.
statusstring (TOOL_EXECUTION_STATUS_PENDING, TOOL_EXECUTION_STATUS_EXECUTING, TOOL_EXECUTION_STATUS_COMPLETED, TOOL_EXECUTION_STATUS_FAILED, TOOL_EXECUTION_STATUS_REQUIRES_CONFIRMATION, TOOL_EXECUTION_STATUS_CANCELLED, TOOL_EXECUTION_STATUS_TIMED_OUT) or integer (int32)OptionalExecution status recorded for the tool call.
result_jsonMap from string to JSON valueOptionalTool execution result (object).
executed_atstring (date-time)OptionalTime when the tool execution was recorded.
server_idstringOptionalWhich server provides this tool (for MCP tools).
is_client_toolbooleanOptionalTrue if this is a client-side tool handled by client.
descriptionstringOptionalTool description captured when the call is emitted, preserving the definition used for historical calls even if the tool configuration later changes.
parameters_json_schemaMap from string to JSON valueOptionalJSON Schema describing the tool’s input arguments.
requires_approval_atstring (date-time)OptionalDeadline for an approval decision, calculated from the effective approval timeout. This is not the time the call began waiting. An approval received after the deadline is rejected.
approved_atstring (date-time)OptionalTimestamp when approval decision was recorded (if approved/rejected)
approved_bystringOptionalIdentifier of the approver (user id, email, or actor key)
execution_durationstringOptionalEnd-to-end execution duration once terminal (includes tool server latency or client-side time) Pattern: ^-?(?:0|[1-9][0-9]*)(?:.[0-9]{1,9})?s$.
end_reasonstringOptionalWhy this call ended, in one short phrase — "approval rejected", "approval timeout", the underlying error. Set only once status is terminal, and empty on a clean COMPLETED.
client_tool_deadline_atstring (date-time)OptionalDeadline by which the client must submit a result for this call, stamped when the call is dispatched to a caller. Mirrors requires_approval_at.

Values of status​

Execution state of one tool call, including approval waiting and terminal outcomes.

ValueNo.FormMeaning
TOOL_EXECUTION_STATUS_PENDING1CanonicalThe tool call is waiting to begin execution.
TOOL_EXECUTION_STATUS_EXECUTING2CanonicalThe tool call is currently executing.
TOOL_EXECUTION_STATUS_COMPLETED3CanonicalThe tool call completed successfully. Responses use this canonical spelling for numeric value 3.
TOOL_EXECUTION_STATUS_SUCCESS3Alias of TOOL_EXECUTION_STATUS_COMPLETED; Name not accepted for this field; number acceptedLegacy alias of TOOL_EXECUTION_STATUS_COMPLETED with the same numeric value; use COMPLETED for new writes.
TOOL_EXECUTION_STATUS_FAILED4CanonicalTool execution ended unsuccessfully; inspect the tool error or end reason.
TOOL_EXECUTION_STATUS_REQUIRES_CONFIRMATION5CanonicalThe tool call is waiting for approval before it can execute.
TOOL_EXECUTION_STATUS_CANCELLED6CanonicalThe tool call was cancelled before normal completion.
TOOL_EXECUTION_STATUS_TIMED_OUT7CanonicalTool execution ended because its time limit elapsed.

Where used​

ReferenceRelationship
Append a message without generatingPOST /api/v1/llm/append-message
Execute an MCP toolPOST /api/v1/llm/mcp-call-tool
Send a message to a conversationPOST /api/v1/llm/send-message
Send a message and wait for the resultPOST /api/v1/llm/send-message-sync
Withdraw your rating on a messagePOST /api/v1/llm/delete-message-rating
Get full conversation statePOST /api/v1/llm/conversation-state
Get a single tool call by IDPOST /api/v1/llm/get-tool-call
List pending tool approvalsPOST /api/v1/llm/list-pending-approvals
List client-side tool calls awaiting a resultPOST /api/v1/llm/list-pending-client-tools
Rate an assistant messagePOST /api/v1/llm/rate-message
Submit client-side tool results and wait for the next segmentPOST /api/v1/llm/submit-client-tool-results-sync
llm.message_publishedWebhook JSON uses protobuf field names (snake_case).
llm.tool_call_approval_requiredWebhook JSON uses protobuf field names (snake_case).
llm.tool_call_completedWebhook JSON uses protobuf field names (snake_case).
llm.tool_call_startedWebhook JSON uses protobuf field names (snake_case).
MessageNested in model
MessageNested in model
MessageNested in model
ToolCallCompletedEventNested in model
ToolCallStartedEventNested in model

Download the public reference contract.

Document: DOC-API-MODEL-tool-call.