tool:builtin:<namespace>.*grants a whole namespace, including tools added later.tool:builtin:<namespace>.<name>grants exactly one tool.tool:*grants everything the agent is eligible for.
Discovery
The model doesn’t get every tool schema up front. It starts with a small always-loaded set plus one catalog tool:tool_search is always available and can’t add access: it only ever returns
tools the turn already allows.
Agents — tool:builtin:agents.*
Profiles — tool:builtin:profiles.*
Roles — tool:builtin:roles.*
Identities — tool:builtin:identities.*
Toolsets — tool:builtin:toolsets.*
Connections — tool:builtin:connections.*
Threads — tool:builtin:thread.*
The namespace is singular.
Memory — tool:builtin:memory.*
Artifacts — tool:builtin:artifacts.*
Sites — tool:builtin:sites.*
One-tool namespaces
Each of these is its own namespace, sotool:builtin:web.* does not include
http.request.
Schedules — tool:builtin:schedules.*
Feeds — tool:builtin:feeds.*
Subscriptions — tool:builtin:subscriptions.*
Sandbox — tool:builtin:sandbox.*
Coming soon. This capability is part of where Matrices is heading, but its
public API is not generally available yet. The shapes shown here describe the
intended contract and may change before release.
Provider toolsets
Managed toolsets (Gmail, Calendar, Drive, Slack, GitHub, Linear, Notion, PostHog, and friends) take a namespace of their own and are granted exactly the same way, withtool:managed:gmail.* or tool:managed:gmail.send_email. Their tool lists change
as providers change, so they are not enumerated here. They are code-owned, so
they do not appear in GET /v1/toolsets, which lists only the toolsets your
workspace registered. To see what one agent actually has, call
GET /v1/agents/{agentId}/effective-permissions; inside a thread, the model
finds them with tool_search. Each one needs a
connection as well as a role.