Every agent needs a brain, hands, and memory
Task: Analyze quarterly sales data
Best for: well-defined tasks, getting started, clear objectives
Best for: workflows with specialized subtasks
Best for: multiple domains, varied request types
from claude_agent_sdk import query, ClaudeAgentOptions async for msg in query( prompt="Analyze sales data, find trends," # User Request "and build a dashboard", options=ClaudeAgentOptions( model="claude-sonnet-4-6", # Brain system_prompt="You are a data analyst.", # Agent Role allowed_tools=[ "Read", # read sales CSV "Bash", # run SQL queries "Write", # create dashboard ], permission_mode="acceptEdits", ), ): print(msg)
Sequential Tool Calls
# 4 round trips to the model tool_call("read_file", "data.csv") ↓ return to model tool_call("query_db", "SELECT ...") ↓ return to model tool_call("check_status") ↓ return to model tool_call("format_output") # Each ↓ = latency + tokens # Each ↓ = context drift risk
Code as Tool Use
# 1 round trip — agent writes a program async def analyze(): data = read_csv("data.csv") try: results = db.query( "SELECT region, SUM(rev)" " FROM sales GROUP BY region" ) except DBError: results = fallback_query(data) return format_chart(results) # Logic preserved in one piece
Calculator vs Spreadsheet — the agent becomes a programmer