---
title: "Call an MCP tool"
method: POST
path: "/v1/mcp/tools/call"
tags: ["MCP"]
---

# Call an MCP tool

`POST /v1/mcp/tools/call`

## Request

- Base URL: `https://statusstack.com/api`
- URL: `https://statusstack.com/api/v1/mcp/tools/call`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

REST convenience for the JSON-RPC `tools/call` method.

## Request body

- object
  - `name` string, required: Tool name, as returned by `GET /v1/mcp/tools`.
  - `arguments` object

## Response `200`

The `tools/call` result. A tool that ran and failed still answers 200: its result
carries `isError: true` and the failure text in `content`, per the MCP specification.

- McpData
  - `data` object, required: The `result` of the equivalent JSON-RPC call.

## Other responses

- `400`: `name` is missing
- `401`: Missing or invalid MCP credentials.
- `403`: The connection's organization has no paid plan with API access. JSON-RPC error code `-32002`, with `data.reason` = `subscription_required` and `data.upgrade_url`.
- `422`: The call was refused before the tool ran (unknown tool, or no access to it); `error` carries the reason
- `429`: Rate limit exceeded. Each MCP connection may make `ai.mcp.rate_limit_per_minute` requests per minute (60 by default) across all authenticated MCP endpoints combined, answered with JSON-RPC error `-32000`. The route additionally caps each caller at 120 requests per minute, answered with a plain `{message}` body.

---

[API](https://skmtc.dev/statusstack/apis/statusstack-api.md) - [All operations](https://skmtc.dev/statusstack/apis/statusstack-api/llms.txt) - [OpenAPI document](https://skmtc.dev/statusstack/apis/statusstack-api/revisions/a5fabf6ac5e4?raw)
