AgentTool
Spawn a sub-agent that runs its own agentic query loop to complete an independent task. The parent agent waits for the result (synchronous) or receives a task ID immediately (asynchronous/background). Tool name:Agent (alias Task)
When to use
AgentTool vs TaskCreateToolUse AgentTool when you want to delegate a complete sub-task to another Claude instance — it gets its own conversation, tool set, and model call budget.Use TaskCreateTool when you want to track a piece of work in the shared task board — a lightweight record with status, description, and dependency links, not a running agent.Parameters
string
required
3–5 word label for the task, shown in the UI.
string
required
Full task description given to the sub-agent as its initial user message.
string[]
Subset of tool names to make available in the sub-agent. When omitted, the sub-agent inherits the parent’s tool set (minus
AgentTool itself, to prevent unbounded recursion).string
Custom system prompt for the sub-agent. Overrides the default.
integer
Maximum number of turns for the sub-agent (Rust implementation). Defaults to
MAX_TURNS_DEFAULT.string
Model alias to use for the sub-agent:
"sonnet", "opus", or "haiku". Defaults to the session model.boolean
Launch the sub-agent as a background task and return a task ID immediately.
string
Named agent for messaging via
SendMessage.string
Associate this agent with a named team (swarm).
string
Isolation strategy:
"worktree" (dedicated git worktree) or "remote" (remote session).Return value
Synchronous (run_in_background: false):string
required
"completed" on success.string
required
Final assistant message from the sub-agent.
string
required
"async_launched".string
required
ID of the launched background agent; use with
TaskOutputTool to retrieve results.Example
TaskCreateTool
Create a task record on the shared task board. Returns a task ID for later reference. Tool name:TaskCreateGate: Requires
isTodoV2Enabled() (V2 task system).
Parameters
string
required
Short title for the task.
string
required
Detailed description of what the task involves.
object
Arbitrary key-value metadata attached to the task.
Return value
object
required
TaskGetTool
Retrieve a task’s current status, description, and dependency information. Tool name:TaskGetGate: Requires
isTodoV2Enabled().
Parameters
string
required
ID of the task to retrieve.
Return value
object
null if no task with that ID exists.TaskUpdateTool
Update a task’s status, subject, description, dependencies, or ownership. Tool name:TaskUpdateGate: Requires
isTodoV2Enabled().
Parameters
string
required
ID of the task to update.
string
New status. Use
"deleted" to remove the task entirely. Valid values: "pending", "in_progress", "completed", "failed", "killed", "deleted".string
Updated title.
string
Updated description.
string[]
Task IDs that this task should now block.
string[]
Task IDs that now block this task.
string
Assign ownership to an agent name.
object
Updated metadata.
Return value
boolean
required
Whether the update succeeded.
string
required
ID of the updated task.
string[]
required
List of field names that changed.
object
Present when status changed:
{ from, to }.string
Error message if
success is false.TaskListTool
List all non-deleted tasks in the current session. Tool name:TaskListGate: Requires
isTodoV2Enabled().Input: No parameters required.
Return value
object[]
required
TaskStopTool
Stop a running background task (bash task or agent task). Tool name:TaskStop (alias KillShell)
Parameters
string
ID of the task to stop. Returned when a task was launched with
run_in_background: true.Return value
string
required
Confirmation message.
string
required
ID of the stopped task.
string
required
Type of task that was stopped.
Notes
- The task must be in a non-terminal state (
pendingorrunning). - In the Rust implementation, stopping a task sets its status to
Failed.
TaskOutputTool
Read the output of a background task, optionally blocking until it completes. Tool name:TaskOutput
Parameters
string
required
ID of the task to read output from.
boolean
default:"true"
When
true, wait until the task reaches a terminal state before returning.number
default:"30000"
Maximum wait time in milliseconds when
block is true. Range: 0–600 000 ms.Return value
string
required
"success", "timeout", or "not_ready".object
null when retrieval_status is not "success".SendMessageTool
Send a message to a named agent, broadcast to all agents, or route via a Unix domain socket or bridge session. Tool name:SendMessageGate: Requires
isAgentSwarmsEnabled().
Parameters
string
required
Recipient address:
- Agent name (in-process or mailbox)
"*"to broadcast to all agents"uds:<path>"for a Unix domain socket"bridge:<session-id>"for a cross-machine bridge (requires user consent)
string
required
Message text, or a structured message object. Structured types:
{ type: "shutdown_request", reason?: string }{ type: "shutdown_response", status: "ok" | "error", message?: string }{ type: "plan_approval_response", approved: boolean, comment?: string, requestId: string }
string
Short summary shown in the UI activity feed.
Notes
- Bridge messages (
bridge:<session-id>) always require explicit user approval regardless of permission mode. - In the Rust implementation, messages are delivered to the
INBOXin-memory store; broadcast (*) delivers to all current recipients.
CronCreateTool
Schedule a prompt to run automatically on a cron schedule. Tool name:CronCreateGate: Requires
feature('KAIROS') + isKairosCronEnabled().
Parameters
string
required
Standard 5-field cron expression in local time:
"M H DoM Mon DoW" (e.g. "0 9 * * 1-5" for weekdays at 9 AM).string
required
The prompt to enqueue at each scheduled fire time.
boolean
default:"true"
true — fire on every matching cron time (auto-expires after the configured max-age).false — fire once then auto-delete.boolean
default:"false"
true — persist the job to .claude/scheduled_tasks.json so it survives process restarts.false — in-memory only; job is lost when the session ends.Return value
string
required
Job ID for use with
CronDelete and CronList.string
required
Human-readable schedule description (e.g.
"Every weekday at 09:00").boolean
required
Whether the job recurs.
boolean
Whether the job is durable.
Notes
- Maximum 50 concurrent scheduled jobs.
- The cron expression must match at least one date within the next year.
- Durable crons are not supported for teammate agents.
CronListTool
List all scheduled cron jobs visible to the current agent. Tool name:CronListInput: No parameters required.
Return value
object[]
required
Notes
- Teammate agents only see their own jobs. The team lead sees all jobs.
CronDeleteTool
Cancel a scheduled cron job. Tool name:CronDelete
Parameters
string
required
Job ID returned by
CronCreate.Return value
string
required
ID of the cancelled job.
Notes
- Teammate agents can only delete their own jobs.
SkillTool
Invoke a user-defined skill — a prompt macro stored as a Markdown file in.claude/commands/ or ~/.claude/commands/.
Tool name: Skill
Parameters
string
required
Name of the skill to invoke, or
"list" to enumerate available skills. The name maps to a <skill>.md file in the commands directory.string
Arguments to substitute for
$ARGUMENTS in the skill template.How skills work
- Claurst resolves
<skill>.mdfrom the project commands directory first, then the user commands directory. - YAML frontmatter is stripped.
$ARGUMENTSplaceholders are replaced with the provided arguments string.- The resulting text is returned as the tool result, and Claude uses it as its next instruction.
AskUserQuestionTool
Pause task execution and prompt you for a choice before continuing. Tool name:AskUserQuestion
Parameters
object[]
required
1–4 questions to ask. Each question has:
Return value
object[]
required
The original questions.
object
required
Map of question → selected answer value(s).
Notes
- Not available when
--channelsflag is active (no terminal available). - In non-interactive mode (Rust implementation with
non_interactive: true), returns an error.
ToolSearchTool
Discover available tools by keyword or exact name. Tool name:ToolSearch
Parameters
string
required
Search query. Use
"select:<ToolName>" for exact lookup (e.g. "select:WebFetch"), or plain keywords for fuzzy search (e.g. "search files").integer
default:"5"
Maximum number of tools to return.
Return value
string[]
required
Tool names that matched the query.
string
required
The query that was run.
integer
required
Total number of deferred tools available to search.
string[]
MCP servers still loading whose tools are not yet searchable.
How scoring works
When a match is found via
select:<name>, the full tool schema is injected into the conversation context as a tool_reference block.