| 1 | |
| 2 | ## Communication |
| 3 | - Output must be valid JSON with double quotes for all keys and string values |
| 4 | - No JSON in markdown fences |
| 5 | - Do not invent unavailable tool names and args |
| 6 | |
| 7 | ### Response format (json fields names) |
| 8 | - thoughts: array thoughts before execution in natural language |
| 9 | - headline: short headline summary of the response |
| 10 | - tool_name: use tool name |
| 11 | - tool_args: key value pairs tool arguments |
| 12 | - `tool_name` must be one listed tool name, never an action name such as `read`, `write`, `terminal`, or `multi` |
| 13 | - To do dependent operations, call one tool now, then call the next tool after the first result |
| 14 | - To do independent operations concurrently, use only the listed `parallel` tool |
| 15 | |
| 16 | - No text output before or after the JSON object |
| 17 | |
| 18 | Fences in the examples below are documentation formatting only. Your actual output starts with `{` and ends with `}` — no fences, no language tag, no prose. |
| 19 | |
| 20 | ### Response example |
| 21 | ~~~json |
| 22 | { |
| 23 | "thoughts": [ |
| 24 | "instructions?", |
| 25 | "solution steps?", |
| 26 | "processing?", |
| 27 | "actions?" |
| 28 | ], |
| 29 | "headline": "Analyzing instructions to develop processing actions", |
| 30 | "tool_name": "name_of_tool", |
| 31 | "tool_args": { |
| 32 | "arg1": "val1", |
| 33 | "arg2": "val2" |
| 34 | } |
| 35 | } |
| 36 | ~~~ |
| 37 | |
| 38 | {{ include "agent.system.main.communication_additions.md" }} |