Skip to content

Chat Actions

Chat Actions is Kindo’s umbrella name for three orthogonal opt-in extensions on /v1/responses:

  1. Curated system prompt — let Kindo prepend its operational prompt.
  2. Kindo-hosted tools — call kindo_shell, kindo_web_search, and the rest of the Kindo hosted-tool catalog.
  3. Stateful conversations — let Kindo persist messages server-side so subsequent turns chain off them.

Each is independent. Default behavior on every API surface is stock provider behavior — Kindo does not silently inject prompts, tools, or state. You opt in explicitly, per request, when you want Kindo’s added value.

/v1/chat/completions and /v1/messages are stock OpenAI and stock Anthropic respectively. They do not accept the Chat Actions opt-ins; if you need the curated prompt, hosted tools, or stateful conversations, use /v1/responses.

Different teams want different mixes:

  • A platform team running their own agent loop wants Kindo’s governance, but not Kindo’s prompt or tools.
  • An ops team running ad-hoc investigations wants the full Kindo agent — curated prompt, hosted tools, persistent conversation.
  • A SOC team wants Kindo’s tool catalog and statefulness, but their own carefully-tuned system prompt.

Bundling these three concerns into a single mode switch (the old tools: [{type: "kindo_tools"}] sentinel) collapses the space. Chat Actions splits them apart so each request expresses exactly what it wants.

ConcernField
Curated system promptkindo.system_prompt: "agent_default"
Hosted tools (full)tools: [{type: "kindo_tools"}]
Hosted tools (individual)tools: [{type: "kindo_shell"}, ...]
Stateful conversationstore: true + conversation (spec-native)

For the field-level spec, see Responses → Chat Actions extensions.

Tool typePurpose
kindo_shellRun a sandboxed shell command on a Kindo-managed agent workstation.
kindo_web_searchSearch the web.
kindo_browser_controlDrive a headless browser session.
kindo_browser_screenshotCapture a screenshot of the current page.
kindo_browser_list_network_requestsList network requests captured by the browser tool.
kindo_browser_export_request_as_curlExport a captured request as a runnable curl command.
kindo_file_readRead a file the agent has access to.
kindo_file_writeWrite to a file the agent has access to.
kindo_file_listList files in an accessible directory.
kindo_web_downloadDownload a URL to the agent workspace.
kindo_files_download_originalFetch the original binary of a previously stored file.
kindo_files_download_as_textFetch a previously stored file as decoded text.
kindo_file_share_with_userShare a file with a Kindo user.
kindo_vpn_connectConnect the agent’s network egress to an organization VPN.
kindo_vpn_disconnectDisconnect from the organization VPN.
kindo_dashboard_generateGenerate a Kindo dashboard.
kindo_dashboard_updateUpdate a Kindo dashboard.
kindo_knowledge_store_searchSearch a Kindo knowledge store.

Tool types not in this list are forwarded verbatim, so new types work as soon as they’re hosted.

All examples below are /v1/responses requests.

Send no Chat Actions opt-ins. You get exactly what calling OpenAI directly would give you, plus Kindo’s governance.

B. “I want Kindo’s tools, but my own prompt”

Section titled “B. “I want Kindo’s tools, but my own prompt””
{
"tools": [{ "type": "kindo_tools" }]
}

Hosted tools turn on; your instructions / system / messages flow through verbatim.

C. “I want Kindo’s prompt and tools, but I’ll manage state myself”

Section titled “C. “I want Kindo’s prompt and tools, but I’ll manage state myself””
{
"store": true,
"kindo": { "system_prompt": "agent_default" },
"tools": [{ "type": "kindo_tools" }]
}

The API auto-creates a conversation and returns the new ID in conversation.id. To stay stateless, discard that ID and do not pass it back.

D. “I want the full Kindo agent experience”

Section titled “D. “I want the full Kindo agent experience””
{
"store": true,
"kindo": { "system_prompt": "agent_default" },
"conversation": "conv_...",
"tools": [{ "type": "kindo_tools" }]
}

Mixing Kindo-hosted tools with stock function tools

Section titled “Mixing Kindo-hosted tools with stock function tools”

You can mix Kindo-hosted entries ({type: "kindo_*"}) with stock OpenAI function tools in the same tools array on /v1/responses. The hosted-tool shape is uniform; the function-tool shape follows the per-API canonical form. See Responses tool use for the function-tool round trip.