> ## Documentation Index
> Fetch the complete documentation index at: https://secndai.manicule.dev/llms.txt
> Use this file to discover all available pages before exploring further.
> For every page in one file, fetch https://secndai.manicule.dev/llms-full.txt (large).
> To search and read these docs as tools, connect the MCP server at https://secndai.manicule.dev/api/mcp.
> Every agent surface: https://secndai.manicule.dev/.well-known/llms-manifest.json

# Tool selection (/cookbooks/tool-selection)

<!-- agent-signals: reading_time_min: 1 · est_tokens: 288 · updated: 2026-11-12 -->
Related: [Support triage](/cookbooks/support-triage.md), [Refund decision](/cookbooks/refund-decision.md), [Content moderation](/cookbooks/content-moderation.md), [Lead routing](/cookbooks/lead-routing.md), [Document classification](/cookbooks/document-classification.md)

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

```json title="request"
{
  "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.
