---
title: "MCP endpoint (Streamable HTTP)"
method: POST
path: "/mcp"
tags: ["MCP"]
---

# MCP endpoint (Streamable HTTP)

`POST /mcp`

## Request

- Base URL: `https://api.opentools.com`
- URL: `https://api.opentools.com/mcp`
- Auth: HTTP bearer

One JSON-RPC 2.0 message in, one JSON answer out: `initialize`, `ping`, `tools/list` and `tools/call`. Notifications (`notifications/initialized`) get `202` with no body. Stateless: no session id is issued, and `GET` or `DELETE` answer `405`. Configure an MCP client with this URL and the `Authorization` header rather than calling it by hand.

## Request body

- JsonRpcRequest
  - `jsonrpc` '2.0', required
  - `id` union: Absent for a notification.
    - string
    - integer
  - `method` 'initialize' | 'notifications/initialized' | 'ping' | 'tools/list' | 'tools/call', required
  - `params` object

## Response `200`

The JSON-RPC response.

- JsonRpcResponse
  - `jsonrpc` '2.0', required
  - `id` union, required
    - string
    - integer
  - `result` object
  - `error` object
    - `code` integer, required
    - `message` string, required

## Other responses

- `202`: The message was a notification; nothing to answer.
- `400`: The body is not a JSON-RPC message.
- `401`: The `Authorization` header is missing, or its key is unknown or revoked.
- `429`: The key made more than 600 requests this minute.
- `503`: The key or the site couldn't be checked just now. Nothing is wrong with the request; retry it shortly.

---

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