Tool selection
Choose from a fixed allowlist, then validate arguments in code.
Offer only tools the current user may access. Describe what each tool does; never let the model create a tool name or executable command.
{
"model": "ren-zero-2026-11-12",
"type": "choice",
"situation": "The authenticated user asks: Where is order 123? The application has confirmed they own this order.",
"question": "Which allowed next step matches this request?",
"options": [
{"id": "lookup_shipment", "description": "Read shipment status for an authorized order"},
{"id": "lookup_invoice", "description": "Read an authorized order's invoice"},
{"id": "review", "description": "No offered tool fits or the request is ambiguous"}
],
"threshold": 0.95
}Dispatch through a fixed map only after action: "act". Validate the order ID, ownership, and argument schema separately. The response chooses a tool; it does not generate tool arguments.
Send review and ask_human to clarification. Test requests requiring unavailable tools, malicious instructions in retrieved text, and attempts to access another person’s order.