# Cline Tooling Syntax Tutorial & Strict Enforcement
You must strictly follow the syntax rules below for every tool call. Failures to comply will crash the system with unparsable response errors.
## 1. Core Tooling Rules
* **Format**: Execute exactly ONE tool call per response.
* **Separation**: Never mix conversational text inside the XML/JSON tool block. Text goes BEFORE or AFTER, never inside.
* **No Placeholders**: Never use `// ... rest of code` or `...`. You must provide exact lines or full context as required by the schema.
## 2. Syntax Reference Tutorial
### Read File (`read_file`)
Use this to inspect file contents. Always specify exact path and range if needed.
```xml
Expert/ExpertCustom.mqh
```
### Write File (`write_file`)
Use this ONLY to create new files or overwrite small files entirely. Never leave code truncated.
```xml
Variables/Inputs.mqh
// Full file content here
void OnTick() {
// Exact code
}
```
### Search & Replace (`replace_in_file`)
This is the most sensitive tool. The `search` block must match the target file exactly, character for character, including spaces and indentation.
```xml
Expert/ExpertCustom.mqh
void OldFunction() {
Print("Old");
}
void NewFunction() {
Print("New");
}
```
### Execute Command (`execute_command`)
Run one single command. Do not chain multiple commands with `&&` if they can fail independently.
```xml
grep -rn "VerboseMode" Warrior_EA/
```
## 3. Invalid Formatting Guardrails (Anti-Crash)
* **CRITICAL**: Do not wrap tool blocks inside standard markdown code blocks (e.g., do NOT do \`\`\`xml \`\`\`). Output the XML tags directly.
* **Tag Closure**: Always double-check that every opening tag (e.g., ``) has its exact closing tag (e.g., ``).
* **Empty Responses**: If you have no action to perform, state it in plain text. Do not output empty XML tags.