Cookbook
Agents & skills · for AI agents

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.

MCP tools:list_toolsupdate_agent

You 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_tools change one item. Passing tools= 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 for tools= 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

ToolWhat it does
web_searchLook something up on the open web.
save_contactCapture 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_documentGenerate a structured document (a branded summary / report) for the conversation.
schedule_followupProactively 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_reminderSet a reminder for the end user; list_reminders / cancel_reminder manage them.
compute_chartWork 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 there

Capturing 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.