---
title: "Send an MCP JSON-RPC message"
method: POST
path: "/v1/mcp/messages"
tags: ["MCP"]
---

# Send an MCP JSON-RPC message

`POST /v1/mcp/messages`

## Request

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

The MCP Streamable HTTP transport endpoint. Accepts one JSON-RPC 2.0 message; a request
(with `id`) returns its JSON-RPC response, and a notification (no `id`) returns 202 with no
body. Protocol-level failures inside a well-formed request are reported as a 200 carrying a
JSON-RPC `error`, per the JSON-RPC specification. Rate limits are described on the 429
response.

GET and DELETE answer `405 Method Not Allowed` with `Allow: POST`: this server offers no
server-initiated SSE stream and no session termination.

## Request body

- McpJsonRpcRequest
  - `jsonrpc` '2.0', required
  - `id` union: Omit to send a notification, which is acknowledged with 202 and no body.
    - string
    - integer
  - `method` string, required: Requests: `initialize`, `ping`, `tools/list`, `tools/call`, `resources/list`, `resources/read`; any other method with an `id` (including `prompts/list` — the server offers no prompts) answers JSON-RPC `-32601`. `ping` answers an empty `result` object, `{}`. Notifications (no `id`), such as `notifications/initialized`, are accepted whatever their method.
  - `params` object

## Response `200`

JSON-RPC response

- union
  - McpJsonRpcSuccessResponse
    - `jsonrpc` '2.0', required
    - `id` union, required
      - string
      - integer
    - `result` unknown, required
  - McpJsonRpcErrorResponse
    - `jsonrpc` '2.0', required
    - `id` union: The request's `id`; `null` when the request could not be read far enough to recover it. Absent on refusals made before the message is read (401, 403, 429).
      - string, nullable
      - integer
    - `error` McpJsonRpcError, required
      - `code` integer, required: JSON-RPC error code: `-32600` invalid request, `-32601` unknown method, `-32602` invalid params (missing or unknown tool name or resource URI), `-32603` internal error or access denied, `-32000` rate limited, `-32001` unauthorized, `-32002` subscription required.
      - `message` string, required
      - `data` object

## Other responses

- `202`: Notification accepted; no body
- `400`: Missing or invalid `jsonrpc` version, or missing `method` (JSON-RPC `-32600`)
- `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`.
- `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)
