A developer is defining a tool for Claude that fetches the current stock price for a ticker symbol. The tool will be called `get_stock_price`. Which `input_schema` definition best enables Claude to call the tool correctly?
Claude relies on the tool's JSON Schema to decide when and how to call it. Declaring an object with a typed `ticker` property and marking it required gives the model the parameter name, type, and obligation it needs to emit a valid `tool_use` input such as `{"ticker": "AAPL"}`. This is the standard, fully specified shape expected by the Messages API.
Why this answer
Tool definitions should describe inputs as a JSON Schema object with named, typed properties and a `required` array. For a stock lookup, a required string `ticker` tells Claude exactly what to supply. Permissive schemas, non-object root types, or missing required/description fields all degrade the model's ability to produce correct tool call arguments, so the fully specified object schema is the right choice.
Exam trap
The trap here is thinking a descriptive string schema or a permissive object is enough, when Claude needs named typed properties and an explicit required list.