SPB Git forge

spb/doc-api

Public
2commits 1branches 0releases
15.7 MBsize
maindefault branch
13 days agolast push
Python 88.3% TypeScript 7.6% Shell 4.1%
24.3 KB · 142 lines markdown
Rendered Raw Blame History
1# Agent platforms — OpenAI Agents API · Claude Managed Agents · xAI Responses loop + Grok Build · Gemini Interactions agents23**Status:** endpoint inventory and statuses from `generated/endpoints.json` (OpenAI `agents-platform/agents` 34 + `vaults` 9 + `chatkit` 6 + `workspace-agents` 2; Anthropic `managed-agents` 96; xAI `responses` 5 + `skills` 5 (ACCOUNT_RESTRICTED); Gemini `interactions` 9 + `agents` 4 + `environments` 7 + `triggers` 7 + `credentials` 5 + `webhooks` 7), events from `generated/streaming-events.json` and `generated/webhook-events.json`, parameters from `generated/parameters.json` (OpenAI agents 396 rows, Anthropic managed-agents 1,122, xAI `POST /v1/responses` 281, Gemini `POST /v1beta/interactions` 147, environments 14). Live: OpenAI 23/47 operations `LIVE_VERIFIED` (`gpt-5.6-luna`); Anthropic 20/96 (`claude-haiku-4-5-20251001`); xAI Responses agentic loop with web search / code interpreter / MCP `LIVE_VERIFIED` (`grok-4.3`); Gemini Interactions create/get/cancel/delete + Deep Research background run + environments CRUD `LIVE_VERIFIED`, custom agents / triggers / credentials / webhooks not tested. OpenAI and Anthropic are **BETA**; Gemini agents are **PREVIEW**; xAI's loop is GA with a **BETA** multi-agent model.4**Sources:** https://developers.openai.com/api/docs/guides/agents-api/overview · https://platform.claude.com/docs/en/managed-agents/overview · https://docs.x.ai/developers/tools/overview · https://docs.x.ai/build (Grok Build) · https://ai.google.dev/gemini-api/docs/interactions · https://ai.google.dev/gemini-api/docs/deep-research · https://ai.google.dev/gemini-api/docs/antigravity · docs/openai/agents-api.md · docs/anthropic/managed-agents.md · docs/xai/responses.md · docs/xai/grok-build.md · docs/gemini/interactions-api.md5**Last verified:** 2026-09-1867## 1. Positioning89| | OpenAI Agents API | Claude Managed Agents | xAI Responses agentic loop (+ Grok Build) | Gemini Interactions agents |10|---|---|---|---|---|11| What runs where | OpenAI hosts the **Codex harness** (model + tool loop + compaction + recovery); you supply tools, input and optionally your own execution environment | Anthropic hosts a **pre-built agent harness** (model loop, built-in tools in a Linux sandbox, compaction, persisted history); you handle only `custom` tools | **No agent resource.** One `POST /v1/responses` runs the model and its server-side tools (web/x search, code interpreter, collections, MCP, image generation) in a loop bounded by `max_turns`; the stored response is the session. **Grok Build** (`grok` CLI, BETA) is a client-side coding harness with MCP, hooks, skills, subagents and a local sandbox | Google hosts **agents as models**: `POST /v1beta/interactions {agent: …}` runs Deep Research (research loop with search/URL/code tools, background) or Antigravity (coding agent in a Linux sandbox) or a **custom managed agent** you define with `POST /v1beta/agents`; environments, credentials, triggers, webhooks are separate resources |12| Gate | `OpenAI-Beta: agents=v1`; restricted keys need `api.agents.*` scopes | `anthropic-beta: managed-agents-2026-04-01` (+ `agent-memory-2026-07-22`, `dreaming-2026-04-21`, `mcp-tunnels-2026-06-22`) | none (no beta headers); `grok-4.20-multi-agent-0309` BETA; Skills API 404 (ACCOUNT_RESTRICTED); `tool_search` alpha (403) | `/v1beta` path; agents `PREVIEW`; `GET /v1beta/interactions` (list) 404; `/v1/interactions` GA but UNVERIFIED |13| Models | Responses-capable current models; live `gpt-5.4-nano` rejected, `gpt-5.6-luna` accepted | Claude 4.5+ (Fable 5.1/5, Sonnet 5, Opus 5/4.8/4.7/4.6/4.5, Sonnet 4.6, Haiku 4.5) | any Grok text model (`grok-4.6`, `grok-4.5`, `grok-4.3`, 4.20 ids, `grok-build-0.1`); multi-agent model for fan-out | Deep Research agents (`deep-research-preview-04-2026`, `-max-`, `-pro-preview-12-2025`), Antigravity (`antigravity-preview-09-2026`, model `gemini-3.8-flash` default / 3.7 / 3.6 / 3.5 Flash / 3.5 Flash-Lite), custom agents built on `base_agent: antigravity-preview-09-2026` |14| Billing | model tokens at Responses rates + hosted-tool rates + container rates; harness base instructions ≈ 6k input tokens per turn observed | model tokens at list price + **$0.08 per session-hour** + $10 / 1k web searches | model tokens (incl. intermediate steps and reasoning) + per-call tool fees ($5/1k web/x/code, $2.50/1k collections, $10/1k attachments); `usage.cost_in_usd_ticks` per call; $0.05 fee per pre-generation policy violation | model inference at list rates incl. intermediate/reasoning tokens + tool fees; **sandbox compute unbilled during preview**; Deep Research est. $1–3 / $3–7 per task; Antigravity est. $0.25–3.25 per interaction |15| Data retention | server-side sessions/items; hosted sandbox ~1 h idle | stateful by design → **not ZDR / HIPAA eligible**; sandbox state 30 days | stored responses 30 days (`store: true`; ZDR teams cannot store) | interactions 55 days paid / 1 day free (`store: false` = stateless, no id); environments idle 15 min, deleted 7 days |16| Also on | api.openai.com only | Claude API and Claude Platform on AWS | api.x.ai (+ Vertex Model Garden / Foundry for the model, not the loop) | Gemini Developer API only (not Vertex AI) |1718## 2. Resource model side by side1920| Concept | OpenAI | Anthropic | xAI | Gemini | Notes |21|---|---|---|---|---|---|22| Agent definition | `POST /v1/agents` (`model`, `name`, `instructions`, `reasoning`, `text`, `service_tier`, `tools[]` ≤2000, `multi_agent`, `metadata`); not versioned | `POST /v1/agents` (`name`*, `model`*, `system` ≤100k, `tools[]` ≤128, `mcp_servers[]` ≤20, `skills[]`, `multiagent`); **versioned**; archive | none — the request body (`model`, `instructions`, `tools[]`, `max_turns`) is the definition; Grok Build stores agent config in `~/.grok/config.toml` | `POST /v1beta/agents {id, base_agent, agent_config, system_instruction, tools[], base_environment}` (≤1,000/project, no versioning, reserved id prefixes); built-in agents need no definition | |23| Execution environment | per session `environment: none \| openai_hosted{…} \| self_hosted{…}`; **templates** `/v1/agents/environments/templates` | `POST /v1/environments` (`cloud` sandbox Ubuntu 24.04, 8 GB RAM, 10 GB disk \| `self_hosted` work queue); reusable | none (Python code interpreter has no container object); `shell {environment: local}` runs on your machine | `POST /v1beta/environments {sources[] (repository ≤500 MB \| gcs ≤2 GB \| inline), network (unrestricted \| disabled \| allowlist + credentials), from_environment}`; Antigravity sandbox 4 vCPU / 16 GB (Python 3.12, Node 22); referenced by `interaction.environment {environment_id}` | |24| Session | `POST /v1/agents/sessions {agent\|agent_id, environment*, input, stream, vault_ids}` → 201 `agent.session`; statuses `idle → in_progress → requires_action → …` | `POST /v1/sessions {agent*, environment_id*, initial_events, resources[], vault_ids[], budget, title}` → 200 `session`; `idle`/`running`/`rescheduling`/`terminated` | `POST /v1/responses {…, store: true}` → `response` (`completed \| in_progress \| incomplete`); continue with `previous_response_id` | `POST /v1beta/interactions {agent\|model, input, background, store, environment, tools, webhook_config}` → `interaction` (`queued`, `in_progress`, `requires_action`, `completed`, `incomplete`, `failed`, `cancelled`); chain with `previous_interaction_id` | |25| Unit of work | **turn** (`GET …/turns[/{id}]`) | model requests (spans) | one `POST /v1/responses` (up to `max_turns` server-side iterations) | one interaction (Deep Research runs ≤60 min in background) | |26| History | **items** (`GET …/items`) | **events** (`GET …/events`) | `GET /v1/responses/{id}/input_items` + `output[]` | `GET /v1beta/interactions/{id}` → `steps[]` (`user_input`, `thought`, `model_output`, `function_call/result`, `*_call/*_result`) | |27| Live stream | SSE on `POST /sessions {stream:true}` or `GET …/events?stream=true`; 31 events | `GET /v1/sessions/{id}/events/stream`; 37 events | the Responses SSE stream (24 events) or `wss://api.x.ai/v1/responses` | `stream: true` → 15 event types; resume `GET …?stream=true&last_event_id=` | |28| Client → server events | `agent.session.input.message \| tool_result \| cancel` | `user.message`, `user.interrupt`, `user.tool_confirmation`, `user.custom_tool_result`, `user.tool_result`, `user.define_outcome`, `system.message` | a new `POST /v1/responses` (`function_call_output`, `shell_call_output`, user message) | a new `POST /v1beta/interactions` with `previous_interaction_id` (`function_result` steps, text); `POST …/cancel` | |29| Tool execution | function tools → `required_actions[]`; MCP; `web_search`; `tool_search`; `programmatic_tool_calling`; sandbox shell | built-in `agent_toolset_20260401` in the sandbox; `custom` tools; MCP via `mcp_servers` + vaults; `permission_policy` | server tools run inside the loop; `function`/`shell` calls end the request; MCP without approvals | Deep Research default tools `google_search`, `url_context`, `code_execution` (+ `mcp_server`, `file_search`); Antigravity built-ins (`code_execution` bash/python/node, `view_file`, `write_to_file`, `replace_file_content`, `list_dir`, `find_by_name`, `grep_search`) + custom `function` tools; hooks `.agents/hooks.json` | |30| Skills | `environment.skills[]` ≤200 | `agent.skills[]` ≤500 | `shell.environment.skills[]` (Skills API 404); Grok Build loads skills locally | custom agents mount `.agents/skills/<name>/SKILL.md` from environment sources | |31| Files in / out | `files[]`, `POST /v1/agents/environments/{id}/files`; **artifacts** | `resources[] {type: file, mount_path}`; outputs → Files API `scope_id` | `input_file` (attachment search $10/1k); outputs via `include` / Files API | environment `sources[]`, `PUT /upload/v1beta/environments/{env}/files/{path}` (≤2 GiB); outputs `GET …/files/{path}?alt=media`; Deep Research reports as `model_output` steps | |32| Secrets | **Vaults** + `mcp.credential_id` | **Vaults** (`mcp_oauth`, `environment_variable`) | inline `authorization`/`headers` on the `mcp` tool | **Credentials** (`bearer_token`, `oauth2`, `environment_variable`; `injection_location`, `trusted_domains`) referenced by environment network allowlists | |33| Multi-agent | `multi_agent.enabled`; subagents `/sessions/{id}/subagents…` | `multiagent {coordinator, agents[]}`; threads ≤25 | `grok-4.20-multi-agent-0309`: 4 or 16 agents inside one call (`reasoning.effort`) | none for custom agents (docs); Deep Research orchestrates internally | |34| Budgets | none (`session_budget_exceeded` error exists) | `budget {max_list_cost}`; `session.budget_reached` | `max_turns` (turns) | Antigravity `agent_config.max_total_tokens` → `incomplete` | |35| Quality loop | — | `user.define_outcome` → grader iterations | — | — | |36| Memory | — | memory stores `/v1/memory_stores`, dreams | — | — | |37| Scheduling | — | `/v1/deployments` (cron) → `/v1/deployment_runs` | — | `/v1beta/triggers {schedule, time_zone, interaction}`; `PATCH {status: paused\|active}`; `POST …/executions` | |38| Private MCP | Secure MCP Tunnel (`tunnel_id`) | `/v1/tunnels` | — | — (credentials + allowlists) | |39| Webhooks | `agent.session.*` via `/v1/webhook_endpoints` | 44 Managed Agents events (Console-registered) | SIP `realtime.call.incoming` only | `/v1/webhooks` (create/list/get/update/delete/rotate_secret) + per-request `webhook_config {uris[], user_metadata}`; events `interaction.completed\|failed\|cancelled\|requires_action`, `batch.succeeded\|failed`; JWKS-signed | |40| Observability | items, turns, traces (404 live) | events, `session.usage`, Console viewer, `ant beta:sessions connect` | `usage.cost_in_usd_ticks`, `server_side_tool_usage_details`, `num_server_side_tools_used` | `usage {total_*_tokens, *_by_modality, grounding_tool_count[]}`, `steps[]` timeline | |41| UI kit | ChatKit (Agent Builder shutdown 2026-11-30) | — | — | AI Studio (builder, free) | |4243## 3. Endpoint inventory (counts from `generated/endpoints.json`)4445| Family | OpenAI (34 + 9 + 6 + 2) | Anthropic (96) | xAI (5 + 5) | Gemini (9 + 4 + 7 + 7 + 5 + 7) |46|---|---|---|---|---|47| agents | `/v1/agents[/{id}]` (5) | `/v1/agents[/{id}]`, `/archive`, `/versions` (6) | — | `/v1beta/agents[/{id}]` (4; POST/GET/GET/DELETE) |48| sessions / runs | `/v1/agents/sessions…` (20) | `/v1/sessions…`, `/threads…` (19) | `POST /v1/responses`, `GET/DELETE /v1/responses/{id}`, `GET …/input_items`, `POST /v1/responses/compact` (5) | `POST /v1beta/interactions`, `GET/DELETE /v1beta/interactions/{id}`, `POST …/cancel`, `/v1/interactions…` (GA, UNVERIFIED) (9) |49| environments | `/v1/agents/environments/{id}[/files]`, `/templates[/{id}]` (7) | `/v1/environments…`, `/work…` (14) | — | `/v1beta/environments[/{id}]`, `…/files/{path}`, `PUT /upload/v1beta/environments/{env}/files/{path}`, legacy `GET /v1beta/files/environment-{env}:download` (7) |50| secrets | `/v1/vaults…` (9) | `/v1/vaults…` (13) | — | `/v1beta/credentials[/{id}]` (5) |51| memory / dreams | — | 14 + 5 | — | — |52| scheduling | — | `/v1/deployments…` (7), `/v1/deployment_runs…` (2) | — | `/v1beta/triggers[/{id}]`, `…/executions` (7) |53| tunnels / profiles | — | 10 + 5 | — | — |54| skills | `/v1/skills…` (11) | `/v1/skills…` (9) | `/v1/skills…` (5, all 404 → ACCOUNT_RESTRICTED) | — |55| webhooks | `/v1/webhook_endpoints…` (8) | Console only | `POST /v2/phone-numbers` (SIP webhook) | `/v1/webhooks…` (7) |56| UI / workspace | `/v1/chatkit/…` (6), `api.chatgpt.com/v1/workspace_agents/…` (2) | — | — | — |5758## 4. The same task on all four providers — run one agentic turn and stream it5960```bash61# OpenAI (LIVE_VERIFIED shapes; header OpenAI-Beta: agents=v1)62curl https://api.openai.com/v1/agents -H "Authorization: Bearer $OPENAI_API_KEY" -H "OpenAI-Beta: agents=v1" -H "Content-Type: application/json" \63  -d '{"model":"gpt-5.6-luna","name":"atlas-demo","instructions":"Reply with OK.","reasoning":{"effort":"low"}}'64curl -N https://api.openai.com/v1/agents/sessions -H "Authorization: Bearer $OPENAI_API_KEY" -H "OpenAI-Beta: agents=v1" -H "Content-Type: application/json" \65  -d '{"agent_id":"agent_…","environment":{"type":"none"},"input":"Reply with OK.","stream":true}'66# SSE: agent.session.created → agent.session.turn.created → …output_text.delta → agent.session.turn.completed → agent.session.idle67```68```bash69# Anthropic (LIVE_VERIFIED shapes; header anthropic-beta: managed-agents-2026-04-01)70H=(-H "x-api-key: $ANTHROPIC_API_KEY" -H "anthropic-version: 2023-06-01" -H "anthropic-beta: managed-agents-2026-04-01" -H "content-type: application/json")71curl https://api.anthropic.com/v1/agents "${H[@]}" -d '{"name":"atlas-demo","model":"claude-haiku-4-5-20251001","system":"Reply with OK."}'72curl https://api.anthropic.com/v1/environments "${H[@]}" -d '{"name":"atlas-env","config":{"type":"cloud"}}'73curl https://api.anthropic.com/v1/sessions "${H[@]}" -d '{"agent":"agent_…","environment_id":"env_…","initial_events":[{"type":"user.message","content":[{"type":"text","text":"Reply with OK."}]}]}'74curl -N "https://api.anthropic.com/v1/sessions/sesn_…/events/stream" "${H[@]}"75# SSE: session.status_running → span.model_request_start → agent.message → span.model_request_end → session.usage → session.status_idle76```77```bash78# xAI (LIVE_VERIFIED shapes; no agent resource — the Responses call is the agentic loop)79curl -N https://api.x.ai/v1/responses -H "Authorization: Bearer $XAI_API_KEY" -H "Content-Type: application/json" \80  -d '{"model":"grok-4.3","input":"What is the latest xAI release note? Reply in one line.",81       "tools":[{"type":"web_search"},{"type":"code_interpreter"}],"max_turns":3,"store":true,"stream":true}'82# SSE: response.created → response.output_item.added(reasoning) → … → response.output_item.added(web_search_call) → response.output_item.done83#      → response.output_item.added(message) → response.output_text.delta… → response.completed (usage.server_side_tool_usage_details, cost_in_usd_ticks)84# follow-up: POST /v1/responses {"model":"grok-4.3","previous_response_id":"resp_…","input":"Summarise in 5 words."}85```86```bash87# Gemini (LIVE_VERIFIED shapes; snake_case body; header x-goog-api-key)88curl -N https://generativelanguage.googleapis.com/v1beta/interactions -H "x-goog-api-key: $GEMINI_API_KEY" -H "Content-Type: application/json" \89  -d '{"model":"gemini-3.5-flash-lite","input":"Reply with OK.","tools":[{"type":"code_execution"}],"stream":true}'90# SSE: interaction.created → interaction.status_update → step.start(thought) → step.delta{thought_signature} → step.stop → step.start(model_output) → step.delta{text} → step.stop → interaction.completed → done91# agent run (background, LIVE_VERIFIED create → in_progress → cancel):92curl https://generativelanguage.googleapis.com/v1beta/interactions -H "x-goog-api-key: $GEMINI_API_KEY" -H "Content-Type: application/json" \93  -d '{"agent":"deep-research-preview-04-2026","input":"Summarise the four providers'"'"' agent APIs.","background":true,"agent_config":{"type":"deep-research","thinking_summaries":"auto"}}'94# poll GET /v1beta/interactions/{id}  ·  stop POST /v1beta/interactions/{id}/cancel95```9697Follow-up input: OpenAI `POST /v1/agents/sessions/{id}/events {"events":[{"type":"agent.session.input.message","content":"…"}]}`; Anthropic `POST /v1/sessions/{id}/events {"events":[{"type":"user.message","content":[{"type":"text","text":"…"}]}]}`; xAI `POST /v1/responses {"previous_response_id":"resp_…","input":"…"}`; Gemini `POST /v1beta/interactions {"model":"…","previous_interaction_id":"v1_…","input":"…"}`.9899## 5. Function-tool round trip inside a session100101| Step | OpenAI | Anthropic | xAI | Gemini |102|---|---|---|---|---|103| declare | `agent.tools: [{type: function, name, description, parameters}]` | `agent.tools: [{type: custom, name, description, input_schema}]` | `tools: [{type: function, name, description, parameters}]` on the Responses call | `tools: [{type: function, name, description, parameters}]` (Interactions) / `functionDeclarations` (generateContent); custom agents: `tools[]` in the agent definition |104| call surfaces | stream `agent.session.requires_action`; `session.required_actions[{type: function_call, turn_id, call_id, name, arguments}]`; webhook `agent.session.action_required` | stream `agent.custom_tool_use {id, name, input}` then `session.status_idle {stop_reason: {type: requires_action}}`; webhook `session.requires_action` | `output[] {type: function_call, call_id, name, arguments}`; the server loop ends and the response completes | `status: requires_action`; `steps[] {type: function_call, id, name, arguments}`; stream `interaction.requires_action` (`DOCUMENTATION_INCOMPLETE`); webhook `interaction.requires_action` |105| answer | `POST …/events {type: agent.session.input.tool_result, turn_id, call_id, success, output}` | `POST …/events {type: user.custom_tool_result, custom_tool_use_id, content}` | `POST /v1/responses {previous_response_id, input: [{type: function_call_output, call_id, output}]}` (fresh `max_turns`) | `POST /v1beta/interactions {previous_interaction_id, input: [{type: function_result, call_id, name, result}]}` |106| approvals | MCP `require_approval` | `permission_policy: always_ask` → `user.tool_confirmation` | none | computer use `safety_decision` → `safety_acknowledgement` |107| self-hosted commands | `codex exec-server` runs shell; `command_execution` items | worker claims work items, posts `user.tool_result` | `shell {environment: local}` → `shell_call` → `shell_call_output`; Grok Build runs locally | — |108109## 6. Sandboxes and self-hosting110111| | OpenAI hosted | Anthropic cloud | Gemini environment (Antigravity / custom agents) | OpenAI self-hosted | Anthropic self-hosted | xAI |112|---|---|---|---|---|---|---|113| Base | `/workspace`; packages, ≤16 setup commands, network `enabled\|disabled\|restricted`, env vars | Ubuntu 24.04, 8 GB RAM, 10 GB disk, `/workspace`, `/mnt/session/{uploads,outputs}`, `/mnt/memory` | Linux, 4 vCPU / 16 GB, Python 3.12, Node 22; `sources[]` repository/GCS/inline; `network` unrestricted / disabled / allowlist (+ credentials); hooks `.agents/hooks.json` | `codex exec-server --remote …`, outbound-only, `CODEX_API_KEY` | work queue poll/ack/heartbeat/stop; `ant beta:worker`; `sk-ant-oat01-…` | no hosted sandbox for agents (code interpreter runs Python without a container object; `shell` local; Grok Build Landlock/Seatbelt sandbox on your machine) |114| Lifetime | ~1 h idle | checkpointed; 30 days | idle after 15 min, deleted after 7 days; `from_environment` clones | your compute | your compute | your compute |115| Outputs | artifacts from `/workspace/outputs` (≤200 MiB) | files from `/mnt/session/outputs` (Files API) | `GET /v1beta/environments/{env}/files/{path}?alt=media` (bytes or tar) | never published as artifacts | posted as tool results | `code_interpreter_call.outputs` via `include`; Files API |116| Templates / reuse | `/v1/agents/environments/templates` | environments are reusable resources | `base_environment` on custom agents; `from_environment` | — | — | — |117| Compute price | container rates | $0.08 / session-hour | **not billed during preview** | — | — | $5 / 1k code-interpreter calls |118119## 7. Limits (documented)120121| Limit | OpenAI | Anthropic | xAI | Gemini |122|---|---|---|---|---|123| tools per agent / request | 2,000 | 128 (across toolsets); 20 MCP servers | ≤350 (Chat); MCP servers: multiple allowed, no cap documented | 512 function declarations (SDK); custom agents ≤1,000 per project |124| skills | 200 per environment | 500 per session | Skills API inaccessible (404) | via environment sources (≤500 MB repo / 2 GB GCS / 1 MB inline files) |125| files | 50 per create; inline 5 MiB; artifact 200 MiB | 500 per session; body 32 MB | Files 50 MB (spec) / 512 MB (guide); attachments $10/1k | environment upload ≤2 GiB per file; Files API 2 GB / 20 GB project |126| concurrency | `max_concurrent_subagents` 6 | 25 threads; roster 20 | multi-agent model 4 or 16 agents; RPS 9→56 for that model | Deep Research ≤60 min per run; environments per project quota (`storage.tier: free`, 1 GiB observed) |127| rate limits | none documented for Agents endpoints | create 300 / read 1,200 req/min/org | Responses share the model's RPS/TPM tiers; Batch bypasses | per-project RPM/TPM/RPD; agents not on the free tier (Deep Research `LIVE_VERIFIED` here on create/cancel) |128| retention | sessions server-side; sandbox ~1 h | sandbox 30 days | stored responses 30 days | interactions 55 d paid / 1 d free; environments 7 days |129| webhook delivery | Standard Webhooks retries | ≤3 attempts, 5-min freshness | HMAC-SHA256 Standard Webhooks (SIP only) | JWKS-signed; `webhook_config.uris[]` per request or `/v1/webhooks` resources |130131## 8. Where the other building blocks sit132133| Need | OpenAI | Anthropic | xAI | Gemini |134|---|---|---|---|---|135| Client-side agent loop library | Agents SDK (`openai-agents`, `@openai/agents`) | Claude Agent SDK; `ant` CLI; SDK `tool_runner` | **Grok Build CLI** (`grok`, `grok -p … --output-format json`, `grok agent stdio` ACP; `api_backend = chat_completions\|responses\|messages`); xai-sdk Python; OpenAI SDK with `baseURL` | google-genai automatic function calling, `mcpToTool()`; Genkit, Firebase AI Logic, Vercel AI SDK, LangGraph/CrewAI/LlamaIndex |136| Durable chat state without a harness | Conversations API + Responses | Messages (stateless) — none | stored Responses + `previous_response_id` | Interactions with `model` + `previous_interaction_id` |137| Visual builder / embedded UI | Agent Builder (shutdown 2026-11-30) + ChatKit; Workspace Agents in ChatGPT | Console visual builder, session viewer | Grok Apps / Grok Bot (consumer products) | AI Studio (free), Antigravity IDE product |138| Research agent product | deep-research models retired; Responses `web_search` + `background` | web search + web fetch on Messages; Managed Agents | Responses with `web_search` + `x_search` + `code_interpreter`, `max_turns` 10+ | **Deep Research agents** (`background: true`, `collaborative_planning`, `visualization`) |139| Retired predecessor | Assistants API (RETIRED 2026-08-26) | — | Live Search on Chat (410); `/v1/messages` compat (deprecated) | Interactions legacy schema (`outputs`, `content.*` events) removed 2026-06-08; `antigravity-preview-05-2026` → 2026-10-05 |140141Related: [features](features.md) · [state-management](state-management.md) · [tool-execution](tool-execution.md) · [streaming](streaming.md) · docs/openai/agents-api.md · docs/anthropic/managed-agents.md · docs/xai/responses.md · docs/xai/grok-build.md · docs/gemini/interactions-api.md.142