arcade-dev · Schema
Arcade Tool
Schema for an Arcade tool as exposed by the Arcade Engine. A tool is a single named action that an AI agent can invoke through the Tools API, scoped to a toolkit and addressable by its fully qualified name (toolkit.name@version).
Properties
| Name | Type | Description |
|---|---|---|
| name | string | Short, human-readable tool name within its toolkit (e.g., SendEmail). |
| fully_qualified_name | string | Globally unique identifier of the tool including toolkit and semantic version ([email protected]). |
| description | string | Natural-language description used by the LLM to decide when to call the tool. |
| toolkit | object | The toolkit this tool belongs to. |
| input | object | JSON Schema describing the tool's input parameters. |
| output | object | JSON Schema describing the tool's output. |
| requirements | object | Runtime requirements for the tool, including authorization and metadata. |
| deprecation_date | stringnull | If set, the date after which the tool will no longer be executable. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/arcade-dev/main/json-schema/arcade-tool-schema.json",
"title": "Arcade Tool",
"description": "Schema for an Arcade tool as exposed by the Arcade Engine. A tool is a single named action that an AI agent can invoke through the Tools API, scoped to a toolkit and addressable by its fully qualified name (toolkit.name@version).",
"type": "object",
"required": ["name", "fully_qualified_name", "description", "toolkit"],
"properties": {
"name": {
"type": "string",
"description": "Short, human-readable tool name within its toolkit (e.g., SendEmail).",
"examples": ["SendEmail", "PostMessage", "CreateIssue"]
},
"fully_qualified_name": {
"type": "string",
"description": "Globally unique identifier of the tool including toolkit and semantic version ([email protected]).",
"examples": ["[email protected]", "[email protected]"]
},
"description": {
"type": "string",
"description": "Natural-language description used by the LLM to decide when to call the tool."
},
"toolkit": {
"type": "object",
"description": "The toolkit this tool belongs to.",
"required": ["name", "version"],
"properties": {
"name": {"type": "string", "description": "Toolkit name (e.g., Google, Slack, GitHub)."},
"version": {"type": "string", "description": "Semantic version of the toolkit."}
}
},
"input": {
"type": "object",
"description": "JSON Schema describing the tool's input parameters.",
"additionalProperties": true
},
"output": {
"type": "object",
"description": "JSON Schema describing the tool's output.",
"additionalProperties": true
},
"requirements": {
"type": "object",
"description": "Runtime requirements for the tool, including authorization and metadata.",
"properties": {
"authorization": {
"type": "object",
"description": "User-scoped authorization needed before the tool can be executed.",
"properties": {
"provider_id": {"type": "string", "description": "Arcade auth provider identifier (e.g., google, slack, github)."},
"provider_type": {"type": "string", "enum": ["oauth2", "api_key", "custom"], "description": "Authorization mechanism used by the provider."},
"scopes": {"type": "array", "items": {"type": "string"}, "description": "OAuth scopes (or equivalent) required for this tool."}
}
},
"metadata": {
"type": "object",
"description": "Free-form metadata such as deprecation flags, rate-limit hints, or pricing tier (standard vs pro).",
"additionalProperties": true
}
}
},
"deprecation_date": {
"type": ["string", "null"],
"format": "date-time",
"description": "If set, the date after which the tool will no longer be executable."
}
},
"additionalProperties": false
}