Tools
A tool is a single verb the model can call in the middle of a run. The executor assembles a fresh tool registry for every run from what the agent declares and how it is configured โ nothing outside that registry is callable.
Three sources of tools
| Source | What it is | Declared as |
|---|---|---|
| Built-in | First-party tools shipped with the platform โ web search, code execution, utilities. | tools: [web_search] |
| Connector | Delegated access to an external system, acting as the user. One tool per connector, with an op. |
tools: [calendar] |
| MCP (Tools Library) | Tools from a registered MCP server, namespaced mcp__{server}__{tool}. |
mcp_servers: [{slug: jira}] |
How a tool gets enabled
Some tools you list explicitly; others switch on automatically because of how the agent is configured. The Tools page in the app shows this per tool.
| Enablement | Trigger | Tools |
|---|---|---|
| Declared | Listed in tools: |
web_search, web_fetch, browser_use, code_execution, generate_image, current_time, calculate, convert_units, qr_code, get_weather, currency_convert, market_data, read_definition, write_definition, validate_definition, search_catalog |
| With skills | skills: is non-empty |
load_skill, run_skill_script |
| With memory | memory: is set |
remember, recall |
| With knowledge | knowledge: is non-empty |
search_knowledge |
| Interactive chats | A human can answer | ask_user, render_ui, render_chart, propose_skill, write_canvas, schedule_followup |
| Top-level runs | Not a delegated child run | map_over |
The built-in catalog
Browse the live list in the app under Tools โ Built-in; each card has an info popup with usage and copy-ready Agent and Skill examples. The catalog is derived from the same registry the executor uses, so it can never drift from what actually runs.
Web
web_searchโ search the web and return result snippets. Uses the provider configured under Admin โ Web Search (Serper or Tavily), resolved per org with a platform fallback. An agent can ask for afastsearch (the default) or athoroughone for niche or recent topics; Tavily searches deeper, Serper has one depth.web_fetchโ fetch a URL and read it. A web page comes back as its main text, without navigation or boilerplate, headed by its title, publication date and source. A PDF comes back as its text, marked page by page, and as a file for later use. Long documents are read in sections: each reply says where it stopped and how to continue. Pairs withweb_search.browser_useโ drive a headless browser under governance: navigate/extract are reads; click/type/submit/download are writes that route through the approval gate. Reachable domains are default-deny via the browser-egress policy, and extracted text is DLP-screened.
Compute & media
code_executionโ run a Python or Node script in an isolated, network-less sandbox that exists for that run alone. Files written to the output directory come back as downloadable artifacts, rendered inline in chat. Use for charts, data analysis, PDFs, and image processing.generate_imageโ text-to-image; returns an inline image artifact.qr_codeโ turn a URL or short text into a scannable QR image.
Everyday utilities
current_timeโ the current date/time in any IANA timezone. Use instead of guessing today's date.calculateโ a safe expression evaluator (arithmetic plussqrt,log,round,min/max,factorialโฆ). Avoids in-model arithmetic mistakes.convert_unitsโ length, mass, temperature, time, data size, speed, volume, area.get_weatherโ current conditions for a place.currency_convertโ convert between currencies at reference rates.market_dataโ end-of-day price history for stocks, indices, FX and crypto, registered as a dataset thatrender_chartcan reference by name.
Knowledge, memory & skills
search_knowledgeโ retrieve chunks from attached collections with citation ids. Returns an explicit "not in knowledge" result when nothing matches, so the agent doesn't invent an answer.remember/recallโ durable user or agent facts, deduplicated on write and auto-injected into later turns.load_skillโ progressive disclosure: index, then body, then a specific reference file on demand.run_skill_scriptโ run a skill's declared entrypoint in the sandbox.
Interaction & orchestration
ask_userโ pause the run and ask a clarifying question; the reply becomes the tool result.write_canvasโ create or update a shared living document; the user's edits are shown to the agent next turn.render_uiโ show an interactive surface (a form, a choice, an upload) and wait for the answer.render_chartโ draw an interactive chart from a full ECharts option; the run does not pause.schedule_followupโ schedule a one-shot future wake-up, bounded by org policy caps.map_overโ fan a task out over a list, one child run per item, with count and cost caps and isolated failures.propose_skillโ propose a new skill into the review workshop (creates a proposal, never a live skill).
Authoring (the Architect toolset)
Declarable, and only meaningful on an authoring agent such as the built-in Architect. Drafts are conversation-scoped โ nothing here writes to the registry.
read_definitionโ read an existing agent definition you can see.write_definitionโ write a draft into the conversation's buffer.validate_definitionโ validate a draft through the same pipeline the editor uses.search_catalogโ search visible agents and skills for prior art.
Governance around every tool call
Each of these is a policy with a documented configuration and default โ this is the summary of how they land on a tool call.
- Allowlist โ a tool-allowlist policy can deny a tool org-wide or per team/agent. Deny wins, and a denied MCP server is hidden entirely rather than failing loudly.
- Writes park โ tools tagged as writes go through the approval gate under the agent's effective autonomy.
- DLP โ sensitive patterns are redacted from input before the model sees it and from output before delivery, including tool results.
- Injection screening โ content coming back from the outside world (tool results, knowledge) can be screened before it re-enters the model.
- Audit and cost โ every call is recorded on the run's event stream, and token/cost usage is written to the ledger.
MCP servers: sign-in and tool rules
A registered MCP server (Catalog โ Tools โ MCP servers)
connects over sse or streamable-http and chooses how
it signs in:
- None โ an open server.
- Server key โ one secret from Secrets, sent as a bearer token when the platform discovers the server's tools and on every call.
- Each person, with their own account โ for servers that act as a specific user (Microsoft Work IQ, most SaaS servers). The administrator registers the server with the OAuth app's client id; the endpoints are discovered from the server. Each person then presses Connect once. Calls carry the token of whoever started the run, never a shared one. Someone who has not connected sees a Connect card in chat; over the gateway the call is refused.
Generic tools that act on a resource path โ fetch,
do_action โ say little in their names, so two more controls apply:
- Classify tools โ the server's registrant or an org admin marks each tool read, write, destructive or disabled. A disabled tool is never offered to a model or a gateway client; write and destructive tools go through the approval gate.
- MCP tool rules โ a policy
(
mcp_tool_rules) matching server, tool and the call's resource path:allow,approve(park for approval even under trusted autonomy) ordeny. The strictest matching rule wins, so a narrower scope can only tighten. Example: approvedo_action /me/sendMail*, deny/admin/*. Agents and gateway clients get the same answer.
Declaring tools
Agent.md
---
name: research-assistant
model: default
tools:
- web_search
- web_fetch
- code_execution
- current_time
---
SKILL.md โ a skill may only use tools the agent already grants
---
name: weekly-report
allowed_tools:
- web_search
- code_execution
entrypoints:
build: scripts/build_report.py
---