---
title: "Hosted MCP endpoint (JSON-RPC 2.0 / Streamable HTTP)"
method: POST
path: "/api/v2/mcp"
tags: ["v2 MCP"]
---

# Hosted MCP endpoint (JSON-RPC 2.0 / Streamable HTTP)

`POST /api/v2/mcp`

## Request

- Base URL: `https://pdf2md.dev`
- URL: `https://pdf2md.dev/api/v2/mcp`
- Auth: HTTP bearer

EP-023-T4 (implemented). A thin adapter over the same service layer as the v2 API. Authentication — API key (`Authorization: Bearer p2m_...`); the tools respect the key's scopes, tier limits, and ownership. JSON-RPC methods: `initialize`, `tools/list`, `tools/call`, `ping`; notifications (without id) → 202 with no body. Tools: `pdf_to_markdown_create_job_from_url`/`_from_upload` (require scope jobs:create), `_list_jobs`/`_get_job` (jobs:read), `_get_markdown` (jobs:download), `_delete_job` (jobs:delete), `_get_limits`. tools/call responses include slot_usage and tier. For MCP client setup — see docs/architecture.md (Hosted MCP).

## Request body

- object: JSON-RPC 2.0 request {jsonrpc,id,method,params}

## Response `200`

JSON-RPC response (result or error)

- object

## Other responses

- `202`: Notification accepted (no body)
- `401`: Missing/invalid API key or session

---

[API](https://skmtc.dev/pdf2md/apis/pdf-to-markdown-api-facade.md) · [All operations](https://skmtc.dev/pdf2md/apis/pdf-to-markdown-api-facade/llms.txt) · [OpenAPI document](https://skmtc.dev/pdf2md/apis/pdf-to-markdown-api-facade/revisions/4636782fb8b6?raw)
