pub struct Tool {
pub annotations: Option<ToolAnnotations>,
pub description: Option<String>,
pub input_schema: ToolInputSchema,
pub meta: Option<Map<String, Value>>,
pub name: String,
pub output_schema: Option<ToolOutputSchema>,
pub title: Option<String>,
}
Expand description
Definition for a tool the client can call.
JSON schema
{
"description": "Definition for a tool the client can call.",
"type": "object",
"required": [
"inputSchema",
"name"
],
"properties": {
"_meta": {
"description": "See [specification/2025-06-18/basic/index#general-fields] for notes on _meta usage.",
"type": "object",
"additionalProperties": {}
},
"annotations": {
"description": "Optional additional tool information.\n\nDisplay name precedence order is: title, annotations.title, then name.",
"$ref": "#/definitions/ToolAnnotations"
},
"description": {
"description": "A human-readable description of the tool.\n\nThis can be used by clients to improve the LLM's understanding of available tools. It can be thought of like a \"hint\" to the model.",
"type": "string"
},
"inputSchema": {
"description": "A JSON Schema object defining the expected parameters for the tool.",
"type": "object",
"required": [
"type"
],
"properties": {
"properties": {
"type": "object",
"additionalProperties": {
"type": "object",
"additionalProperties": true
}
},
"required": {
"type": "array",
"items": {
"type": "string"
}
},
"type": {
"type": "string",
"const": "object"
}
}
},
"name": {
"description": "Intended for programmatic or logical use, but used as a display name in past specs or fallback (if title isn't present).",
"type": "string"
},
"outputSchema": {
"description": "An optional JSON Schema object defining the structure of the tool's output returned in\nthe structuredContent field of a CallToolResult.",
"type": "object",
"required": [
"type"
],
"properties": {
"properties": {
"type": "object",
"additionalProperties": {
"type": "object",
"additionalProperties": true
}
},
"required": {
"type": "array",
"items": {
"type": "string"
}
},
"type": {
"type": "string",
"const": "object"
}
}
},
"title": {
"description": "Intended for UI and end-user contexts — optimized to be human-readable and easily understood,\neven by those unfamiliar with domain-specific terminology.\n\nIf not provided, the name should be used for display (except for Tool,\nwhere annotations.title should be given precedence over using name,\nif present).",
"type": "string"
}
}
}
Fields§
§annotations: Option<ToolAnnotations>
Optional additional tool information. Display name precedence order is: title, annotations.title, then name.
description: Option<String>
A human-readable description of the tool. This can be used by clients to improve the LLM’s understanding of available tools. It can be thought of like a “hint” to the model.
input_schema: ToolInputSchema
§meta: Option<Map<String, Value>>
See [specification/2025-06-18/basic/index#general-fields] for notes on _meta usage.
name: String
Intended for programmatic or logical use, but used as a display name in past specs or fallback (if title isn’t present).
output_schema: Option<ToolOutputSchema>
§title: Option<String>
Intended for UI and end-user contexts — optimized to be human-readable and easily understood, even by those unfamiliar with domain-specific terminology. If not provided, the name should be used for display (except for Tool, where annotations.title should be given precedence over using name, if present).