Skip to main content
Custom tools let you define a tool interface (name + JSON schema) and let the assistant choose when to call it. When it calls your tool, it returns a tool_use content block with structured input.

Prerequisites

Requirements

In the tools array, provide:
  • name: unique tool name
  • description: what the tool does
  • inputSchema: JSON Schema describing the tool input

Basic request and response

This example validates a request that defines a tiny calculator tool and forces its use.
Example response:
To run the request, send the same body to POST /messages. When the assistant returns a tool_use block, execute your tool and include a tool_result block in the next message.