Built-in Tools

Every agent gets a set of built-in tools: capabilities the platform provides directly, no integration to connect. They cover memory, cross-run history, self-management, and more.

Built-in tools are not passed in the tools array. That array is for 3rd-party integrations and custom tools; passing a built-in name like "memory" returns a 422. The four configurable built-ins are toggled with dedicated enable_* fields; the rest are gated automatically by your account and agent config.

The catalog

ToolWhat it doesConfigurableMulti-tenant
memorySave and recall per-user memories injected into contextYesYes
task historyRead previous agents, tasks, and run outputsYesYes
task setupSame-scope management of agents, tasks, runs, schedules, inboxes, and app connections (see Task setup)YesYes
feedbackInternal issue-reporting tool (report_issue)YesYes
lessonsAppend-only self-improvement notes per taskNoYes
computer useA full Linux desktop: computer, bash, file editor (see Computer use)NoYes
email your ownerAgent-initiated email to the account ownerNoFirst-party only
Slack DM your ownerAgent-initiated Slack DM to the account ownerNoFirst-party only
companyCreate and manage other agents (Company Agent only)NoFirst-party only

"Multi-tenant" means the tool is available on end-user (user_id-scoped) runs. First-party only tools act on the account owner, so they are never mounted on a multi-tenant run.

The four configurable toggles

memory, history, task_setup_tools, and feedback can be set at three levels. They resolve run → task → agent → platform default (on); the most specific wins, and an omitted toggle inherits the next level up:

Python
How the non-configurable tools are gated
  • email your owner is always available on first-party runs; Slack DM your owner turns on when a Slack workspace is connected. Both are off on multi-tenant (user_id) runs.
  • company is mounted only for the Company Agent.
  • read-only inbox follows the agent's fetchmail setting (agents.enable_fetchmail / disable_fetchmail); SMS appears once you provision a Twilio number; computer use follows account-level sandbox execution.

Use discovery to see each tool's resolved enabled state for a given agent or end-user.

Task setup

Task setup tools let an agent manage work in its own scope mid-run: create tasks, set schedules, start and cancel runs, answer other runs' approval prompts, connect integrations, rotate webhooks, and write memories. On by default; disable per run with task_setup_tools=False (feedback=False works the same way):

Python

Task setup tools act within the same account and same end-user scope: an agent can manage other agents, tasks, and runs in that scope, but never cross into a different end-user scope (Users).

Permissions: the tools follow the run's permission mode, but the status-change tools (set_task_status, set_teammate_status, set_task_schedule_active, set_allowed_email_senders) always require approval, even in autonomous or yolo mode. In unattended runs they email the owner and pause until answered. See Human-in-the-Loop.

API note: teammate_id is the wire name for the agent id in JSON bodies, and tool names like list_teammates keep it too. The SDK accepts agent_id (canonical) and teammate_id alike.

Tool reference

Older current-only tool names still work for compatibility; the canonical surface is below.

Read and inspect
ToolWhat it does
list_teammatesList agents in the current scope
list_tasksList tasks for the current or a targeted agent
list_runsInspect active or historical runs across agents and tasks in scope
get_run_detailsDrill into a run's output, messages, pending approvals, and file metadata
read_run_file_previewPreview text-like files created during another run
search_memoryKeyword-search saved memories (account-wide + this agent)
search_documentsKeyword-search visible documents; read_document opens the full text
list_task_triggersList every trigger on a task (schedule, webhook, email inbox, Composio app)
list_recent_trigger_eventsList a task's recent trigger firings and the run each produced
get_integration_connection_healthList connected integrations with status, expiry, and app-trigger support
get_run_diagnosticsInspect a run's stop reason, error, originating trigger, and webhook delivery failures
Create and manage: tasks, schedules, agents, integrations
ToolWhat it does
create_taskCreate a task for the current agent or an explicit agent
update_taskEdit reversible task fields (name, instructions, content)
set_task_scheduleCreate, replace, or edit a task schedule
start_task_runStart a saved task in the background
cancel_runCancel an active same-scope run
update_teammateEdit agent fields (name, role, instructions, goals) and toggle its email inbox
get_or_create_teammate_email_inboxEnable or return an agent inbox address
get_or_create_task_webhookGet the task's webhook trigger URL, creating one if it has none (never rotates; needs your approval to create)
add_integrationAttach an already-connected integration to an agent, and optionally a task
respond_to_run_inputApprove or deny a pending tool call, or answer an AskUserQuestion prompt
create_or_update_outbound_webhookRegister or update a webhook endpoint for run events
rotate_outbound_webhook_secretRotate a webhook signing secret (shown once)
list_webhook_deliveriesList recent deliveries for a webhook endpoint
create_or_update_memoryWrite or update a persistent memory in the current scope
start_app_oauth_connectionStart an OAuth flow to connect an app such as Google or Slack
connect_api_key_appConnect an app that uses an API key
disconnect_appRevoke an app connection in the current account scope
Status changes (always require approval)

These carry the irreversible or trust-sensitive operations. Each one asks for approval in every permission mode; in unattended runs it emails the owner and pauses.

ToolWhat it does
set_task_statusEnable, disable, or archive a task
set_teammate_statusEnable, disable, or archive an agent
set_task_schedule_activePause or resume an existing schedule (use set_task_schedule to change it)
set_allowed_email_sendersChange who may email-trigger an agent
App triggers (Composio)

Make a task reactive: run it when a connected app emits an event (a new GitHub issue, a Stripe payment, an inbound Gmail message). The app must already be connected as a Composio integration. See Webhook Triggers for the SDK/API path to the same triggers.

ToolWhat it does
list_app_trigger_typesDiscover the event triggers a connected app supports (slug + required config)
create_app_triggerSet up a Composio trigger so an external event runs this task
set_app_trigger_activeEnable or disable an existing app trigger
delete_app_triggerRemove an app trigger
Examples: self-improving and self-wiring tasks

The agent completes work, then updates the task instructions to record its approach, so the next run skips discovery entirely:

Python

Or the agent wires its own Composio app trigger, so the task runs automatically on a GitHub event:

Python

Discovery

List the built-in tools with their resolved state. Pass agent_id to reflect that agent's defaults, or user_id to check multi-tenant availability:

Python

Each entry reports name, server_name, display_name, description, enabled (resolved for the requested scope), multi_tenant_safe, and configurable.

Next: Tools · Users · Memories · Computer use

Was this page helpful?