From 00315acf6ddfde1ddd247e27b18556bb158c37d4 Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Tue, 15 Sep 2026 11:14:12 -0600 Subject: [PATCH] =?UTF-8?q?docs:=20llm-node=20builtin=20availability=20?= =?UTF-8?q?=E2=80=94=20user=5F=5F/todo=5F=5F=20now=20require=20explicit=20?= =?UTF-8?q?tools:=20opt-in=20(breaking),=20other=20builtin=20families=20st?= =?UTF-8?q?ay=20implicit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Graph-Agents.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/Graph-Agents.md b/Graph-Agents.md index 5d76392..1aec127 100644 --- a/Graph-Agents.md +++ b/Graph-Agents.md @@ -697,6 +697,28 @@ whitelist is enforced against global tools, agent custom tools, and MCP alike. Each entry is validated at startup against the active agent's tool list; an unknown entry is a startup error. +### Built-in functions inside `llm` nodes + +Coyote's built-in function families are not all governed by the `tools:` +whitelist the same way: + +- **`user__*` and `todo__*` require explicit opt-in.** Inside an `llm` node + these interactive/turn-control builtins are only offered to the model if + the node's `tools:` list names them (e.g. `tools: [user__select]`). A node + that doesn't list them never sees them. This is deliberate: graph nodes + usually run headless, and a structured-output node calling `user__select` + ("Ready to finalize?") suspends the node as an escalation instead of + producing its output. The graph validator warns when a node with an + `output_schema` explicitly opts into `user__*` tools. Approval gates are + unaffected — use a [`approval` node](#approval) for human sign-off, not an + `llm` node with user tools. +- **`agent__*`, `memory__*`, `job__*`, `skill__*`, and RAG builtins stay + implicitly available** (subject to their usual gates: `can_spawn_agents` + for spawning, the skill policy for skills, and so on) regardless of the + node's `tools:` list. Orchestrator graphs spawning sub-agents from `llm` + nodes, teammate fan-out messaging, node-scoped background jobs, memory, + and graph RAG all depend on this. + ### The `mcp_tools` field (per-server tool patterns) Where `tools:` selects *which servers* a node may use, an optional