Agents and Runtime

Agent Runtime

ToolDescriptionPermission
delete_workspacePermanently delete a retained runtime workspace and all of its files.agent:read
read_workspace_fileRead a file from your Agent Runtime's retained workspace using its run_id.agent:read
transfer_workspace_fileCopy a file between this machine and a Remote Agent's workspace without reading it.agent:read
write_workspace_fileCreate a file in your Agent Runtime's retained workspace using its run_id.agent:read
start_agent_runStart a background run on an Agent that has Agent Runtime.agent:read
get_agent_runRead a run's state, the result it has handed back so far, and whether it accepts a follow-up.agent:read
list_agent_runsList recent runs on one or more accessible Agents, newest first.agent:read
steer_agent_runSend one message to a run: a course correction to a live run without stopping the work, or, when the run has finished and its workspace is retained, a follow-up that continues the SAME run and save...agent:read
cancel_agent_runStop an active run.agent:read
post_agent_run_messagePost a brief update to the Slack thread an active Agent Runtime run reports to.agent:read
post_agent_run_fileUpload a file into the messaging-channel thread a run reports to — a demo recording, for example — so it renders natively there (Slack plays video uploads inline).agent:read
transfer_credentialGive a Remote Agent a credential, so a handed-over task can use the CLI authentication the local session was using.credential:create

delete_workspace

Required RBAC permission: agent:read

Input

ParameterTypeRequiredDescription
run_idstringYes
confirm_deletetrueYes

read_workspace_file

Required RBAC permission: agent:read

Input

ParameterTypeRequiredDescription
run_idstringYes
pathstringYes
encoding"utf8" | "base64"No

transfer_workspace_file

Required RBAC permission: agent:read

Input

ParameterTypeRequiredDescription
run_idstringYesFrom start_agent_run or list_agent_runs.
direction"download" | "upload"Yesdownload reads from the workspace; upload writes to it.
pathstringYesWorkspace-relative path, for example reports/summary.md.
local_pathstringYesAbsolute path on this machine, used to build the command.
sizeintegerNoUpload only: the local file's size in bytes.
sha256stringNoUpload only: the local file's sha256, as hex.

write_workspace_file

Required RBAC permission: agent:read

Input

ParameterTypeRequiredDescription
run_idstringYes
pathstringYes
contentstringYes
encoding"utf8" | "base64"No
overwritebooleanNo

start_agent_run

Required RBAC permission: agent:read

Input

ParameterTypeRequiredDescription
agent_idstringNoThe agent to do the work. Omit when calling through an MCP gateway to select an assigned runtime subagent using the gateway's load-balancing policy.
exclude_agent_idsstring[]NoRuntime subagents that already failed on a previous attempt for this request, to skip when selecting a fallback on an MCP gateway.
credential_grant_idsstring[]NoOne-time credential_grant_id handles minted by transfer_credential({ ephemeral: true }). Consumed at launch and bound only to the winning runtime pod.
messagestringYesWhat the agent should do, including handoff context and acceptance criteria.
attachmentsobject[]NoInput files staged before the first turn. For repository work, include a patch for uncommitted changes and identify the base commit in message. Never include credentials.
attachments[].namestringYes
attachments[].contentTypestringYes
attachments[].contentBase64stringYes
limitsobjectNoLimits for this run, each at or below the Agent's own (for the tier, its largest tier); a larger value is refused with the maximum named. Omit to take the Agent's defaults.
limits.tierstringNoThe name of one of the organization's runtime tiers, at or below this Agent's scaleup tier. Choose by size, not by name: inside a run, $ARCHESTRA_AGENT_RUNTIME_TIERS lists the tiers the run may move to with their CPU, memory and workspace size; pick the smallest that covers the work. To move work to another tier, start a run of the same Agent at that tier and hand over the branch. A tier above the scaleup tier is refused with the allowed tiers and their sizes named.
limits.min_cpunumberNoCPUs the work needs. The run gets the smallest tier this Agent may use with at least this many and no smaller workspace than the Agent's default tier; refused with the allowed tiers named when none has. Use this when the tier names are unknown.
limits.min_memory_gibnumberNoGiB of memory the work needs, with the same effect as min_cpu.
limits.idle_timeout_minutesintegerNo
limits.max_duration_hoursintegerNoHours until the run and its saved files end. Keep it short for work that nobody continues.
limits.max_cost_usdintegerNo

Output

FieldTypeRequiredDescription
runobjectYes
run.run_idstringYesStable handle for every follow-up: get_agent_run, steer_agent_run, cancel_agent_run and the workspace file tools.
run.statestringYessubmitted | working | input-required | completed | canceled | failed
run.agent_idstring | nullYesThe agent doing the work.
run.agent_namestring | nullNoDisplay name of the agent doing the work, when known.
run.status_reasonstring | nullYesWhy the run is in its state, when there is something to say.
run.failureobject | nullYesMachine-readable failure of a failed run: a stable code and whether a new run of the same Agent is likely to succeed unchanged. Null otherwise.
run.failure.codestringYes
run.failure.retriablebooleanYes
run.created_atstringYesISO 8601.
run.state_changed_atstringYesISO 8601 of the last transition.
run_urlstringYesOpen the run and its workspace in the browser.
limitsobject | nullYes
limits.tierstring | nullYesThe name of the runtime tier the run has, as the organization sizes it.
limits.idle_timeout_minutesnumberYes
limits.max_duration_hoursnumberYesThe run and its saved files end this many hours after the start.
limits.max_cost_usdnumber | nullYes
limits.workspace_gibnumberNoThe size of the run's workspace volume in GiB. Absent for a workspace from before sizes were recorded.
next_stepstringYesWhat to do now.

get_agent_run

Required RBAC permission: agent:read

Input

ParameterTypeRequiredDescription
run_idstringYesFrom start_agent_run or list_agent_runs.

