---
title: "Model Context Protocol (MCP) endpoint"
method: POST
path: "/mcp"
tags: ["mcp"]
---

# Model Context Protocol (MCP) endpoint

`POST /mcp`

JSON-RPC 2.0 endpoint implementing the [Model Context Protocol](https://modelcontextprotocol.io/).
The server is **stateless** — each request is independent, no session management.

Supported methods: `initialize`, `tools/list`, `tools/call`.

### Authentication

Three accepted sources (first one set wins):

1. URL path parameter — `POST /mcp/{token}` (see the dedicated operation below)
2. Query string — `POST /mcp?token=…`
3. `Authorization` header — `POST /mcp` (recommended)

See the **mcp** tag description for the full list of available tools, their parameters, and permission requirements.

## Request body

- JsonRpcRequest
  - `jsonrpc` '2.0', required — JSON-RPC protocol version. Must be "2.0".
  - `id` union — Request identifier. The server echoes it back in the response.
    - string
    - integer
  - `method` 'initialize' | 'tools/list' | 'tools/call', required — The JSON-RPC method to call: `initialize`, `tools/list`, or `tools/call`.
  - `params` object — Method-specific parameters. Required for `initialize` and `tools/call`, optional for `tools/list`.

## Response `200`

JSON-RPC response. On success, the `result` field contains the method output.
On application-level errors (permission denied, rate limit per tool, resource not found), the HTTP status is still `200` — the error is in the JSON-RPC `error` field.

- JsonRpcResponse
  - `jsonrpc` '2.0', required
  - `id` union — Echoed request identifier, or null for notifications.
    - string
    - integer
  - `result` object — Present on success. Content depends on the method called.
  - `error` JsonRpcError
    - `code` integer, required — JSON-RPC error code. Standard codes: -32700 (parse error), -32600 (invalid request), -32601 (method not found), -32602 (invalid params), -32603 (internal error).
    - `message` string, required — Human-readable error message.
    - `data` unknown

## Other responses

- `401` — Missing or invalid API key.
- `429` — HTTP rate limit exceeded (1 req/s per API key, burst 10).

---

[API](https://skmtc.net/ringover/apis/ringover-public-api.md) · [All operations](https://skmtc.net/ringover/apis/ringover-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/ringover/ringover-public-api/revisions/9da73dd2f99e/schema)
