system
background.run
Run Tool in Background (fire-and-forget)
Effects: write
Run ANOTHER tool off the critical path: returns INSTANTLY while the target tool runs in the background, so a slow write/log/notify never delays your reply. Pass tool (the id of a tool you already have) and args (the target tool's arguments as a JSON object STRING). Optional serialize_key serializes background runs that share the key (e.g. the spreadsheet id when appending rows). Use ONLY for tools whose result you don't need this turn (logging, side-effect writes). Cannot run a tool you don't already have, cannot run a tool that requires approval, and cannot run a tool that deletes data — call those directly. Only callable from within an agent turn.
Arguments
| Argument | Type | Required | Description |
|---|---|---|---|
args | string | yes | The target tool's arguments as a JSON object STRING, e.g. '{"spreadsheet_id":"abc","values":[["a","b"]]}'. (A JSON string — not a bare object — so the schema stays valid for strict function-calling on voice.) |
serialize_key | string | no | Optional. Background runs sharing this key run one-at-a-time (e.g. pass the spreadsheet id when appending rows). |
tool | string | yes | Id of the tool to run in the background. Must be a tool you already have. |
feedback.save
feedback.save
Effects: write
Save a behavioral rule, preference, or correction that should guide future agent behavior. Use this when the user gives explicit guidance like 'always reply in Russian', 'don't suggest meetings before 11am', or 'invoice link goes via email, not chat'. Structure the rule as: the rule itself, why it matters (if stated), and how to apply it. Scope: 'workspace' for org-wide rules, 'agent' for per-agent overrides, 'person' for per-contact preferences. Prefer feedback.save over notes.save for anything that's instructive rather than informational.
Arguments
| Argument | Type | Required | Description |
|---|---|---|---|
how_to_apply | string | no | When/how to apply the rule (optional). Helpful for conditional rules like 'apply when speaking to Russian-speaking customers'. |
key | string | yes | Short identifier for this rule (e.g. 'reply_language', 'meeting_hours'). Must not start with '__' (reserved). |
rule | string | yes | The rule itself, in imperative form. Required. |
scope | string | yes | Scope of the rule. 'workspace' for org-wide rules; 'agent' for per-agent overrides; 'thread' for conversation-specific guidance; 'person' for per-contact preferences. 'global' accepted as deprecation alias for 'agent'. (one of workspace, agent, thread, person, global) |
scope_ref_id | string | no | Required for scope='thread' (thread_id) and scope='person' (person_id). |
target_agent_id | integer | no | Target agent. In agent mode optional (defaults to self); required from MCP. Ignored when scope='workspace'. |
why | string | no | Why this rule matters (optional but recommended for the distiller). |
system.sleep
Sleep
Effects: read
Pause execution for a given number of seconds (max 30). Use when you need to wait for an external process to complete before retrying — e.g. message sync, backfill, or API propagation. Total sleep per run is capped at 60 seconds.
Arguments
| Argument | Type | Required | Description |
|---|---|---|---|
reason | string | no | Why you are waiting (logged for debugging) |
seconds | integer | yes | Number of seconds to sleep (1-30) |