Writing tools models use well
Models pick a tool by reading its name and description, so say plainly what it does and when to use it, for example “Search the help centre. Use when the user asks how to do something in the app.” Describe every parameter, including units and formats, such as “ISO date, YYYY-MM-DD”. Use a fixed list of allowed values whenever the choice is limited, and mark only the fields that are truly needed as required.
How the formats differ
The parameter schema is the same JSON Schema everywhere; what changes is the wrapper. OpenAI nests it under function.parameters, Claude calls it input_schema, Gemini lists function declarations, and MCP servers return inputSchema. Strict modes add rules: every property must be listed as required and extra properties must be refused, so optional fields are written as allowing null instead.
What the checks catch
Names that break API rules, such as spaces or more than 64 characters, duplicate tool or parameter names, allowed values that don’t match the type, objects with no properties, and missing descriptions. Errors will stop an API call; warnings are things that tend to make a model choose the wrong tool or fill in the wrong value.