Output

FieldTypeRequiredDescription
runobjectYes
run.run_idstringYesStable handle for every follow-up: get_agent_run, steer_agent_run, cancel_agent_run and the workspace file tools.
run.statestringYessubmitted | working | input-required | completed | canceled | failed
run.agent_idstring | nullYesThe agent doing the work.
run.agent_namestring | nullNoDisplay name of the agent doing the work, when known.
run.status_reasonstring | nullYesWhy the run is in its state, when there is something to say.
run.failureobject | nullYesMachine-readable failure of a failed run: a stable code and whether a new run of the same Agent is likely to succeed unchanged. Null otherwise.
run.failure.codestringYes
run.failure.retriablebooleanYes
run.created_atstringYesISO 8601.
run.state_changed_atstringYesISO 8601 of the last transition.
run_urlstring | nullYes
limitsobject | nullYes
limits.tierstring | nullYesThe name of the runtime tier the run has, as the organization sizes it.
limits.idle_timeout_minutesnumberYes
limits.max_duration_hoursnumberYesThe run and its saved files end this many hours after the start.
limits.max_cost_usdnumber | nullYes
limits.workspace_gibnumberNoThe size of the run's workspace volume in GiB. Absent for a workspace from before sizes were recorded.
requestsobject[]YesThe run's original request and, when different, the current turn's request. Use this context to interpret short follow-ups.
requests[].textstringYes
requests[].truncatedbooleanYes
outputstringYesThe run's response artifact so far (tail, capped).
output_truncatedbooleanYes
workspaceobject | nullYesThe owner's retained workspace, independent of the run's terminal state.
workspace.state"active" | "idle" | "suspending" | "suspended" | "resuming" | "deleting" | "deleted"Yes
workspace.retained_untilstringYes
workspace.can_continuebooleanYesWhether steer_agent_run can accept a follow-up in this workspace, including while work is running.
workspace.continuation_errorstring | nullYesWhy this workspace cannot accept steering, or null when available.
workspace.connectionobject | nullYes
workspace.connection.hostnamestringYes
workspace.connection.shellCommandstringYes
sessionobject | nullYesThe live container session, when the run uses Agent Runtime.
session.attachablebooleanYesWhether a live container is carrying the run right now.
session.started_atstring | nullYes

list_agent_runs

Required RBAC permission: agent:read

Input

ParameterTypeRequiredDescription
agent_idsstring[]Yes
mine_onlybooleanNoOnly runs you started.
state"submitted" | "working" | "input-required" | "completed" | "canceled" | "failed"NoOnly runs in this state.
failed_sincestringNoWith state=failed, include failed earlier turns since this UTC timestamp, ordered by failure time. Keeps the same Agent access checks and limit; cannot be combined with mine_only.
current_thread_onlybooleanNoOnly runs originating in the current messaging thread. Requires messaging context; never falls back to an unfiltered list.
limitintegerNo

Output

