{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$defs": { "primitives": { // All supported primitive data types "type": "string", "enum": ["string", "integer", "float", "boolean", "json"] }, "value_schema": { // Represents the schema of a value (e.g. function input parameter value) "type": "object", "properties": { "val_type": { "$ref": "#/$defs/primitives" }, "enum": { "oneOf": [ { "type": "null" }, // Can be unset { "type": "array", "items": { "type": "string" } } ] } }, "required": ["val_type"], "additionalProperties": false } }, "type": "object", "properties": { "$schema": { // Explicitly allow JSON-Schema to be referenced (due to additionalProperties: false) "type": "string", "format": "uri" }, "name": { "type": "string", "description": "The tool name" }, "description": { "type": "string", "description": "A human-readable description of the tool and when to use it" }, "version": { "type": "string", "description": "An identifier for this version of the tool" }, "inputs": { "type": "object", "properties": { "parameters": { "type": "array", "minItems": 1, "items": { "type": "object", "properties": { "name": { "description": "The human-readable name of this parameter.", "type": "string" }, "required": { "description": "Whether this parameter is required (true) or optional (false).", "type": "boolean" }, "description": { "description": "A descriptive, human-readable explanation of the parameter.", "type": "string" }, "value_schema": { "$ref": "#/$defs/value_schema" }, "inferrable": { "type": "boolean", "description": "Whether a value for this parameter can be inferred by a model. Defaults to `true`.", "default": true } }, "required": ["name", "required", "value_schema"], "additionalProperties": false } } }, "required": ["parameters"], "additionalProperties": false }, "output": { "type": "object", "properties": { "available_modes": { "type": "array", "minItems": 1, "items": { "type": "string", "enum": ["value", "error", "null", "artifact", "requires_authorization"] } }, "description": { "description": "A descriptive, human-readable explanation of the function's output.", "type": "string" }, "value_schema": { "$ref": "#/$defs/value_schema" } }, "required": ["available_modes"], "additionalProperties": false }, "requirements": { "type": "object", "properties": { "authorization": { "oneOf": [ { "type": "null" }, // Can be unset { "type": "string", "enum": ["none", "token"] }, { "type": "object", "properties": { "oauth2": { "type": "object", "properties": { "authority": { "type": "string", "format": "uri" }, "scope": { "type": "array", "items": { "type": "string" } } }, "required": ["authority"], "additionalProperties": false } }, "required": ["oauth2"], "additionalProperties": false } ] } }, "additionalProperties": false } }, "required": ["name", "version", "inputs", "output"], "additionalProperties": false }