Identity, Chat, and Tool Discovery

Identity

ToolDescriptionPermission
whoamiReturns the name and ID of the current agent.None

whoami

Required RBAC permission: None

This tool takes no arguments.

Output

FieldTypeRequiredDescription
agentIdstringYesThe ID of the current agent.
agentNamestringYesThe display name of the current agent.

Chat

ToolDescriptionPermission
todo_writeWrite todos to the current conversation.None
ask_userAsk the user to pick from a short list of options.None

todo_write

Required RBAC permission: None

Input

ParameterTypeRequiredDescription
todosobject[]YesArray of todo items to write to the conversation.
todos[].idintegerYesUnique identifier for the todo item.
todos[].contentstringYesThe content or description of the todo item.
todos[].status"pending" | "in_progress" | "completed"YesThe current status of the todo item.

Output

FieldTypeRequiredDescription
successtrueYesWhether the write succeeded.
todoCountintegerYesHow many todo items were written.

ask_user

Required RBAC permission: None

Input

ParameterTypeRequiredDescription
questionstringYesThe question shown above the options, as plain text. Put links and commands in your reply text.
headerstringNoA very short label shown as the question's tab, e.g. 'Visibility'.
optionsobject[]YesThe options the user can pick. Labels must be unique.
options[].labelstringYesThe option shown to the user.
options[].descriptionstringNoOptional extra detail shown next to the option.
allowMultiplebooleanNoWhen true, the user may select more than one option. Defaults to false (exactly one).
remedy_offer_idsstring[]NoExact offer IDs from the blocked ruling that this question asks the user to decide: a review execute_remedy_plan requires, or a plan that would prevent what the user asked for. Say in the question what it would prevent. Omit for ordinary questions.

Output

FieldTypeRequiredDescription
action"accept" | "decline" | "cancel"YesWhether the choice form was submitted, declined, or canceled.
selectedstring[]YesThe labels the user selected. Empty when declined or canceled.
textstringNoWhat the user typed instead of picking an option.
timedOutbooleanNoTrue when the question expired without an answer.

Tool Discovery

ToolDescriptionPermission
search_toolsSearch the tools available to this agent and to you on demand.None
run_toolDispatch to any tool available to this agent, including built-in platform tools, agent delegation tools ('agent-'), or third-party MCP tools exposed through the MCP Gateway (e.g.None

search_tools

Required RBAC permission: None

Input

ParameterTypeRequiredDescription
querystringYesKeywords for the capability you need — combine the action (verb + object) with the server/product name when you know it, e.g. 'github search repositories' or 'slack send message'. Avoid querying with a bare product/server name on its own. Results are keyword-ranked across tool names, descriptions, and argument names/descriptions. If nothing fits, reformulate with different keywords and search again rather than settling for a poor match.
limitintegerNoMaximum number of matching tools to return, at most 20. A larger value returns 20.
offsetintegerNoNumber of ranked matches to skip. To see the matches after a truncated result, repeat the same query with offset set to the result's nextOffset.
mode"keyword" | "regex"NoSearch mode. 'keyword' (default) keyword-ranks the query across tool fields. 'regex' treats query as a case-insensitive regular expression matched against tool names, titles, and descriptions — use it when you know a naming pattern, e.g. '^github__' or 'search|find'.

Output

FieldTypeRequiredDescription
totalintegerYesNumber of returned tools.
matchCountintegerYesTotal tools matching the query before offset and limit were applied (>= total).
truncatedbooleanYesTrue when more matches follow this page (results cut by limit).
nextOffsetinteger | nullYesThe offset that returns the next page of matches, or null when no matches follow this page.
hintstring | nullYesActionable guidance when results were truncated or empty (a truncated result names the offset of the next page; an empty result also names which query terms matched no tool text).
toolsobject[]Yes
tools[].toolNamestringYesExact tool name to pass to run_tool.
tools[].descriptionstring | nullYesShort tool description, if available.
tools[].source"archestra" | "mcp" | "agent_delegation"YesWhere the tool comes from.
tools[].serverstring | nullYesMCP server prefix for third-party MCP tools when available.
tools[].availablebooleanYesFalse when the tool's MCP connection is not installed; it stays discoverable but cannot run until reconnected.
tools[].unavailableReasonstring | nullYesCompact reason and recovery action when available is false; null otherwise.
tools[].paramsstringYesCompact one-line input signature — a summary, not the full schema. Parameters are joined by '; ', each rendered as name<!|?>:<type> where ! marks required and ? optional. Object parameters are expanded up to two levels as {child<!|?>:type{grandchild<!|?>:type}, …}, enums as enum(<json-values>), and a trailing — description is added when available. A trailing … on a type marks an object whose content is not fully shown (freeform or more deeply nested) — consult the task instructions or the full schema for its shape. Empty string when the tool takes no input. Pass matching values inside tool_args when calling run_tool; if a call is rejected as invalid, the error describes the expected input (for third-party tools, the full input schema).

run_tool

Required RBAC permission: None

Input

ParameterTypeRequiredDescription
tool_namestringYesName of the tool to invoke. Use the exact name as it appears in the tools list, e.g. 'archestra__whoami', 'context7__resolve-library-id', or an agent delegation name 'agent-'.
tool_argsobjectNoArguments object for the target tool; must match its input schema.