Get Tool Usage
Immutable Catalog Entry
This descriptor comes from the active versioned Portal catalog.
- Contract tier:
agent_ready - Risk:
read - Catalog version:
leonardo-ai-2026.07.12.1 - Descriptor hash:
a94bc26ac05fb0122ac2fed42ff904b6c13b08aa51219d776531248b3e75c3f8
Use this local read-only tool after discovery to retrieve one complete lossless Leonardo descriptor by native name, canonical name, or alias. It explains required inputs, risk, confirmation, and output without executing the selected tool.
Request Body
{
"jsonrpc": "2.0",
"id": "leonardo-ai-get-tool-usage-example",
"method": "tools/call",
"params": {
"name": "leonardo-ai.get_tool_usage",
"arguments": {
"tool_name": "tool_name_example"
}
}
}
Arguments Schema
{
"type": "object",
"required": [
"tool_name"
],
"properties": {
"tool_name": {
"type": "string",
"description": "Native tool name, canonical service.tool name, or exact compatibility alias."
}
},
"additionalProperties": false
}
Output Schema
{
"type": "object",
"required": [
"ok"
],
"properties": {
"ok": {
"type": "boolean",
"description": "Whether the navigation request succeeded."
},
"data": {
"anyOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "null"
}
],
"description": "Safe navigation data when the request succeeds."
},
"error": {
"anyOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "null"
}
],
"description": "Safe structured error when ok is false."
},
"manifest": {
"anyOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "null"
}
],
"description": "Complete ToolManifest when explicitly requested."
}
},
"description": "Local Leonardo navigation result. ok=false is a semantic tool failure and must be handled as an error by the caller.",
"additionalProperties": true
}
Code Examples
- cURL
- Node.js
- Python
curl -X POST 'https://portal.madpanda3d.com/api/mcp' \
-H 'Authorization: Bearer mad_live_***' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": "leonardo-ai-get-tool-usage-example",
"method": "tools/call",
"params": {
"name": "leonardo-ai.get_tool_usage",
"arguments": {
"tool_name": "tool_name_example"
}
}
}'
const response = await fetch('https://portal.madpanda3d.com/api/mcp', {
method: 'POST',
headers: {
Authorization: 'Bearer mad_live_***',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"jsonrpc": "2.0",
"id": "leonardo-ai-get-tool-usage-example",
"method": "tools/call",
"params": {
"name": "leonardo-ai.get_tool_usage",
"arguments": {
"tool_name": "tool_name_example"
}
}
}),
});
const data = await response.json();
console.log(data);
import requests
url = 'https://portal.madpanda3d.com/api/mcp'
headers = {
'Authorization': 'Bearer mad_live_***',
'Content-Type': 'application/json',
}
payload = {
"jsonrpc": "2.0",
"id": "leonardo-ai-get-tool-usage-example",
"method": "tools/call",
"params": {
"name": "leonardo-ai.get_tool_usage",
"arguments": {
"tool_name": "tool_name_example"
}
}
}
response = requests.post(url, headers=headers, json=payload, timeout=60)
print(response.json())
Example Responses
- 200 Success
- 502 Upstream Error
{
"ok": true,
"message": "Tool leonardo-ai.get_tool_usage executed successfully.",
"note": "Response shape varies by MCP tool. Inspect live responses for exact fields."
}
{
"ok": false,
"classification": "upstream_http_error",
"message": "Upstream MCP returned a non-success status."
}