POSTPro+
/mcp/{model_id}

MCP Tool Call

The MCP HTTP transport. A single JSON-RPC 2.0 endpoint that dispatches to all of Metapad's MCP tools (get_metamodel, search_nodes, create_nodes, etc.) — set 'method' to the JSON-RPC method ('tools/call', 'tools/list', 'initialize', 'ping') and put the tool name + arguments in 'params'. This is the same endpoint that Claude Desktop, Claude Code, and other MCP clients connect to — use it directly from scripts and CI when no interactive OAuth login is possible. Distinct from the REST API v1 endpoints under /api/v1/..., which expose individual resources as conventional REST.

AuthenticationBearer mpt_... or OAuth JWT
Plan RequirementPro+

Parameters

NameTypeRequiredDefaultDescription
model_idString (UUID)[MCP Tool Call] UUID of the model the call operates on. Path parameter — the API token must have access to this model.
jsonrpcString"2.0"[MCP Tool Call] JSON-RPC protocol version. Must be the string "2.0". Body field.
paramsObject[MCP Tool Call] Method parameters. For 'tools/call' this is {"name": "<tool>", "arguments": {...}} where 'name' selects an APITool and 'arguments' contains its inputs. For 'tools/list' / 'initialize' / 'ping' an empty object is fine. Body field.
model_idString (UUID)[MCP Tool Call] UUID of the model the call operates on. Path parameter — the API token must have access to this model.
jsonrpcString"2.0"[MCP Tool Call] JSON-RPC protocol version. Must be the string "2.0". Body field.
idNumber | String[MCP Tool Call] Client-chosen request ID echoed in the response. Number or string. Body field. Omit for notifications (e.g. notifications/initialized).
methodString[MCP Tool Call] JSON-RPC method to invoke. Supported: 'initialize', 'ping', 'tools/list', 'tools/call', 'resources/list', 'resources/templates/list', 'notifications/initialized'. Most scripts only need 'tools/call'. Body field.
paramsObject[MCP Tool Call] Method parameters. For 'tools/call' this is {"name": "<tool>", "arguments": {...}} where 'name' selects an APITool and 'arguments' contains its inputs. For 'tools/list' / 'initialize' / 'ping' an empty object is fine. Body field.

Example Response

{"jsonrpc": "2.0", "id": 1, "result": {"content": [{"type": "text", "text": "{\"total_count\": 3, \"returned_count\": 3, \"nodes\": [...]}"}]}}

// Errors use JSON-RPC error envelope:
{"jsonrpc": "2.0", "id": 1, "error": {"code": -32602, "message": "Invalid tool call params: ..."}}

// 401 Unauthorized responses include a WWW-Authenticate header for OAuth discovery (RFC 9728).