Built-in tools (and the system MCP)
The tools the platform ships — lead capture, documents, follow-ups, web search — plus the auto-installed time/weather/location server.
list_toolsupdate_agentYou don't have to build the common tools — the platform ships them. Attach the ones this agent's job
needs with update_agent(name, add_tools=[…]); keep the set small (see Design principles).
Always confirm the exact names on your tenant with list_tools() — that is the source of truth.
tools=[…]replaces the whole list;add_tools/remove_toolschange one item. Passingtools=with only the tools you're thinking about silently drops every tool you didn't read first — this has happened in production and nobody noticed until a feature stopped working. Reach fortools=only when you deliberately mean "exactly this set", and read the returned agent to confirm the final list either way. The same pairs exist for skills (add_skills/remove_skills) and knowledge bases (add_knowledge_bases/remove_knowledge_bases).
The built-in tools
| Tool | What it does |
|---|---|
web_search | Look something up on the open web. |
save_contact | Capture the end user's contact details into their profile — the platform's lead-capture / records path. Returns a real reference code (AB2C-D3EF style) the agent relays to the user; look codes up on the user's detail page (recent_refs). |
export_document | Generate a structured document (a branded summary / report) for the conversation. |
schedule_followup | Proactively follow up later ("check back in 2 days") or book a user-requested callback — the message is sent for you. Returns a real booking reference traceable to the scheduled task. For absolute times ("tomorrow 10am") instruct the model to pass run_at (local ISO datetime + optional tz) — the server resolves the user's timezone; hand-computed delay_seconds is for relative times only, and models get the arithmetic wrong. Window: up to 7 days. |
schedule_reminder | Set a reminder for the end user; list_reminders / cancel_reminder manage them. |
compute_chart | Work out a derived series in code — share of total, growth %, running total, a projection at a fixed rate, or a metered bill (base fee + allowance + per-unit overage). Attached automatically to any agent that already has tools, so you rarely add it by hand. See Charts in answers. |
load_skill is also built in, but you don't attach it — the model pulls a skill on its own when a
skill's description matches.
list_tools() # exact names available on your tenant
update_agent(name="Support", add_tools=["save_contact", "schedule_followup"]) # incremental — keeps what's thereCapturing a contact with save_contact populates the user's record; combined with ask_forms on the
agent, structured intake lands as records you can review in the console.
The platform backs these two up automatically. When the end user's message contains a clear
signal — a phone number / email (any language, incl. spelled-out digits and spaced formats), or a
"call me tomorrow morning"-style callback request — and save_contact / schedule_followup is
enabled, the platform injects a per-turn hint reminding the model to call the tool before answering.
Benchmarked on production backends, this lifted lead-capture compliance on the weakest model from
~85% to 100% with zero false saves (the hint carries an "ignore if wrong" escape hatch, so an
over-eager detector cannot cause bad data). You get this for free — no configuration; your skill
should still state the trigger in its description (see Author a skill),
the hint is a safety net, not a replacement.
The system MCP — already installed
Every tenant gets a built-in system MCP server, enabled by default, with keyless tools for
local time, weather, and IP geolocation (city / region / timezone). You don't register it — it's
there. Its tools show up in list_tools() alongside the built-ins above, ready to attach.
So "what's the weather where the user is?" or "what's their local time?" work out of the box — the platform injects the end user's client IP, so location-aware answers need no setup.