AMP --stream-json event cheatsheet
amp -x --stream-json writes one JSON object per line (JSONL) using a Claude Code-compatible protocol with a type field discriminator.
amp -x --stream-json writes one JSON object per line (JSONL) using a
Claude Code-compatible protocol with a type field discriminator.
Event types
system (subtype: init)
Session initialisation with thread ID, working directory, and available tools.
{"type":"system","subtype":"init","session_id":"T-2775dc92-90ed-4f85-8b73-8f9766029e83","cwd":"/tmp","tools":["Bash","Read","Write"],"mcp_servers":[]}
assistant
Assistant message containing text and/or tool use blocks. Includes per-message token usage.
Text block:
{"type":"assistant","session_id":"T-2775dc92-90ed-4f85-8b73-8f9766029e83","message":{"role":"assistant","content":[{"type":"text","text":"hello"}],"stop_reason":"end_turn","usage":{"input_tokens":50,"output_tokens":10}}}
Tool use block:
{"type":"assistant","session_id":"T-2775dc92-90ed-4f85-8b73-8f9766029e83","message":{"role":"assistant","content":[{"type":"tool_use","id":"toolu_01","name":"Bash","input":{"command":"echo hello"}}],"stop_reason":"tool_use","usage":{"input_tokens":100,"output_tokens":20}}}
Mixed content (text + tool use):
{"type":"assistant","session_id":"T-...","message":{"role":"assistant","content":[{"type":"text","text":"Let me check..."},{"type":"tool_use","id":"toolu_01","name":"Read","input":{"file_path":"src/main.py"}}],"stop_reason":"tool_use","usage":{"input_tokens":80,"output_tokens":30}}}
Subagent message (with parent_tool_use_id):
{"type":"assistant","session_id":"T-...","message":{...},"parent_tool_use_id":"toolu_parent_01"}
user
User message containing tool results.
{"type":"user","session_id":"T-2775dc92-90ed-4f85-8b73-8f9766029e83","message":{"role":"user","content":[{"type":"tool_result","tool_use_id":"toolu_01","content":[{"type":"text","text":"hello"}]}]}}
Error result:
{"type":"user","session_id":"T-...","message":{"role":"user","content":[{"type":"tool_result","tool_use_id":"toolu_01","is_error":true,"content":[{"type":"text","text":"command failed"}]}]}}
result
Final result event. Always the last event in a run.
Success:
{"type":"result","subtype":"success","is_error":false,"result":"hello","duration_ms":1500,"num_turns":1,"session_id":"T-2775dc92-90ed-4f85-8b73-8f9766029e83"}
Error:
{"type":"result","subtype":"error","is_error":true,"result":"","error":"Authentication failed","session_id":"T-err-session-id","duration_ms":100,"num_turns":0}
Notes
- AMP’s protocol is Claude Code-compatible —
system(init),assistant,user,resultfollow the same shapes. - Tool use and tool results are embedded in
message.contentblocks (not top-level events like Gemini). usageis per-message inassistantevents — accumulateinput_tokensandoutput_tokensacross messages for session totals.parent_tool_use_idinassistant/usermessages indicates subagent nesting.stop_reasoncan beend_turn(final text) ortool_use(pending tool call).