Customer-facing chat
Embed a support agent in your product and stream its reasoning into your own UI.
REST + SSECreate, configure and invoke agents over a REST API with streamed execution events. No capability is console-only, and every call lands in the same audit trail your operators use.
/v1/agents/v1/agents/agt_7Q2f/invoke/v1/agents/agt_7Q2f/v1/agents/agt_7Q2f/toolsIdempotent on name: a repeat call returns the existing agent.
call_2f9a · POST /v1/agentsSame event contract the console UI consumes.
call_41c8 · renewal-assistant · support-widgetConfig changes are versioned and revertable by version id.
call_7d10 · PATCH agt_7Q2f · version 12Anything outside the allowlist is unreachable, even if advertised.
call_93be · POST agt_7Q2f/toolsSend the request to open the stream.
The same configured agent answers a support widget, a queue worker and an internal Slack bot. One integration, one permission model, one place to change the prompt.
Embed a support agent in your product and stream its reasoning into your own UI.
REST + SSETrigger an agent from a queue worker, cron job or webhook with an idempotency key.
RESTRoute Slack, email or ticketing events into the same agent without a second integration.
WebhookOne agent’s structured output becomes another’s input, with the chain logged end to end.
REST + SSEagt_7Q2freadyScoped keys decide which agents a caller can reach, the same way on every surface.
Edit the agent once. Every surface picks up the change on its next call.
Every call from every surface is written to the same log.
Rate limits, retries and idempotency keys behave identically across surfaces.
Keys are scoped per environment and per agent. Revoking a grant takes effect on the next request, with no redeploy and no rotation window.
Sample keys and agents. Grants shown here are illustrative.
Each call stores its inputs, retrieved context, tool calls and final output. When a customer disputes an answer, you can show exactly what the agent saw.
Execution tracecall_41c8
“draft a renewal email for Acme Co” · mode agent · session sess_41c8
3 passages · MSA v6 §11.2 (0.94), Renewal playbook §3, Acme account notes
get_account(id="acme-co") → 200 in 62ms
Draft renewal email · 214 tokens · 2 citations attached
Execution tracecall_3b07
New ticket: “Invoice shows a duplicate charge”
2 passages · Billing FAQ (0.91), Refund policy §2
classify_ticket → billing · 40ms
Routed to the Billing queue · priority normal
Execution tracecall_e5a2
“Review the Calloway MSA for liability caps”
None retrieved
None called
Sandbox keys cannot reach production knowledge bases.
Execution tracecall_90d4
“Summarise renewal terms for account acme-co”
2 passages · MSA v6 §11.2 (0.94), Order form 2025-03
get_account(id="acme-co") → 200 in 58ms
Four-line renewal summary · 1 citation attached
Execution tracecall_c61f
“why was I charged twice this month?”
1 passage · Billing policy v4 §2 (0.89)
None called
Plain-language explanation · 1 citation attached
Execution tracecall_2a8e
“where is my invoice for September?”
1 passage · Billing FAQ (0.88) · kept for replay
lookup_invoice → timed out after 10s
Tool call timed out. No answer was returned to the caller.
Showing the last 6 of 41,208 invocations today. Each row expands to the full execution trace.
Sample records for illustration.
The parts a platform team asks about before anything ships.
Thoughts, tool calls and tokens arrive as server-sent events, so your own interface can show progress instead of a spinner.
text/event-streamModels, guardrails, attached knowledge bases and tool grants are all PATCHable. Nothing about an agent requires shipping code.
PATCH /v1/agents/:idRegister MCP servers or your own endpoints as callable tools, with an allowlist per agent and a schema checked on every call.
allowlist per agentPer-tenant data boundaries, scoped keys and an immutable execution log: the artefacts a security review actually asks for.
scoped keys + execution logRequest shapes below are the same ones the explorer sends.
Sandbox keys are issued instantly and scoped to a demo agent, so you can call it before anything is connected.
tt_test_••••••••9a08demo-agentStart from a template and attach what it should know. Repeating the call returns the same agent.
curl -X POST "$THINKSTACK_API/v1/agents" \
-H "Authorization: Bearer $THINKSTACK_KEY" \
-H "Content-Type: application/json" \
-d '{"template": "support_triage",
"name": "renewal-assistant",
"knowledge_bases": ["legal", "sales"]}'Events arrive as the agent works: thinking, retrieval, tool calls, then the answer.
curl -N -X POST "$THINKSTACK_API/v1/agents/agt_7Q2f/invoke" \
-H "Authorization: Bearer $THINKSTACK_KEY" \
-H "Content-Type: application/json" \
-d '{"input": "draft a renewal email for Acme Co",
"mode": "agent",
"stream": true}'Illustrative request shapes. Base URL and auth header will be confirmed with the API reference.