226 lines
6.6 KiB
Text
226 lines
6.6 KiB
Text
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"$defs": {
|
|
"primitives": {
|
|
// All supported primitive data types
|
|
"type": "string",
|
|
"enum": ["string", "integer", "number", "boolean", "json"]
|
|
},
|
|
"value_schema": {
|
|
// Represents the schema of a value (e.g. function input parameter value)
|
|
"type": "object",
|
|
"properties": {
|
|
"val_type": {
|
|
"oneOf": [{ "$ref": "#/$defs/primitives" }, { "type": "string", "enum": ["array"] }]
|
|
},
|
|
"inner_val_type": {
|
|
"description": "If the value type is a list, the type of the list values.",
|
|
"oneOf": [{ "$ref": "#/$defs/primitives" }, { "type": "null" }]
|
|
},
|
|
"enum": {
|
|
"oneOf": [
|
|
{ "type": "null" }, // Can be unset
|
|
{
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"required": ["val_type"],
|
|
"additionalProperties": false,
|
|
"if": {
|
|
"properties": { "val_type": { "const": "array" } }
|
|
},
|
|
"then": {
|
|
"required": ["inner_val_type"]
|
|
}
|
|
}
|
|
},
|
|
"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"
|
|
},
|
|
"fully_qualified_name": {
|
|
"type": "string",
|
|
"description": "The tool's fully-qualified name"
|
|
},
|
|
"description": {
|
|
"type": "string",
|
|
"description": "A human-readable description of the tool and when to use it"
|
|
},
|
|
"toolkit": {
|
|
"type": "object",
|
|
"description": "The toolkit that contains the tool",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string",
|
|
"description": "The name of the toolkit"
|
|
},
|
|
"description": {
|
|
"type": "string",
|
|
"description": "A human-readable description of the toolkit"
|
|
},
|
|
"version": {
|
|
"type": "string",
|
|
"description": "An identifier for this version of the toolkit"
|
|
}
|
|
},
|
|
"required": ["name", "version"],
|
|
"additionalProperties": false
|
|
},
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"parameters": {
|
|
"type": "array",
|
|
"minItems": 0,
|
|
"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": {
|
|
"secrets": {
|
|
"oneOf": [
|
|
{ "type": "null" }, // Can be unset,
|
|
{
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"key": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": ["key"],
|
|
"additionalProperties": false
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"metadata": {
|
|
"oneOf": [
|
|
{ "type": "null" }, // Can be unset,
|
|
{
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"key": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": ["key"],
|
|
"additionalProperties": false
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"authorization": {
|
|
"oneOf": [
|
|
{ "type": "null" }, // Can be unset
|
|
{
|
|
"type": "string",
|
|
"enum": ["none", "token"]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"provider_id": {
|
|
"type": "string",
|
|
"description": "The provider ID configured in Arcade that acts as an alias to well-known configuration."
|
|
},
|
|
"provider_type": {
|
|
"type": "string",
|
|
"description": "The type of the authorization provider."
|
|
},
|
|
"id": {
|
|
"type": "string",
|
|
"description": "A provider's unique identifier, allowing the tool to specify a specific authorization provider. Recommended for private tools only."
|
|
},
|
|
"oauth2": {
|
|
"type": "object",
|
|
"properties": {
|
|
"scopes": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"required": ["provider_type"],
|
|
"additionalProperties": false
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"required": ["name", "fully_qualified_name", "toolkit", "input", "output"],
|
|
"additionalProperties": false
|
|
}
|