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

# Model Context Protocol endpoint (Streamable HTTP)

`POST /mcp`

## Request

- Base URL: `https://api.pressa.dev`
- URL: `https://api.pressa.dev/mcp`
- Auth: one of:
  - none
  - HTTP bearer

JSON-RPC 2.0 over HTTP. Stateless: no initialize handshake is required and no session header is used, though `initialize` is still answered for clients on older protocol revisions. Tool visibility depends on credentials: with no Authorization header only the tools that work without an account are advertised: `compile` and the public template gallery (`list_public_templates`, `get_public_template`, `render_public_template`). With a header present the full set is advertised (the keyless tools plus render, usage, list/get/save/delete_template, list/get/save/delete_asset). Visibility keys off the header being PRESENT, not valid, so a mistyped key surfaces as a clear 401 from the tool rather than as missing features.

Connect with: claude mcp add --transport http pressa https://api.pressa.dev/mcp

Authentication is optional and handled by the compile action underneath: no credentials selects the anonymous tier, an invalid key returns an error inside the tool result.

Supported methods: initialize, server/discover, tools/list, tools/call, ping, resources/list, prompts/list.

## Request body

- object: A JSON-RPC 2.0 request object, or an array of them for a batch.

## Response `200`

A JSON-RPC response. Tool failures are reported inside `result` with `isError: true` and the compile error body in `structuredContent`, not as a JSON-RPC error.

## Other responses

- `202`: The request contained only notifications, which carry no id and get no reply.

---

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