A tool's input and output are each defined by a JSON schema, and every run is validated against both: the caller's record against the input schema before the tool runs, and the result against the output schema before it's returned. This reference covers the schema editor in Create schema — its Manual and JSON modes, the supported data types, the validation settings available in Manual mode, the JSON Schema keywords available in JSON mode, and which keywords each AI provider accepts. It applies to both the tool input and the tool output. For the steps to open the editor, see Configure tool input and Configure tool output.
Manual and JSON modes
Create schema offers two modes, Manual and JSON.
- Manual — A visual builder. Add properties by name, pick a data type for each, nest objects and arrays, and set validations in each property's Additional settings. Use it for flat or lightly nested schemas with the validations listed in this article.
-
JSON — A raw JSON Schema editor that accepts every keyword the Ajv validator supports. Use it for
anyOf,oneOf,allOf,$defsand$ref,if/then/else,uniqueItems,multipleOf, and other keywords Manual mode doesn't expose. JSON mode is also the better choice for an output schema an AI agent consumes, because providers expect a constrained response schema.
The mode is saved with the schema. Switching from JSON to Manual removes any keywords Manual mode doesn't support; a confirmation dialog lists what will be removed before you continue. Schemas created before August 2026 open in Manual mode.
Data types
Each property has one of five types: string, number, boolean, object, or array. Objects and arrays can contain any type, to any depth. In Manual mode, select the type at the left of the property's row, and use + on an object or array row to add a child property.
Additional settings (Manual mode)
In Manual mode, point to a property row and select Settings . The settings shown depend on the property's type; each dialog has Cancel and Save.
| Setting | Description | Applies to |
|---|---|---|
| Description | Help text for the property. Shown to AI agents that call the tool, so write it for them. | All types |
| Required | The property must be present. | All types |
| Allow null | The property may be null. |
All types |
| Regex | A regular expression the value must match. | string |
| Minimum length / Maximum length | Bounds on the string length. | string |
| Minimum value / Maximum value | Inclusive bounds on the number. | number, array of numbers |
| Exclusive minimum / Exclusive maximum | Exclusive bounds on the number. | number, array of numbers |
| Multiple of | The number must be a multiple of this value. | number, array of numbers |
| Minimum items / Maximum items | Bounds on the array length. | array |
| Add enums | A fixed list of allowed values. | string, number, array |
Notes:
- An object has no validations of its own (only Description, Required, and Allow null); validations apply to its child properties.
- A boolean supports only Description, Required, and Allow null.
- An array shows the item validations for its item type — for example, the number bounds for an array of numbers — and they apply to each item.
JSON Schema keywords (JSON mode)
JSON mode accepts every keyword supported by Ajv JSON Schema validation, including the type, string, number, array, and object keywords, enum, const, combinators (anyOf, oneOf, allOf, not), conditionals (if/then/else), and references ($defs, $ref).
AI provider compatibility
When an AI agent calls the tool, the agent's model provider validates the tool's schemas too, and some providers reject keywords Ajv accepts. Prefer anyOf over oneOf where either would work.
| Keyword | OpenAI (strict mode) | Gemini 2.0+ | Anthropic |
|---|---|---|---|
enum, pattern, minimum/maximum, minLength/maxLength, minItems/maxItems, anyOf, $ref/$defs
|
Supported | Supported | Supported |
allOf |
Not supported | Varies by model | Varies by model |
oneOf |
Not supported — use anyOf
|
Varies by model | Varies by model |
uniqueItems |
Not supported | Varies by model | Varies by model |