FieldTypeRequiredDescription
runsobject[]Yes
runs[].run_idstringYesStable handle for every follow-up: get_agent_run, steer_agent_run, cancel_agent_run and the workspace file tools.
runs[].statestringYessubmitted | working | input-required | completed | canceled | failed
runs[].agent_idstring | nullNoThe agent doing the work.
runs[].agent_namestring | nullNoDisplay name of the agent doing the work, when known.
runs[].status_reasonstring | nullYesWhy the run is in its state, when there is something to say.
runs[].failureobject | nullYesMachine-readable failure of a failed run: a stable code and whether a new run of the same Agent is likely to succeed unchanged. Null otherwise.
runs[].created_atstringNoISO 8601.
runs[].state_changed_atstring | string | nullYesISO 8601 of the last transition.
runs[].llm_session_idstring | nullNoVerified LLM telemetry session key for /llm/logs/:id (the run's workload name); URL-encode it as one path segment. Null when no readable logged session is available. It is not a run_id: never pass it to the run tools.
runs[].titlestringNo
runs[].promptstringNo
runs[].started_atstringNo
runs[].ended_atstring | nullNo
runs[].hard_deadline_atstringNoWhen the runtime will be forcefully stopped.
runs[].last_model_activity_atstring | nullNoMost recent model request attributed to this run.
runs[].attention_state"input_required" | "auth_required" | nullNoNative runtime signal that the live process needs user attention.
runs[].agentobjectNo
runs[].requesterobjectNo
runs[].run_urlstringNo
runs[].threadobject | nullNo
summaryobjectYes
summary.totalintegerYes
summary.activeintegerYes
summary.by_stateobjectYes

steer_agent_run

Required RBAC permission: agent:read

Input

ParameterTypeRequiredDescription
run_idstringYes
messagestringYes

cancel_agent_run

Required RBAC permission: agent:read

Input

ParameterTypeRequiredDescription
run_idstringYes

post_agent_run_message

Required RBAC permission: agent:read

Input

ParameterTypeRequiredDescription
task_idstringYes
messagestringYes

post_agent_run_file

Required RBAC permission: agent:read

Input

ParameterTypeRequiredDescription
task_idstringYes
pathstringNoThe file in the run's own workspace, relative to /home/node/workspace (for example demo/demo.mp4) or absolute under it.
filenamestringNoName shown in the thread. Defaults to the last part of path; required with content_base64.
content_base64stringNoThe file's bytes, base64-encoded, when there is no path.
commentstringNo

transfer_credential

Required RBAC permission: credential:create

Input

ParameterTypeRequiredDescription
agent_idstringNoThe Agent to give the credential to. Omit when calling through an MCP gateway to transfer the credential to all runtime subagents assigned to the gateway.
environmentobject[]YesExactly one credential to transfer. Never include more than the task needs.
environment[].keystringYesEnvironment variable name, e.g. AWS_SECRET_ACCESS_KEY.
environment[].type"secret"YesAlways 'secret'. Marks the value for redaction in logs.
environment[].valuestringNoThe credential value to transfer. OMIT IT to declare the credential without a value and get back a link the person opens to paste it themselves — the value then never enters your context. Send a value only when the person asked you to move one you already hold.
labelstringNoHuman-readable name shown in the Agent's credential list. Defaults to the key.
ephemeralbooleanNoWhen true, mints a short-lived one-time credential_grant_id handle instead of persisting the secret in the database or mutating subagent declarations. Pass the returned credential_grant_id to start_agent_run so the secret is bound only to the single winning subagent pod.
ttl_secondsintegerNoOptional TTL in seconds (30–3600, default 300) for an ephemeral credential grant. Implies ephemeral: true.

Output

FieldTypeRequiredDescription
keystringYesThe environment variable the value is stored under.
scope"personal"YesWho the value applies to. Always personal to the calling user.
declarationCreatedbooleanYesWhether this call declared the credential on the Agent.
valueStoredbooleanYesWhether a value is now stored. False means the credential is declared and still empty.
urlstring | nullYesWhere the person pastes the value. Null when this call already stored one.
urlsstring[]NoAll per-subagent setup links when declaring a credential across multiple subagents.
ephemeralbooleanNoTrue when the credential was minted as a short-lived one-time grant instead of stored in the database.
credential_grant_idstring | nullNoOne-time credential grant handle to pass to start_agent_run when ephemeral is true.
expires_in_secondsintegerNoSeconds until the ephemeral credential grant expires.
availabilitystringYesWhen a run can read the value, in plain words.
next_stepstringNoWhat to do with url: hand it over in the reply text, never inside a question form. Only set while a value is still missing.

Agents

ToolDescriptionPermission
create_agentCreate a new agent with the specified name, optional description, labels, prompts, icon emoji, model, explicit tool assignments, and sub-agent delegations.agent:create
get_agentGet a specific agent by ID or name.agent:read
list_agentsList agents with optional filtering by name, provider key, or how the caller reaches them (access).agent:read
edit_agentEdit an existing agent.update on the agent (granted per item)
get_agent_skill_policyRead an internal agent's skill allowlist, exclusions and current revision.agent:read †
patch_agent_skill_policyChange an internal agent's skill activation mode, allowlist or exclusions using its current expectedRevision from get_agent_skill_policy.update on the agent (granted per item) †
list_llm_modelsList the provider API keys the caller can use and the models linked to each.llmModel:read
list_hooksList an agent's lifecycle hooks.agent:read
create_hookCreate a lifecycle hook on an agent.update on the agent (granted per item)
update_hookUpdate an existing lifecycle hook: its event, file name, script content, Python requirements, or enabled state.update on the agent (granted per item)
delete_hookDelete a lifecycle hook by ID.update on the agent (granted per item)

† This tool enforces an additional access requirement beyond its RBAC permission — see its details below.

create_agent

Required RBAC permission: agent:create

Input

ParameterTypeRequiredDescription
initialGrantsobject[]No
initialGrants[].subjectobjectYes
initialGrants[].subject.type"user" | "team" | "serviceAccount" | "role" | "organization"Yes
initialGrants[].subject.idstring | "*"Yes
initialGrants[].actionsstring[]Yes
namestringYesName for the new resource.
labelsobject[]NoOptional key-value labels for organization and categorization.
labels[].keystringYes
labels[].valuestringYes
toolExposureMode"full" | "search_and_run_only"NoHow tools should be loaded for MCP clients and models. Use 'search_and_run_only' to keep the initial tool list small while letting search_tools find assigned tools and run_tool execute them. MCP gateways defer skill, file, sandbox, run lifecycle and policy-management capabilities in this mode; questions and guardrails session/peer-message controls remain directly available. search_tools summarizes the caller's available built-in capability groups as well as connected MCP servers. Manual gateways also keep explicitly assigned MCP App UI tools available for client rendering. Internal chat keeps assigned skill discovery/loading, file, sandbox and run lifecycle tools directly available for its skill activation and file guidance. App tools (scaffold_app, edit_app, read_app, render_app, list_apps, and the rest of the app surface) are reached through search_tools/run_tool in 'search_and_run_only' mode.
accessAllToolsbooleanNoAllow dynamic tool access: search_tools/run_tool may discover and run any tool the calling user can access (MCP catalog tools and knowledge sources) without assigning it to the agent. Enabling this forces toolExposureMode to 'search_and_run_only', since dynamic access only works through the search/run dispatch surface. Defaults to false. Also gated by the organization's security settings.
accessAllSubagentsbooleanNoAllow dynamic subagent delegation: the agent may delegate to any internal agent the calling user can access, beyond explicitly-configured delegation targets (minus subagent exclusions). Defaults to false.
descriptionstring | nullNoOptional human-readable description of the agent.
iconstring | nullNoOptional emoji icon for the agent.
knowledgeBaseIdsstring[]NoKnowledge base IDs to assign to the agent. Use get_knowledge_bases first when you need to look up IDs by name.
connectorIdsstring[]NoKnowledge connector IDs to assign directly to the agent. Use get_knowledge_connectors first when you need to look up IDs by name.
subAgentIdsstring[]NoAgent IDs to delegate to from this newly created agent.
suggestedPromptsobject[]NoOptional suggested prompts that appear in the chat UI.
suggestedPrompts[].summaryTitlestringYesShort title shown to users for this suggested prompt.
suggestedPrompts[].promptstringYesSuggested prompt text users can click to start a conversation.
systemPromptstring | nullNoThe system prompt that defines the agent's behavior.
toolAssignmentsobject[]NoExplicit tool assignments to create immediately after the agent is created.
toolAssignments[].toolIdstringYesThe ID of the tool to assign to the agent.
toolAssignments[].resolveAtCallTimebooleanNoWhen true, resolve credentials and execution target at tool call time. Prefer this for builder flows.
toolAssignments[].credentialResolutionMode"static" | "dynamic" | "enterprise_managed"No
toolAssignments[].mcpServerIdstring | nullNoOptional MCP server installation to pin the tool to when using static credential resolution.
runtimeobjectNoRun this agent in its own container (Agent Runtime) instead of the built-in chat harness. Pass { template } for a maintained CLI, or { image } for a custom image. Other fields override the defaults: claudeCode.authentication is 'subscription' (each user signs in with their own Claude account, the default) or 'provider' (bill through llmApiKeyId/modelId); credentials declares environment variables a run needs (users supply values later, or use transfer_credential); ttlHours, idleTimeoutMinutes, and maxCostUsd bound each run; privileged requires an agent administrator.
runtime.backend"kubernetes"No
runtime.steerMode"pipe" | "tmux_keys"No
runtime.privilegedbooleanNo
runtime.tierstring | nullNo
runtime.maxTierstring | nullNo
runtime.portsinteger[]No
runtime.environmentobject[] | nullNo
runtime.credentialsobject[] | nullNo
runtime.allowAgentSuppliedCredentialValuesbooleanNo
runtime.claudeCodeobjectNo
runtime.ttlHoursinteger | nullNo
runtime.maxCostUsdinteger | nullNo
runtime.idleTimeoutMinutesinteger | nullNo
runtime.template"claude-code" | "codex" | "opencode" | "hermes" | "openclaw" | "grok" | "kimi" | "copilot"NoMaintained CLI to run: 'claude-code' (Claude Code), 'codex' (Codex), 'opencode' (OpenCode), 'hermes' (Hermes), 'openclaw' (OpenClaw), 'grok' (Grok Build), 'kimi' (Kimi Code), 'copilot' (GitHub Copilot CLI). The image, launch command, and model protocol come from the template.
runtime.imagestringNo
runtime.commandstring[] | nullNo
runtime.inferenceProtocol"openai_responses" | "openai_chat" | "anthropic"No
networkPolicyobjectNoThe agent's own outbound network policy for its Agent Runtime and code sandbox. It replaces the policy of the agent's environment. Requires permission to update environments.
networkPolicy.egressMode"off" | "restricted" | "unrestricted"Yesunrestricted allows all outbound traffic, restricted allows only the listed destinations, off blocks all outbound traffic.
networkPolicy.domainPreset"none" | "common_dependencies" | "package_managers"NoRestricted mode only: a built-in domain allowlist to add (none, common_dependencies, package_managers).
networkPolicy.allowedDomainsstring[]NoRestricted mode only: extra allowed domains, e.g. api.github.com or *.example.com.
networkPolicy.allowedCidrsstring[]NoAllowed IP ranges in CIDR notation, e.g. 10.0.0.0/8.
llmApiKeyIdstringNoProvider API key the agent uses. Set together with modelId. Use list_llm_models to find both.
modelIdstringNoModel the agent uses: the model's id from list_llm_models, not its provider name. Set together with llmApiKeyId.

get_agent

Required RBAC permission: agent:read

Input

ParameterTypeRequiredDescription
idstringNoThe ID of the agent to fetch. Prefer the ID when you already have it.
namestringNoThe exact name of the agent to fetch when you do not already have the ID.

Output

FieldTypeRequiredDescription
idstringYesThe resource ID.
namestringYesThe resource name.
descriptionstring | nullYesThe resource description, if any.
iconstring | nullYesThe emoji icon, if configured.
scope"personal" | "team" | "org"YesThe visibility scope.
toolExposureMode"full" | "search_and_run_only"YesHow tools are loaded for MCP clients and models.
accessAllToolsbooleanYesWhether search_tools/run_tool may dynamically access every tool the calling user can access.
accessAllSubagentsbooleanYesWhether the agent may delegate to every internal agent the calling user can access.
agentType"agent" | "llm_proxy" | "mcp_gateway" | "profile"YesThe resource type.
systemPromptstring | nullNo
teamsobject[]YesThe teams attached to it.
teams[].idstringYesThe team ID.
teams[].namestringYesThe team name.
labelsobject[]YesAssigned labels.
labels[].keystringYesThe label key.
labels[].valuestringYesThe label value.
toolsobject[]YesAssigned tools.
tools[].idstringYesThe assigned tool ID.
tools[].namestringYesThe tool name.
tools[].descriptionstring | nullYesThe tool description, if any.
tools[].catalogIdstring | nullYesThe MCP catalog ID the tool comes from, if any.
knowledgeBaseIdsstring[]YesAssigned knowledge base IDs.
connectorIdsstring[]YesAssigned knowledge connector IDs.
suggestedPromptsobject[]YesConfigured suggested prompts.
suggestedPrompts[].summaryTitlestringYesThe short title shown in the chat UI.
suggestedPrompts[].promptstringYesThe suggested prompt text.
runtimeobject | nullNoThe Agent Runtime container this agent runs in, or null for the built-in chat harness.
runtime.imagestringYes
runtime.commandstring[] | nullYes
runtime.inferenceProtocol"openai_responses" | "openai_chat" | "anthropic"Yes
runtime.backend"kubernetes"Yes
runtime.steerMode"pipe" | "tmux_keys"Yes
runtime.privilegedbooleanYes
runtime.tierstring | nullNo
runtime.maxTierstring | nullNo
runtime.portsinteger[]No
runtime.environmentobject[] | nullYes
runtime.environment[].keystringYes
runtime.environment[].valuestringYes
runtime.credentialsobject[] | nullYes
runtime.credentials[].keystringYes
runtime.credentials[].scope"shared" | "per_user"Yes
runtime.credentials[].credentialIdstringNo
runtime.credentials[].labelstringYes
runtime.credentials[].descriptionstringNo
runtime.credentials[].requiredbooleanYes
runtime.allowAgentSuppliedCredentialValuesbooleanNo
runtime.claudeCodeobjectNo
runtime.claudeCode.authentication"provider" | "subscription"Yes
runtime.claudeCode.modelstringNo
runtime.ttlHoursinteger | nullYes
runtime.maxCostUsdinteger | nullNo
runtime.idleTimeoutMinutesinteger | nullYes
llmApiKeyIdstring | nullNoThe pinned provider API key ID, or null for the default.
modelIdstring | nullNoThe pinned model ID, or null for the default.
skillsEnabledbooleanNoPresent for an internal agent when the current user has skill:read; whether load_skill is executable for it.
skillsNoticestringNoTrust boundary for the catalog-supplied skill names and descriptions in skills.
skillsobject[]NoPresent for an internal agent when the current user has skill:read; caller-relative skills it can activate.
skills[].referenceobjectYesStable source identity: native uses skillId, external_mcp uses mcpServerId and uri, and plugin uses pluginId and skillPath.
skills[].reference.source"native" | "external_mcp" | "plugin"Yes"native": A skill-library skill. "external_mcp": A skill from an MCP server. "plugin": A skill bundled in a plugin.
skills[].reference.skillIdstringWhen source="native"The skill-library skill ID.
skills[].reference.mcpServerIdstringWhen source="external_mcp"The MCP server installation ID.
skills[].reference.uristringWhen source="external_mcp"The skill resource URI.
skills[].reference.pluginIdstringWhen source="plugin"The plugin ID.
skills[].reference.skillPathstringWhen source="plugin"The skill root inside the plugin.
skills[].namestringYesThe declared, human-facing skill name.
skills[].activationNamestringYesThe exact name to pass to load_skill.
skills[].descriptionstringYesThe skill description.
skills[].scope"personal" | "team" | "org"YesThe visibility scope through which the skill is shared.
skills[].providerNamestring | nullYesPlugin or MCP server name; null for a skill-library entry.

list_agents

Required RBAC permission: agent:read

Input

ParameterTypeRequiredDescription
providerApiKeyIdstring | "organization-default"NoFilter by a configured provider key, or organization-default for agents with no pinned key or model.
limitintegerNoMaximum number of agents to return.
namestringNoOptional agent name filter. Use this when the user names an agent but you still need to look up the ID.
accessstring[]NoOnly return items the caller reaches in one of these ways: mine (created by the caller), shared (shared with the caller or one of their teams), org (shared with the whole organization), others (not shared with the caller; visible only through admin access). Omit for everything the caller can read. Use ["mine"] for "my agents".
shared_withstring[]NoOnly return items whose own permissions grant read to one of these subjects: org (the whole organization), role:, team:, user:, serviceAccount:. Omit for no filtering.
owner_idsstring[]NoOnly return items created by one of these user IDs. Omit for no filtering.

Output

FieldTypeRequiredDescription
totalnumberYesThe total number of matching agents.
hintstringYesSays that each agent's tools are that agent's own, not tools you can call.
agentsobject[]Yes
agents[].idstringYesThe agent ID.
agents[].namestringYesThe agent name.
agents[].scope"personal" | "team" | "org"YesThe agent scope.
agents[].executionMode"runtime" | "foreground"YesRuntime agents retain a workspace and support steering; foreground agents do not.
agents[].descriptionstring | nullYesThe agent description, if any.
agents[].resolvedLlmProviderKeyNamestring | nullYesThe configured provider-key name, or null when unconfigured.
agents[].resolvedLlmModelNamestring | nullYesThe configured model name, or null when unconfigured.
agents[].teamsobject[]YesTeams attached to it.
agents[].teams[].idstringYesThe team ID.
agents[].teams[].namestringYesThe team name.
agents[].labelsobject[]YesAssigned labels.
agents[].labels[].keystringYesThe label key.
agents[].labels[].valuestringYesThe label value.
agents[].toolsobject[]Yes
agents[].tools[].namestringYesThe tool name.
agents[].tools[].descriptionstring | nullYesThe tool description, if any.
agents[].knowledgeSourcesobject[]YesAssigned knowledge bases and connectors.
agents[].knowledgeSources[].namestringYesThe knowledge source name.
agents[].knowledgeSources[].descriptionstring | nullYesThe knowledge source description, if any.
agents[].knowledgeSources[].type"knowledge_base" | "knowledge_connector"YesWhether this source is a knowledge base or connector.

edit_agent

Required RBAC permission: update on the agent (granted per item)

Input

ParameterTypeRequiredDescription
idstringYesThe ID of the agent to edit. Use get_agent or list_agents to look it up by name.
subAgentIdsstring[]NoAgent IDs to add as delegation targets.
toolAssignmentsobject[]NoExplicit tool assignments to add or update on the agent.
toolAssignments[].toolIdstringYesThe ID of the tool to assign to the agent.
toolAssignments[].resolveAtCallTimebooleanNoWhen true, resolve credentials and execution target at tool call time. Prefer this for builder flows.
toolAssignments[].credentialResolutionMode"static" | "dynamic" | "enterprise_managed"No
toolAssignments[].mcpServerIdstring | nullNoOptional MCP server installation to pin the tool to when using static credential resolution.
descriptionstring | nullNoNew description for the agent.
iconstring | nullNoNew emoji icon for the agent.
knowledgeBaseIdsstring[]NoReplace the agent's assigned knowledge bases with this set.
labelsobject[]NoReplace the agent's labels with this set.
labels[].keystringYes
labels[].valuestringYes
namestringNoNew name for the agent.
connectorIdsstring[]NoReplace the agent's directly assigned knowledge connectors with this set.
toolExposureMode"full" | "search_and_run_only"NoHow tools should be loaded for MCP clients and models.
accessAllToolsbooleanNoAllow dynamic tool access: search_tools/run_tool may discover and run any tool the calling user can access without assigning it to the agent. Enabling this forces toolExposureMode to 'search_and_run_only'.
accessAllSubagentsbooleanNoAllow dynamic subagent delegation: the agent may delegate to any internal agent the calling user can access, beyond explicitly-configured delegation targets (minus subagent exclusions).
suggestedPromptsobject[]NoReplace the agent's suggested prompts.
suggestedPrompts[].summaryTitlestringYesShort title shown to users for this suggested prompt.
suggestedPrompts[].promptstringYesSuggested prompt text users can click to start a conversation.
systemPromptstring | nullNoNew system prompt for the agent.
runtimeobject | nullNoRun this agent in its own container (Agent Runtime) instead of the built-in chat harness. Pass { template } for a maintained CLI, or { image } for a custom image. Other fields override the defaults: claudeCode.authentication is 'subscription' (each user signs in with their own Claude account, the default) or 'provider' (bill through llmApiKeyId/modelId); credentials declares environment variables a run needs (users supply values later, or use transfer_credential); ttlHours, idleTimeoutMinutes, and maxCostUsd bound each run; privileged requires an agent administrator. Replaces the whole runtime: pass every field to keep. Pass null to return the agent to the built-in chat harness.
networkPolicyobject | nullNoThe agent's own outbound network policy for its Agent Runtime and code sandbox. It replaces the policy of the agent's environment. Requires permission to update environments. Replaces the whole policy. Pass null to inherit the environment's policy again.
networkPolicy.egressMode"off" | "restricted" | "unrestricted"Yesunrestricted allows all outbound traffic, restricted allows only the listed destinations, off blocks all outbound traffic.
networkPolicy.domainPreset"none" | "common_dependencies" | "package_managers"NoRestricted mode only: a built-in domain allowlist to add (none, common_dependencies, package_managers).
networkPolicy.allowedDomainsstring[]NoRestricted mode only: extra allowed domains, e.g. api.github.com or *.example.com.
networkPolicy.allowedCidrsstring[]NoAllowed IP ranges in CIDR notation, e.g. 10.0.0.0/8.
llmApiKeyIdstring | nullNoProvider API key the agent uses. Set together with modelId. Use list_llm_models to find both. Pass null for both to use the default model.
modelIdstring | nullNoModel the agent uses: the model's id from list_llm_models, not its provider name. Set together with llmApiKeyId. Pass null for both to use the default model.

get_agent_skill_policy

Required RBAC permission: agent:read

Additional access requirement: Also requires skill:read. Returns an internal agent's skill activation policy.

Input

ParameterTypeRequiredDescription
idstringYesThe ID of the internal agent.

Output

FieldTypeRequiredDescription
mode"all" | "manual"Yes
revisionintegerYes
allowedReferencesobject[]Yes
allowedReferences[].source"native" | "external_mcp" | "plugin"Yes"native": A skill-library skill. "external_mcp": A skill from an MCP server. "plugin": A skill bundled in a plugin.
allowedReferences[].skillIdstringWhen source="native"The skill-library skill ID.
allowedReferences[].mcpServerIdstringWhen source="external_mcp"The MCP server installation ID.
allowedReferences[].uristringWhen source="external_mcp"The skill resource URI.
allowedReferences[].pluginIdstringWhen source="plugin"The plugin ID.
allowedReferences[].skillPathstringWhen source="plugin"The skill root inside the plugin.
excludedReferencesobject[]Yes
excludedReferences[].source"native" | "external_mcp" | "plugin"Yes"native": A skill-library skill. "external_mcp": A skill from an MCP server. "plugin": A skill bundled in a plugin.
excludedReferences[].skillIdstringWhen source="native"The skill-library skill ID.
excludedReferences[].mcpServerIdstringWhen source="external_mcp"The MCP server installation ID.
excludedReferences[].uristringWhen source="external_mcp"The skill resource URI.
excludedReferences[].pluginIdstringWhen source="plugin"The plugin ID.
excludedReferences[].skillPathstringWhen source="plugin"The skill root inside the plugin.
allowedSkillsobject[]Yes
allowedSkills[].referenceobjectYesStable source identity: native uses skillId, external_mcp uses mcpServerId and uri, and plugin uses pluginId and skillPath.
allowedSkills[].reference.source"native" | "external_mcp" | "plugin"Yes"native": A skill-library skill. "external_mcp": A skill from an MCP server. "plugin": A skill bundled in a plugin.
allowedSkills[].reference.skillIdstringWhen source="native"The skill-library skill ID.
allowedSkills[].reference.mcpServerIdstringWhen source="external_mcp"The MCP server installation ID.
allowedSkills[].reference.uristringWhen source="external_mcp"The skill resource URI.
allowedSkills[].reference.pluginIdstringWhen source="plugin"The plugin ID.
allowedSkills[].reference.skillPathstringWhen source="plugin"The skill root inside the plugin.
allowedSkills[].namestringYesThe declared, human-facing skill name.
allowedSkills[].activationNamestringYesThe exact name to pass to load_skill.
allowedSkills[].descriptionstringYesThe skill description.
allowedSkills[].scope"personal" | "team" | "org"YesThe visibility scope through which the skill is shared.
allowedSkills[].providerNamestring | nullYesPlugin or MCP server name; null for a skill-library entry.
excludedSkillsobject[]Yes
excludedSkills[].referenceobjectYesStable source identity: native uses skillId, external_mcp uses mcpServerId and uri, and plugin uses pluginId and skillPath.
excludedSkills[].reference.source"native" | "external_mcp" | "plugin"Yes"native": A skill-library skill. "external_mcp": A skill from an MCP server. "plugin": A skill bundled in a plugin.
excludedSkills[].reference.skillIdstringWhen source="native"The skill-library skill ID.
excludedSkills[].reference.mcpServerIdstringWhen source="external_mcp"The MCP server installation ID.
excludedSkills[].reference.uristringWhen source="external_mcp"The skill resource URI.
excludedSkills[].reference.pluginIdstringWhen source="plugin"The plugin ID.
excludedSkills[].reference.skillPathstringWhen source="plugin"The skill root inside the plugin.
excludedSkills[].namestringYesThe declared, human-facing skill name.
excludedSkills[].activationNamestringYesThe exact name to pass to load_skill.
excludedSkills[].descriptionstringYesThe skill description.
excludedSkills[].scope"personal" | "team" | "org"YesThe visibility scope through which the skill is shared.
excludedSkills[].providerNamestring | nullYesPlugin or MCP server name; null for a skill-library entry.
hiddenAllowedCountintegerYes
hiddenExcludedCountintegerYes

patch_agent_skill_policy

Required RBAC permission: update on the agent (granted per item)

Additional access requirement: Also requires skill:read. Requires the current revision and an update grant on the agent. Only skills the caller can access may be added.

Input

ParameterTypeRequiredDescription
idstringYesThe ID of the internal agent.
patchobjectYesThe policy changes, guarded by the revision returned by get_agent_skill_policy.
patch.expectedRevisionintegerYes
patch.mode"all" | "manual"No
patch.operationsobject[]No
patch.operations[].op"add" | "remove"Yes
patch.operations[].disposition"allow" | "exclude"Yes
patch.operations[].referenceobjectYesStable source identity: native uses skillId, external_mcp uses mcpServerId and uri, and plugin uses pluginId and skillPath.
patch.operations[].reference.source"native" | "external_mcp" | "plugin"Yes"native": A skill-library skill. "external_mcp": A skill from an MCP server. "plugin": A skill bundled in a plugin.
patch.operations[].reference.skillIdstringWhen source="native"The skill-library skill ID.
patch.operations[].reference.mcpServerIdstringWhen source="external_mcp"The MCP server installation ID.
patch.operations[].reference.uristringWhen source="external_mcp"The skill resource URI.
patch.operations[].reference.pluginIdstringWhen source="plugin"The plugin ID.
patch.operations[].reference.skillPathstringWhen source="plugin"The skill root inside the plugin.
patch.discardUnavailablestring[]No

Output

FieldTypeRequiredDescription
mode"all" | "manual"Yes
revisionintegerYes
allowedReferencesobject[]Yes
allowedReferences[].source"native" | "external_mcp" | "plugin"Yes"native": A skill-library skill. "external_mcp": A skill from an MCP server. "plugin": A skill bundled in a plugin.
allowedReferences[].skillIdstringWhen source="native"The skill-library skill ID.
allowedReferences[].mcpServerIdstringWhen source="external_mcp"The MCP server installation ID.
allowedReferences[].uristringWhen source="external_mcp"The skill resource URI.
allowedReferences[].pluginIdstringWhen source="plugin"The plugin ID.
allowedReferences[].skillPathstringWhen source="plugin"The skill root inside the plugin.
excludedReferencesobject[]Yes
excludedReferences[].source"native" | "external_mcp" | "plugin"Yes"native": A skill-library skill. "external_mcp": A skill from an MCP server. "plugin": A skill bundled in a plugin.
excludedReferences[].skillIdstringWhen source="native"The skill-library skill ID.
excludedReferences[].mcpServerIdstringWhen source="external_mcp"The MCP server installation ID.
excludedReferences[].uristringWhen source="external_mcp"The skill resource URI.
excludedReferences[].pluginIdstringWhen source="plugin"The plugin ID.
excludedReferences[].skillPathstringWhen source="plugin"The skill root inside the plugin.
allowedSkillsobject[]Yes
allowedSkills[].referenceobjectYesStable source identity: native uses skillId, external_mcp uses mcpServerId and uri, and plugin uses pluginId and skillPath.
allowedSkills[].reference.source"native" | "external_mcp" | "plugin"Yes"native": A skill-library skill. "external_mcp": A skill from an MCP server. "plugin": A skill bundled in a plugin.
allowedSkills[].reference.skillIdstringWhen source="native"The skill-library skill ID.
allowedSkills[].reference.mcpServerIdstringWhen source="external_mcp"The MCP server installation ID.
allowedSkills[].reference.uristringWhen source="external_mcp"The skill resource URI.
allowedSkills[].reference.pluginIdstringWhen source="plugin"The plugin ID.
allowedSkills[].reference.skillPathstringWhen source="plugin"The skill root inside the plugin.
allowedSkills[].namestringYesThe declared, human-facing skill name.
allowedSkills[].activationNamestringYesThe exact name to pass to load_skill.
allowedSkills[].descriptionstringYesThe skill description.
allowedSkills[].scope"personal" | "team" | "org"YesThe visibility scope through which the skill is shared.
allowedSkills[].providerNamestring | nullYesPlugin or MCP server name; null for a skill-library entry.
excludedSkillsobject[]Yes
excludedSkills[].referenceobjectYesStable source identity: native uses skillId, external_mcp uses mcpServerId and uri, and plugin uses pluginId and skillPath.
excludedSkills[].reference.source"native" | "external_mcp" | "plugin"Yes"native": A skill-library skill. "external_mcp": A skill from an MCP server. "plugin": A skill bundled in a plugin.
excludedSkills[].reference.skillIdstringWhen source="native"The skill-library skill ID.
excludedSkills[].reference.mcpServerIdstringWhen source="external_mcp"The MCP server installation ID.
excludedSkills[].reference.uristringWhen source="external_mcp"The skill resource URI.
excludedSkills[].reference.pluginIdstringWhen source="plugin"The plugin ID.
excludedSkills[].reference.skillPathstringWhen source="plugin"The skill root inside the plugin.
excludedSkills[].namestringYesThe declared, human-facing skill name.
excludedSkills[].activationNamestringYesThe exact name to pass to load_skill.
excludedSkills[].descriptionstringYesThe skill description.
excludedSkills[].scope"personal" | "team" | "org"YesThe visibility scope through which the skill is shared.
excludedSkills[].providerNamestring | nullYesPlugin or MCP server name; null for a skill-library entry.
hiddenAllowedCountintegerYes
hiddenExcludedCountintegerYes

list_llm_models

Required RBAC permission: llmModel:read

Input

ParameterTypeRequiredDescription
provider"openai" | "gemini" | "anthropic" | "bedrock" | "cohere" | "cerebras" | "mistral" | "perplexity" | "groq" | "xai" | "openrouter" | "vllm" | "ollama" | "ollama-native" | "zhipuai" | "deepseek" | "minimax" | "kimi" | "kimi-code" | "azure" | "github-copilot" | "microsoft-365-copilot" | "archestra" | "voyage" | "jev"NoOnly list keys for this provider.
querystringNoOnly list models whose name contains this text.

Output

FieldTypeRequiredDescription
apiKeysobject[]Yes
apiKeys[].idstringYesPass as llmApiKeyId.
apiKeys[].namestringYesThe key's display name.
apiKeys[].providerstringYesThe key's LLM provider.
apiKeys[].modelsobject[]Yes
apiKeys[].models[].idstringYesPass as modelId.
apiKeys[].models[].namestringYesThe provider's model name.
apiKeys[].omittedModelCountnumberYesLinked models left out after the first 100. Narrow with query to see them.

list_hooks

Required RBAC permission: agent:read

Availability: Served only when the code runtime is enabled (the same prerequisite as the Code Sandbox tools), because a hook executes in the conversation sandbox.

Input

ParameterTypeRequiredDescription
agent_idstringYesThe ID of the agent whose hooks to list.

Output

FieldTypeRequiredDescription
hooksobject[]Yes
hooks[].idstringYesThe hook ID.
hooks[].agentIdstringYesThe agent the hook belongs to.
hooks[].event"session_start" | "pre_tool_use" | "post_tool_use"YesThe lifecycle event the hook fires on.
hooks[].fileNamestringYesThe script file name (.py or .sh); also the execution-order key within an event.
hooks[].contentstringYesThe script content.
hooks[].requirementsstring[]YesPython dependencies installed before a .py hook runs.
hooks[].enabledbooleanYesWhether the hook currently fires.
hooks[].createdAtstringYesISO timestamp when the hook was created.
hooks[].updatedAtstringYesISO timestamp when the hook was last updated.

create_hook

Required RBAC permission: update on the agent (granted per item)

Availability: Served only when the code runtime is enabled (the same prerequisite as the Code Sandbox tools), because a hook executes in the conversation sandbox.

Input

ParameterTypeRequiredDescription
agent_idstringYesThe ID of the agent to add the hook to.
event"session_start" | "pre_tool_use" | "post_tool_use"YesThe lifecycle event the hook fires on: session_start, pre_tool_use, or post_tool_use.
file_namestringYesPlain script file name ending in .py or .sh, e.g. check.py. Unique per (agent, event); hooks on the same event run in file-name order.
contentstringYesThe script content. It receives the JSON payload on stdin.
requirementsstring[]NoOptional Python dependencies (pip requirement strings) installed before a .py hook runs.
enabledbooleanNoWhether the hook fires. Defaults to true.

Output

FieldTypeRequiredDescription
hookobjectYes
hook.idstringYesThe hook ID.
hook.agentIdstringYesThe agent the hook belongs to.
hook.event"session_start" | "pre_tool_use" | "post_tool_use"YesThe lifecycle event the hook fires on.
hook.fileNamestringYesThe script file name (.py or .sh); also the execution-order key within an event.
hook.contentstringYesThe script content.
hook.requirementsstring[]YesPython dependencies installed before a .py hook runs.
hook.enabledbooleanYesWhether the hook currently fires.
hook.createdAtstringYesISO timestamp when the hook was created.
hook.updatedAtstringYesISO timestamp when the hook was last updated.

update_hook

Required RBAC permission: update on the agent (granted per item)

Availability: Served only when the code runtime is enabled (the same prerequisite as the Code Sandbox tools), because a hook executes in the conversation sandbox.

Input

ParameterTypeRequiredDescription
idstringYesThe ID of the hook to update.
event"session_start" | "pre_tool_use" | "post_tool_use"NoOptional new lifecycle event.
file_namestringNoOptional new script file name ending in .py or .sh.
contentstringNoOptional new script content.
requirementsstring[]NoOptional replacement list of Python dependencies.
enabledbooleanNoOptionally enable or disable the hook.

Output

FieldTypeRequiredDescription
hookobjectYes
hook.idstringYesThe hook ID.
hook.agentIdstringYesThe agent the hook belongs to.
hook.event"session_start" | "pre_tool_use" | "post_tool_use"YesThe lifecycle event the hook fires on.
hook.fileNamestringYesThe script file name (.py or .sh); also the execution-order key within an event.
hook.contentstringYesThe script content.
hook.requirementsstring[]YesPython dependencies installed before a .py hook runs.
hook.enabledbooleanYesWhether the hook currently fires.
hook.createdAtstringYesISO timestamp when the hook was created.
hook.updatedAtstringYesISO timestamp when the hook was last updated.

delete_hook

Required RBAC permission: update on the agent (granted per item)

Availability: Served only when the code runtime is enabled (the same prerequisite as the Code Sandbox tools), because a hook executes in the conversation sandbox.

Input

ParameterTypeRequiredDescription
idstringYesThe ID of the hook to delete.

Output

FieldTypeRequiredDescription
successtrueYes
idstringYes