MCP (read-only)
Patchrooms exposes a read-only Model Context Protocol endpoint so an AI agent (Claude, Cursor, and others) can list and read the feedback reports for a project. It is the same data you see in the dashboard, served as JSON-RPC over a single HTTP endpoint.
Endpoint
Section titled “Endpoint”POST https://room.patchrooms.com/mcpThe endpoint speaks JSON-RPC 2.0. Send method, params, and an id in the
request body; the response echoes the id.
Authentication
Section titled “Authentication”Authenticate with a secret API key (prefix pr_sk_) created in the dashboard,
sent as a Bearer token:
Authorization: Bearer pr_sk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxThe project is resolved from the key — there is no project id in the URL. The
key must carry the feedback:read scope, or the endpoint returns 403.
The server advertises two tools via tools/list.
list_reports
Section titled “list_reports”Lists feedback reports for the project, newest first, in a compact form.
| Argument | Type | Description |
|---|---|---|
status | string | Filter by report status. |
channelKey | string | Filter by channel key. |
artifactId | string | Filter by artifact id. |
limit | number | Max results. Defaults to 50, capped at 200. |
All arguments are optional.
get_report
Section titled “get_report”Returns a single report rendered as Markdown. Screenshot images are not inlined.
| Argument | Type | Description |
|---|---|---|
id | string | Report id. Required. |
Example
Section titled “Example”List the most recent reports:
curl -s https://room.patchrooms.com/mcp \ -H "Authorization: Bearer pr_sk_xxxxxxxxxxxxxxxxxxxxxxxxxxxx" \ -H "Content-Type: application/json" \ -d '{ "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "list_reports", "arguments": { "limit": 2 } } }'The result is a tool-call envelope whose text content is a JSON array of reports:
{ "jsonrpc": "2.0", "id": 1, "result": { "content": [ { "type": "text", "text": "[\n {\n \"id\": \"665f1a2b3c4d5e6f7a8b9c0d\",\n \"shortId\": \"9c0d\",\n \"title\": \"Checkout button misaligned on mobile\",\n \"status\": \"open\",\n \"channelKey\": \"bug\",\n \"url\": \"https://app.example.com/checkout\",\n \"artifactId\": null,\n \"createdAt\": \"2026-06-03T09:14:22.000Z\"\n }\n]" } ] }}Fetch one report as Markdown:
curl -s https://room.patchrooms.com/mcp \ -H "Authorization: Bearer pr_sk_xxxxxxxxxxxxxxxxxxxxxxxxxxxx" \ -H "Content-Type: application/json" \ -d '{ "jsonrpc": "2.0", "id": 2, "method": "tools/call", "params": { "name": "get_report", "arguments": { "id": "665f1a2b3c4d5e6f7a8b9c0d" } } }'The result content is the report rendered as a Markdown string. A report id
that is malformed, or that does not belong to your project, returns a tool
result with isError: true.
Protocol notes
Section titled “Protocol notes”initializereturns protocol version2024-11-05and advertises tool support.tools/listreturns the two tools above.tools/callruns a tool. An unknown tool or method returns a JSON-RPC error with code-32601.