Tool catalog
Every capability tool, by namespace, generated from the canonical catalog.
The tables below are rendered at build time from the catalog the agent itself
reads (pkg/capabilityprotocol/generated/capability-tools.json, protocol
0.4.0), so they cannot drift from what is deployed. The
descriptions are the exact English sentences the model receives.
Tools whose effect column is destructive, plus message_send and
channel_update, pause for approval before
running.
Tasks
| Tool | Effect | What the model reads |
|---|---|---|
task_add | workspace_write | Create a new workspace task with typed task fields. |
task_list | read | List workspace tasks with optional filters. |
task_update | workspace_write | Update explicit fields on an existing task, including who takes part in it. |
task_delete | destructive | Permanently delete a task. |
Backed by admind's Flow API (internal/capabilityd/flow_tool.go). Updates and
deletes take a taskHint: the exact task ID or exact current title from a
task_list result. Dates are yyyy-mm-dd; the agent resolves "next Friday"
before calling.
People
| Tool | Effect | What the model reads |
|---|---|---|
person_list | read | List the people in this workspace with their exact name, email, @handle, and mention. |
Implemented in internal/capabilityd/person_list_tool.go over the same Flow
membership data. The agent calls it whenever a message names someone partially,
so every later hint carries an exact name, @handle, or email.
Calendar
| Tool | Effect | What the model reads |
|---|---|---|
event_add | workspace_write | Create a calendar event with a concrete time range. |
event_list | read | List calendar events in a concrete time window, optionally filtered by title, description, or location. |
event_update | workspace_write | Update explicit fields on a calendar event. |
event_delete | destructive | Permanently delete a calendar event. |
Implemented in internal/capabilityd/calendar_tool.go, also over admind's
Flow API; a calendar event is a task with a time span. Times are ISO
timestamps with a time zone, and eventHint follows the same resolution rule
as taskHint.
Messages
| Tool | Effect | What the model reads |
|---|---|---|
message_context | read | Return the exact current Mattermost conversation, thread, requester, and bot identities. |
message_search | read | Find messages in an exact conversation scope, or read known ones in full. |
message_send | external_send | Send a Mattermost message to a direct message, channel, or the current conversation after approval. |
message_update | external_write | Replace one exact span of text inside your own earlier Mattermost message, leaving the rest of it untouched. |
message_delete | destructive | Permanently delete exact Mattermost message IDs from message_search after approval. |
Implemented in internal/capabilityd/platform_message_tool.go and
mattermost_tool.go. message_search has two modes: keyword queries
return IDs with a preview around the match, and messageIDs returns those
messages complete. message_update edits one exact span of the agent's own
earlier message: oldText must occur exactly once, and the rest of the
message stays untouched. message_send targets a direct message, a named
channel, or the current conversation; only the current-conversation targets
skip approval.
Channels
| Tool | Effect | What the model reads |
|---|---|---|
channel_update | external_write | Update an exact Mattermost channel display name, header, or membership after approval. |
Implemented in internal/capabilityd/mattermost_tool.go. Display name,
header, and membership changes all go through this one gated tool.
Web
| Tool | Effect | What the model reads |
|---|---|---|
web_search | read | Search the public web and return ranked result snippets. |
Implemented in internal/capabilityd/web_tool.go through OpenRouter's web
search. Domain allowlists, language, and location narrow the query.
Sites
| Tool | Effect | What the model reads |
|---|---|---|
site_serve | site_publish | Serve a site project directory you built in the workspace: preview mode returns a temporary review URL, publish mode deploys to the public URL. |
site_list | read | List served sites with their exact siteID, slug, lifecycle status, and published URL. |
site_unserve | destructive | Take a served site down after explicit runtime approval: unpublishes it, frees its slug, and deletes the server-side record. |
Implemented in internal/capabilityd/site_tool.go over admind. The agent
builds a site as ordinary files in the workspace, then serves that directory:
preview returns a temporary review URL, publish takes the public one. The
slug is derived from the title on first serve and owned by the server.
site_unserve frees the slug and deletes the server-side record; the source
files in the workspace stay.
Documents and images
| Tool | Effect | What the model reads |
|---|---|---|
document_read | read | Read a workspace document from an exact /workspace path and return Markdown content. |
| Tool | Effect | What the model reads |
|---|---|---|
image_read | read | Read a workspace image from an exact /workspace path and return a base64 attachment. |
Implemented in internal/capabilityd/file_read_tool.go (with
file_read_helper.py doing format extraction). These read a workspace path
and return Markdown or a base64 attachment, which is how a PDF someone
uploaded becomes something the model can quote.
Browser
| Tool | Effect | What the model reads |
|---|---|---|
browser_open | connect | Open an exact HTTP or HTTPS URL in the available browser and return the resulting page identity and initial structure. |
browser_snapshot | read | Read the current browser page structure and return stable interactive references for inspection and control. |
browser_screenshot | read | Capture the visible browser page and upload it to a temporary workspace-visible device path for visual review. |
browser_click | external_write | Click one exact target from the current browser snapshot and return the completed action. |
Implemented in internal/capabilityd/browser_tool.go. Calls route to the
companion on the user's own computer when it is connected, with the device
browser as the other provider. browser_open requires the user present, and
responses carry no cookies, profile paths, or local screenshot paths;
browser_screenshot uploads to a temporary workspace-visible path instead.
Login, MFA, and captcha steps are handed to the human.
Artifacts
| Tool | Effect | What the model reads |
|---|---|---|
artifact_review | read | Review rendered artifact screenshots against a concrete intent and rubric, returning typed visual issues and suggested fixes. |
Implemented in internal/capabilityd/artifact_review_tool.go. This is the
agent's own quality loop: it renders what it built, screenshots it, and asks
for typed visual issues against the stated intent before delivering.