api_tools and referenced by name in node prompts. A knowledge base can be set once for the whole agent, or per node when different steps need different sources.
Call transfer
Define the transfer tool once inapi_tools.tools and api_tools.tools_params:
function_call to force the response LLM to pick this tool when the node is entered:
function_call sets the response LLM’s tool_choice to the named tool. The LLM still emits the call; the framework doesn’t auto-invoke it.
Custom API tools
Define a tool the LLM can call mid-conversation, e.g. to look up an order:@ prefix:
Limiting a tool to specific nodes
By default every tool is visible to the LLM on every node. To expose a tool only where it makes sense, addscope: "node" and a nodes list to its entry in tools_params:
fetch_order_status while the conversation is on collect_order or confirm_order. On every other node the tool is hidden, so it can’t be triggered by accident. Tools with no scope (or scope: "global") stay available everywhere.
Ending the call
Graph agents can hang up using the built-inend_call tool. To let a node end the call, set function_call: "end_call" on that node and set hangup_after_LLMCall: false in the task config:
hangup_after_LLMCall: false, the call only ends from the nodes that opt in with function_call: "end_call". This gives you exact control over where a call is allowed to hang up. Leave hangup_after_LLMCall: true (the default) if you instead want the agent to decide when to end the call on its own.
Knowledge base
Attach a knowledge base so the agent can answer from your documents. On each turn the latest user message retrieves the most relevant chunks, which are added to the prompt before the response is generated.Global knowledge base
Setrag_config at the top level of the graph config and every node uses it:
Per-node knowledge base
Setrag_config on a node to use a different source on that node. A node’s own rag_config takes precedence; nodes without one fall back to the global rag_config.
Multiple collections
Passvector_ids instead of vector_id to search several collections at once:
If retrieval fails, the node still responds, just without retrieved context. The error is logged but never raised to the caller.

