Anthropic SDK#

Manual control#

response = client.messages.create(
    model="claude-opus-4-6",
    max_tokens=4096,
    tools=adapter.tool_definitions(),
    messages=messages,
)

messages.append({"role": "assistant", "content": response.content})

if response.stop_reason == "tool_use":
    # Executes all tool_use blocks in parallel
    tool_results = await adapter.handle_response(response)
    messages.append({"role": "user", "content": tool_results})

Tool definitions format#

adapter.tool_definitions()
# Returns:
# [
#   {
#     "name": "screenshot",
#     "description": "...",
#     "input_schema": { "type": "object", "properties": {...} }
#   },
#   ...
# ]

Also using OpenAI-compatible APIs? Continue to OpenAI →