This prompt is for engineering teams who need to make AI tool-calling decisions auditable, debuggable, and reviewable. Use it when a model must select from multiple available tools and you need a traceable record of why it chose a specific tool and how it populated the arguments. This is critical for regulated workflows, customer-facing features where incorrect tool calls have user-visible consequences, and any system where an operator needs to inspect the model's decision logic after the fact.
Prompt
Tool Call Chain of Thought Reasoning Prompt

When to Use This Prompt
Determining when auditable tool-call reasoning is required versus when it adds unnecessary latency and cost.
The ideal implementation embeds this prompt in a tool-selection harness where the model first outputs a structured reasoning block before emitting the actual tool call. Your application should parse the reasoning, log it alongside the tool call for audit trails, and route it to a human review queue when the confidence is low or the risk level is high. For example, in a financial operations system, a transfer_funds tool call should always produce a reasoning trace explaining why that specific transfer endpoint was chosen, how the amount was derived, and why alternative tools like schedule_payment were rejected. This trace becomes part of the compliance record.
Do not use this prompt when latency is the primary constraint and the tool call is low-risk, or when the model has only one available tool and no selection reasoning is required. Adding chain-of-thought reasoning to every tool call in a high-throughput, low-stakes pipeline—such as a content tagging system with a single apply_tag function—will waste tokens and increase response times without providing meaningful audit value. Reserve this pattern for decision points where the cost of a wrong tool call justifies the cost of explaining it.
Use Case Fit
Where the Tool Call Chain of Thought Reasoning Prompt delivers value and where it introduces unnecessary overhead or risk.
Good Fit: High-Stakes Tool Execution
Use when: the tool performs destructive actions (DELETE, deprovision), financial transactions, or modifies patient records. Why: the reasoning trace provides an audit log before execution, enabling human-in-the-loop approval or post-hoc compliance review.
Good Fit: Complex Multi-Tool Selection
Use when: the model must choose from 5+ tools with overlapping capabilities. Why: forcing explicit reasoning reduces selection errors by making the model compare tool purposes and argument schemas before committing to a function call.
Bad Fit: Low-Latency, High-Volume Pipelines
Avoid when: you need sub-second tool calls in streaming or bulk processing. Why: chain-of-thought tokens add significant latency and cost. Use a direct tool-call prompt with schema validation instead.
Required Input: Complete Tool Schemas with Descriptions
Requirement: every available tool must include a name, natural-language description, parameter schema, and side-effect warnings. Why: the model cannot reason about tool choice if it lacks clear signals about what each tool does and what risks it carries.
Operational Risk: Reasoning-Execution Drift
Risk: the model produces sound reasoning but then emits a tool call that contradicts its own analysis. Guardrail: implement a post-generation validator that checks whether the selected tool and arguments match the reasoning trace before execution proceeds.
Operational Risk: Token Cost Overrun
Risk: verbose reasoning chains consume 3-5x the tokens of a direct tool call, blowing context budgets on multi-turn agent loops. Guardrail: set a token limit on the reasoning block and truncate or fall back to a direct-call prompt if the model exceeds it.
Copy-Ready Prompt Template
A copy-ready system prompt that forces the model to produce an auditable reasoning block before emitting a tool call, making tool selection decisions traceable and debuggable.
This template is designed to be pasted into your system prompt or prefixed to a user task. It instructs the model to perform explicit chain-of-thought reasoning about which tool to call, why that tool is appropriate, and what arguments are required, all before the actual tool call is emitted. The primary value is auditability: when a tool call fails, produces an unexpected side effect, or is selected incorrectly, the reasoning block provides a clear trace for debugging the model's decision process. This is critical for high-stakes applications in finance, healthcare, or infrastructure where an incorrect tool call is not just a nuisance but a potential liability.
textYou are an AI assistant with access to a set of tools. Your task is to decide which tool, if any, to call to satisfy the user's request. Before you emit any tool call, you MUST produce a reasoning block inside <thinking> tags. This block must contain: 1. **User Intent**: Restate the user's core goal in one sentence. 2. **Tool Candidates**: List the tools that could potentially satisfy this request from the provided [TOOLS] list. If none apply, state that explicitly. 3. **Selection Rationale**: Explain why the chosen tool is the best fit and why others were rejected. Reference specific capabilities from the tool descriptions. 4. **Argument Plan**: List each required argument for the chosen tool, its expected type, and where you will source its value (from the user's message, from [CONTEXT], or a default). If a required argument is missing, note it here. 5. **Risk Check**: If the tool has a [RISK_LEVEL] of 'high' or 'destructive', confirm that the action is reversible or that user confirmation has been obtained. After the </thinking> tag, emit the tool call in the exact format specified by the tool definition. If no tool is appropriate, respond to the user directly without a tool call. [TOOLS] [CONTEXT] [EXAMPLES] [CONSTRAINTS] [RISK_LEVEL]
To adapt this template, replace the square-bracket placeholders at runtime. [TOOLS] should contain your serialized tool definitions (JSON for OpenAI, XML for Anthropic). [CONTEXT] is any retrieved evidence or user-specific data. [EXAMPLES] should include one or two few-shot demonstrations of correct reasoning blocks followed by correct tool calls, covering both straightforward and ambiguous cases. [CONSTRAINTS] can enforce rules like 'never call the DELETE tool without confirmation.' [RISK_LEVEL] should be a per-tool annotation or a global policy string. After assembly, validate the final prompt to ensure no placeholders remain unresolved and that the tool schemas are syntactically valid for your target model. For high-risk deployments, log the full <thinking> block alongside the tool call for post-incident review.
Prompt Variables
Replace each placeholder at runtime before sending the request to the model. All placeholders are required unless noted otherwise in the validation notes.
| Placeholder | Purpose | Example | Validation Notes |
|---|---|---|---|
[USER_QUERY] | The user's original request that may require tool use | Schedule a meeting with the sales team for next Tuesday at 2pm | Non-empty string. Must be the raw user input without preprocessing. Null or empty triggers a preflight rejection before model call. |
[AVAILABLE_TOOLS_SCHEMA] | JSON array of tool definitions with names, descriptions, and parameter schemas | [{"name": "create_calendar_event", "description": "Creates a calendar event", "parameters": {...}}] | Must parse as valid JSON array. Each tool object requires name, description, and parameters fields. Schema mismatch with actual tool registry triggers assembly error. |
[TOOL_SELECTION_RULES] | Constraints governing which tools can be used and when | Only use create_calendar_event if the user explicitly requests a meeting. Do not use delete_calendar_event without confirmation. | Non-empty string. Must include explicit prohibition rules and confirmation requirements. Absence of rules may cause unsafe tool selection in production. |
[REASONING_FORMAT] | Template specifying how the model should structure its chain-of-thought before emitting a tool call | Step 1: Identify the user's intent. Step 2: List candidate tools. Step 3: Explain why the selected tool is correct. Step 4: Justify each argument value. | Must contain at least 3 sequential reasoning steps. Each step must be a distinct instruction. Vague templates like 'think step by step' fail eval because they don't produce auditable reasoning traces. |
[OUTPUT_SCHEMA] | Expected JSON structure for the reasoning trace and tool call | {"reasoning_steps": ["string"], "selected_tool": "string", "arguments": {}, "confidence": "high|medium|low"} | Must be a valid JSON Schema or example object. The reasoning_steps array must be present and non-empty in every response. Missing confidence field triggers a retry. |
[FEW_SHOT_EXAMPLES] | 2-4 examples showing correct reasoning traces paired with tool calls for different scenarios | User: 'Book a flight to London'. Reasoning: [steps]. Tool: search_flights. Args: {destination: 'London'} | Must include at least 2 examples covering different tools. Each example must show the full reasoning trace, not just the final tool call. Examples with missing reasoning steps cause the model to skip the chain-of-thought. |
[MAX_REASONING_STEPS] | Upper bound on the number of reasoning steps to prevent runaway verbose traces | 5 | Must be a positive integer between 3 and 10. Values above 10 waste tokens without improving selection accuracy. Values below 3 produce insufficient audit trails for debugging tool selection errors. |
[CONFIDENCE_THRESHOLD] | Minimum confidence level required to proceed without human confirmation | medium | Must be one of 'high', 'medium', or 'low'. When model confidence is below this threshold, the system must escalate for human review rather than executing the tool call. Set to 'high' for destructive operations. |
Implementation Harness Notes
How to wire the Tool Call Chain of Thought Reasoning Prompt into an application runtime with validation, retries, and audit logging.
This prompt is not a standalone chat interaction; it is a reasoning gate that sits between the tool selection layer and the tool execution layer in your application. The harness must capture the model's reasoning text, parse the final tool call from the output, validate the call against the provided [TOOLS] schema, and only then proceed to execution. The reasoning trace should be logged as structured metadata alongside the tool call, not discarded, because it is the primary artifact for debugging incorrect tool selections and for satisfying audit requirements in regulated workflows.
Implement a wrapper function that accepts the assembled prompt and a list of valid tool definitions. After inference, use a strict parser to extract the tool call from the model's response. If the parser cannot find a valid function name or the arguments fail JSON schema validation against the target tool's parameters, do not execute the call. Instead, route the failure to a retry path that injects the validation error and the original reasoning trace back into the prompt, asking the model to correct its call. Set a hard retry limit (typically 2-3 attempts) before escalating to a human review queue or returning a structured error to the user. For high-risk tool calls where [RISK_LEVEL] is set to high, always require a synchronous human approval step after successful parsing but before execution, presenting the reasoning trace and the parsed arguments for review.
Model choice matters here. This prompt works best with models that have strong instruction-following and structured output capabilities. If you are using a model that does not natively separate reasoning from the tool call, you may need to post-process the output with a regex or delimiter-based split. Log every attempt—including the raw prompt, the full model response, the parsed tool call, validation results, and the final execution outcome—to an observability platform. This trace data is essential for running the eval checks described in the evaluation section, such as measuring reasoning-tool alignment and argument accuracy. Never deploy this prompt in a path where a hallucinated tool call could trigger an irreversible side effect without a human in the loop.
Expected Output Contract
Use this contract to build your response parser and validator for the Tool Call Chain of Thought Reasoning Prompt. Every field must be present and pass the specified validation rule before the tool call is executed or the reasoning is accepted.
| Field or Element | Type or Format | Required | Validation Rule |
|---|---|---|---|
reasoning | string | Must be non-empty and contain at least 50 characters. Must reference at least one tool name from the provided schema by exact string match. Parse check: extract text before tool_call block. | |
tool_call | object | Must be a valid JSON object. Schema check: must contain 'name' (string) and 'arguments' (object) fields. 'name' must match an available tool definition exactly. | |
tool_call.name | string | Must be a non-empty string that exactly matches a tool name in the active tool schema list. Case-sensitive comparison required. | |
tool_call.arguments | object | Must be a valid JSON object. All required parameters from the matched tool's schema must be present. No extra parameters allowed beyond the schema definition. Type check each argument against the schema. | |
tool_call.arguments.* | varies per schema | conditional | Each argument value must satisfy the type, enum, and constraint rules defined in the tool schema. Null values are allowed only if the schema marks the parameter as nullable. Run schema validator per parameter. |
confidence | string | If present, must be one of: 'high', 'medium', 'low'. If absent, parser should default to null. No other values permitted. | |
alternative_tools_considered | array of strings | If present, each string must be a valid tool name from the schema. If the model considered no alternatives, this field should be an empty array, not null or absent. Validate each entry against the tool list. | |
requires_confirmation | boolean | Must be true if the selected tool is marked as requiring confirmation in the tool schema or if confidence is 'low'. Must be false otherwise. Cross-reference with tool schema and confidence field. |
Common Failure Modes
What breaks first when using Tool Call Chain of Thought Reasoning prompts in production, and how to guard against each failure mode.
Reasoning Drift Under Latency Pressure
What to watch: When response time constraints tighten, the model may skip or truncate its reasoning step and emit a tool call directly, defeating the audit trail. This is common in streaming or real-time applications where users expect instant responses. Guardrail: Set explicit instructions that the reasoning block is mandatory before any tool call. Implement a pre-execution parser that rejects tool calls without a preceding reasoning segment and triggers a retry with a stronger prompt.
Reasoning-Argument Mismatch
What to watch: The model produces coherent reasoning for one tool but then calls a different tool, or the reasoning justifies correct arguments while the actual call contains different values. This breaks traceability and can cause silent execution errors. Guardrail: Add a post-generation validation step that extracts the tool name and arguments from both the reasoning block and the tool call, then compares them. If they diverge, flag for human review or trigger a self-correction retry.
Over-Explanation Without Decision
What to watch: The model generates extensive reasoning about tool options, edge cases, and trade-offs but never commits to a specific tool call. This stalls agent workflows and leaves the system waiting for an action that never arrives. Guardrail: Constrain the reasoning format to require a final line that explicitly states the chosen tool and primary justification. Set a maximum reasoning token budget and use a stop sequence to force a decision if the model rambles.
Hallucinated Tool Capabilities in Reasoning
What to watch: The reasoning block references tool parameters, return values, or side effects that don't exist in the provided schema. This creates a false audit trail that looks plausible but misrepresents what the tool actually does. Guardrail: Run a schema-aware validator over the reasoning text that flags any parameter names, types, or capabilities not present in the tool definitions. Use these flags to either reject the call or append a correction note before execution.
Reasoning Leakage of Sensitive Context
What to watch: The model includes user PII, internal system details, or confidential business logic in its reasoning trace. Since reasoning is often logged for debugging, this creates a data exposure risk that bypasses standard output filters. Guardrail: Apply the same PII redaction and sensitive data scanning to reasoning blocks as you do to final outputs. Treat reasoning logs as sensitive audit artifacts with access controls and retention policies.
Prompt Injection via Tool Description Exploitation
What to watch: Adversarial content embedded in tool names, descriptions, or parameter docs can hijack the reasoning process, causing the model to justify malicious tool calls with fabricated logic. The reasoning trace then provides false confidence in a compromised decision. Guardrail: Sanitize all tool schemas before injection by stripping markdown, HTML, and instruction-like language from descriptions. Validate that tool names and parameter names match a strict allowlist pattern and contain no natural language directives.
Evaluation Rubric
How to test output quality before shipping. Run these checks against a golden dataset of user requests with known correct tool selections and argument values.
| Criterion | Pass Standard | Failure Signal | Test Method |
|---|---|---|---|
Tool Selection Accuracy | Model selects the correct tool from the provided schema for the given user request | Model selects a hallucinated tool name or picks a semantically similar but incorrect tool | Run against 50 labeled requests; require >= 95% exact-match tool name accuracy |
Argument Completeness | All required arguments for the selected tool are populated with valid values | Missing required field, null value for non-nullable argument, or argument present but empty string | Schema-validate each output against the tool definition; flag any missing required fields |
Argument Type Correctness | Each argument value matches the declared type in the tool schema | String provided for integer field, array for object field, boolean for string enum | Parse each argument with the schema's type system; fail on any type mismatch |
Enum Value Adherence | Enum-constrained arguments use only values from the defined enum list | Model invents a value not in the enum or uses a near-match with different casing | Check each enum field against allowed values; case-sensitive exact match required |
Reasoning Trace Completeness | Chain-of-thought block explains why this tool was chosen and how argument values were derived | Reasoning block missing, truncated, or contains only generic text without referencing the specific request | Assert reasoning block is non-empty, contains tool name, and references at least one user-provided detail |
Reasoning-Output Consistency | The tool and arguments in the final call match what the reasoning block describes | Reasoning describes Tool A but output calls Tool B; reasoning mentions a value not present in the final arguments | Extract tool name and key arguments from reasoning block; assert they match the final tool call exactly |
No Hallucinated Capabilities | Model does not reference tools, parameters, or behaviors not present in the provided schema | Reasoning or output mentions a parameter not in the schema, assumes a default not documented, or invents a tool | Diff all referenced tool names and argument keys against the provided schema; flag any extras |
Clarification Over Guessing | When required information is missing and cannot be reasonably inferred, model asks for clarification instead of guessing | Model populates a required argument with a plausible but unsupported guess without flagging uncertainty | Include 5 requests with deliberately missing required info; assert model either asks for clarification or marks confidence low |
Enabling Efficiency, Speed & Accuracy
Intelligent Analysis, Decision & Execution
We build AI systems for teams that need search across company data, workflow automation across tools, or AI features inside products and internal software.
Talk to Us
Search across company data
Give teams answers from docs, tickets, runbooks, and product data with sources and permissions.
Useful when people spend too long searching or get different answers from different systems.

Automate internal workflows
Use AI to route work, draft outputs, trigger actions, and keep approvals and logs in place.
Useful when repetitive work moves across multiple tools and teams.

Add AI to products and internal tools
Build assistants, guided actions, or decision support into the software your team or customers already use.
Useful when AI needs to be part of the product, not a separate tool.
Adapt This Prompt
How to adapt
Start with the base reasoning prompt and a single tool definition. Use a lightweight eval that checks for the presence of a reasoning block before the tool call. Skip strict schema validation on arguments initially.
codeBefore calling any tool, explain your reasoning inside <thinking> tags. Then emit the tool call. Tool: [TOOL_NAME] Schema: [TOOL_SCHEMA] User request: [USER_INPUT]
Watch for
- Model skips reasoning and calls the tool directly
- Reasoning is present but contradicts the selected tool
- Arguments are hallucinated when schema is underspecified

About the author
Prasad Kumkar
CEO & MD, Inference Systems
Prasad Kumkar is the CEO & MD of Inference Systems and writes about AI systems architecture, LLM infrastructure, model serving, evaluation, and production deployment. Over 5+ years, he has worked across computer vision models, L5 autonomous vehicle systems, and LLM research, with a focus on taking complex AI ideas into real-world engineering systems.
His work and writing cover AI systems, large language models, AI agents, multimodal systems, autonomous systems, inference optimization, RAG, evaluation, and production AI engineering.
Partnered with leading AI, data, and software stack.
How We Work
Custom AI workflows for your Business
One-fit-all AI don't work for modern businesses. At Inferensys, we aim to understand your business & custom requirements; which we use to define most efficient agentic workflows, the data, and the tools for your business.
01
Review the use case
We understand the task, the users, and where AI can actually help.
Read more02
Pick the right approach
We define what needs search, automation, or product integration.
Read more03
Build the first useful version
We implement the part that proves the value first.
Read more04
Improve from there
We add the checks and visibility needed to keep it useful.
Read moreThe first call is a practical review of your use case and the right next step.
Talk to Us