Learn how to use and create Shinkai Metadata to automate tasks and extend functionality
Field | Type | Description |
---|---|---|
id | string (optional) | Unique identifier for the tool. |
name | string (required) | Human-readable name for the tool. |
version | string (optional) | Version of the tool. |
description | string (optional) | Short description explaining the tool’s purpose. |
author | string (optional) | Author or maintainer of the tool. |
homepage | string (optional) | URL to the tool’s homepage or documentation. |
keywords | array of strings | List of keywords or tags associated with the tool. |
tool_type | string (optional) | Indicates the type of tool (e.g. “typescript”, “python”). |
license | string (optional) | License for the tool (e.g. “MIT”). |
configurations | ConfigurationsTable | Configuration settings for the tool (see Configurations Table below). |
parameters | ParametersTable | The input parameters accepted by the tool (see Parameters Table below). |
result | ResultTable | The shape of the tool’s output (see Result Table below). |
sqlTables | array of objects | Optional list of SQL table definitions (see SQL Tables section). |
sqlQueries | array of objects | Optional list of SQL queries or statements (see SQL Queries section). |
tools | array | Optional references to internal or external helper tools. |
oauth | array of objects | OAuth configuration objects if the tool requires authentication (see OAuth Table section). |
Note: Any of these fields not marked “required” is optional. A specific metadata entry may include all, some, or none of these fields.
type: "object"
and a properties
key that defines each possible configuration setting:
Field | Type | Description |
---|---|---|
type | string (always “object”) | Must be "object" for the top-level configurations schema. |
properties | PropertiesTable | A collection of fields describing each configuration setting. Each property can have its own type , description , default , or enum . |
required | array of strings | Optional. A list of property names that are required. |
configurations.properties
can include:
"string"
, "number"
, "boolean"
, "array"
, or "object"
.true
, indicates that the value can be null
(optional).configurations.required
, that property must be provided.Field | Type | Description |
---|---|---|
type | string (always “object”) | Must be "object" for the parameters schema. |
properties | PropertiesTable | Each input parameter, with its own type , description , and optional attributes like default . |
required | array of strings | Optional. Names of any parameters that must be supplied. |
parameters.properties
can include:
"string"
, "number"
, "boolean"
, "array"
, or "object"
.["high","low","urgent"]
).null
.Field | Type | Description |
---|---|---|
type | string (always “object”) | Must be "object" for the result schema. |
properties | PropertiesTable | Describes the output fields the tool produces. Each field has its own type and other annotations. |
required | array of strings | Optional. Lists the fields that will always appear in the result. |
"string"
, "number"
, "boolean"
, "array"
, or "object"
.null
.Field | Type / Possible Values | Description |
---|---|---|
type | string | Indicates the data type of the property. Common values are "string" , "number" , "boolean" , "array" , or "object" . |
description | string | Explains the purpose of this property or what it represents. Mandatory for Parameters and Configuration. |
default | any (optional) | Default value. Only for reference it is NOT APPLIED, or passed to the LLM. |
enum | array of strings (optional) | Restricts the property to a specific set of string values (e.g., ["urgent", "high", "low"] ). Only for reference, not enforced for LLM or verified. Only the description is passed to the LLM models. |
items | object (only for arrays) | For type: "array" , describes the expected type of each element. This can itself be a nested structure (e.g., { "type": "object", "properties": ... } ). |
properties | object (only for objects) | For type: "object" , defines the keys and associated types within the nested object (a deeper PropertiesTable). |
required | array of strings (optional) | If present, lists which fields are mandatory in a nested object. This is usually specified at a higher level, but sometimes included in property definitions. |
nullable | boolean (optional) | If true , indicates the property can be null . Only for reference, not enforced, passed to LLMs, or used in execution. |
Field | Type | Description |
---|---|---|
name | string | The table’s name. |
definition | string | The SQL statement to create or define the table. |
Field | Type | Description |
---|---|---|
name | string | A short name or identifier for the query. |
query | string | The SQL query or statement itself. |
Field | Type | Description |
---|---|---|
name | string | Custom name of the OAuth service (e.g., “Github”, “Gmail”, etc.). |
version | ”2.0” | OAuth version. |
authorizationUrl | string | The URL the user is redirected to for authorization. |
redirectUrl | string | The callback/redirect URL after user grants authorization. |
tokenUrl | string | The URL where the tool exchanges the code for an access token. |
clientId | string | OAuth client ID. |
clientSecret | string | OAuth client Secret. |
scopes | string[] | List of permission scopes requested. |
responseType | ”code” | Type of an authorization code. |
refreshToken | ”true” (optional) | If the refresh token is requested, if the service returns or uses one. |
pkceType | ”plain” or “S256” (optional) | Defines PKCE usage (if set). |
requestTokenContentType | ”application/x-www-form-urlencoded” (optional) | By default query params are used to pass data to the authorizationUrl, this option changes the mechanism. |
requestTokenAuthHeader | ”basic” (optional) | Advanced field: The scheme for token exchange (“basic”) to send Authorization: Basic base64({client-id}:{client-secret}) in the headers. |