billing gives you tools like
billing.lookup_invoice. There are two kinds. An mcp toolset pulls its
tools from a remote HTTPS MCP server. A client toolset declares them up
front, and each call is handed back to your application through the client
tool-call API.
Registering a toolset doesn’t grant anything. It makes the names exist, and a
role decides who may call them, either with
tool:workspace:billing.* or an exact
tool:workspace:billing.lookup_invoice.
The model doesn’t get every tool schema stuffed into its context. It gets one
tool, tool_search, and whatever a search turns up becomes callable by name
for the rest of the thread. Search only looks at what the turn’s roles allow,
so it can never surface a tool the agent isn’t allowed to call.
Matrices also ships managed provider toolsets (Gmail, Calendar, Drive,
Slack, GitHub, Linear, Notion, and more). Each has its own namespace and is
granted with tool:managed:<namespace>.*, and each needs a
connection as well as a role. An MCP toolset that speaks
OAuth can carry its own client configuration under
/v1/toolsets/{toolsetId}/oauth-client.
Belongs to a workspace · Has one namespace (immutable) · Is
mcp or
client · Granted by roles, never by registrationRules
- Registering a toolset grants nothing. See Rules.
- Namespaces owned by built-in tools are reserved and cannot be claimed.
denycan’t target a toolset namespace; outside tools are allow-only.
API
- The built-in catalog: Built-in tools.
GET/POST /v1/toolsets,PATCH/DELETE /v1/toolsets/{toolsetId}.POST /v1/toolsets/{toolsetId}/probeto recheck an MCP server’s auth surface.