REST API and MCP server
Everything your visitors report is available outside the web app: as a small REST API for your own scripts and integrations, and as an MCP server that AI coding agents — Claude Code, Cursor, Copilot, Codex — connect to directly. Both use the same API keys and the same data.
API keys
Keys are created in the web app under Account → API keys. Give the key a name and choose what it may see: all projects of your account, including ones you create later, or only selected projects. The key is shown once — copy it right away; the app keeps only a hash. A key can be revoked at any moment; agents and scripts that used it stop working immediately.
Send the key with every request:
Authorization: Bearer rm_…
A key reads and changes only the reports of the projects it was given. It cannot create projects, change widget settings or delete anything.
REST endpoints
Base URL: https://api.revisionme.com. Responses are JSON; errors come as {"error": "…"} with the usual status codes (401 bad key, 404 not found or not allowed, 400 bad input).
| Request | What it returns |
|---|---|
GET /v1/projects | The projects the key may see: {projects: [{id, name, website}]}. |
GET /v1/issues | Reports, newest first: {total, issues: […]}. Query: project (id), status — open (default), resolved, rejected or all, limit (default 50, max 200). |
GET /v1/issues/:id | One report with all fields plus markdown — the same brief for an AI agent as the Copy for AI agent button produces. |
GET /v1/issues/:id/screenshot | Redirects (302) to the PNG screenshot. |
PATCH /v1/issues/:id | Body {"status": "resolved"} and/or {"important": true}. Returns the updated report. |
An example with curl:
curl https://api.revisionme.com/v1/issues?status=open \
-H "Authorization: Bearer rm_…"
curl -X PATCH https://api.revisionme.com/v1/issues/-OabC123 \
-H "Authorization: Bearer rm_…" -H "Content-Type: application/json" \
-d '{"status": "resolved"}'
The issue object
{
"id": "-OabC123",
"projectId": "-Nxyz",
"status": "open", // open | resolved | rejected
"important": false,
"date": "2026-10-09T12:40:00.000Z",
"url": "https://example.com/pricing",
"author": { "email": "anna@example.com", "id": null },
"selectedText": "Start you free trial",
"context": "…sentence around the selection…",
"comment": "Typo: should be \"your\"",
"area": { "x": 20, "y": 1300, "w": 335, "h": 48 }, // null for a text report
"viewport": { "width": 390, "height": 844, "scrollX": 0, "scrollY": 1180 },
"browser": { "name": "Mobile Safari", "version": "18" },
"os": { "name": "iOS", "version": "18" },
"language": "en-US",
"screenshotUrl": "https://…/snapshots/…png",
"shareUrl": "https://revisionme.com/app/#/share/-OabC123",
"markdown": "## Visual feedback on the site (Revisionme)\n…" // GET /v1/issues/:id only
}
MCP server
MCP is how AI coding agents talk to outside tools. The Revisionme server lives at https://api.revisionme.com/mcp (Streamable HTTP, no sessions) and needs the same Authorization header. Nothing to install.
Claude Code — one command in the project folder of your site:
claude mcp add --transport http revisionme https://api.revisionme.com/mcp \
--header "Authorization: Bearer rm_…"
Cursor, Windsurf, VS Code, Codex and others — the usual mcp.json (project or user level):
{
"mcpServers": {
"revisionme": {
"url": "https://api.revisionme.com/mcp",
"headers": { "Authorization": "Bearer rm_…" }
}
}
}
The agent gets four tools:
list_projects— the projects the key may see;list_issues— reports, by default the open ones (project,status,limit);get_issue— one report: the Markdown brief, all fields and the screenshot as an image, so the agent sees what the visitor saw;update_issue—resolvedafter fixing,rejectedwhen nothing should be done,opento reopen; theimportantflag.
Then just ask: “Take the open reports from Revisionme, fix them one by one and mark each resolved.” The server also carries short instructions, so the agent knows the flow without you explaining it. When a visitor's comment is unclear, a well-behaved agent says so instead of guessing — the reports come from real people.
Instructions for your agent
The MCP server tells the agent how to use its tools, but the agent still needs to know what Revisionme is in your project and when to look at the reports. The Copy instructions for your agent button under Account → API keys puts this text on the clipboard; paste it into the agent chat once, or keep it in CLAUDE.md, AGENTS.md or .cursorrules so every session knows:
## Revisionme: visual feedback from the visitors of this site
The website of this project has the Revisionme widget. Visitors, clients and testers
mark problems right on the live page. Every report has the page URL, the text the
visitor selected or the area they marked, their comment, the viewport and browser,
and a screenshot.
The reports are available through the Revisionme MCP server (tools: list_projects,
list_issues, get_issue, update_issue). If it is not connected yet, ask me for an API
key (Revisionme → Account → API keys) and add the server. Claude Code:
claude mcp add --transport http revisionme https://api.revisionme.com/mcp \
--header "Authorization: Bearer <key>"
Other clients (Cursor, Windsurf, VS Code, Codex): an entry in mcp.json with
"url": "https://api.revisionme.com/mcp" and the same Authorization header.
How to work with the reports:
- When I ask you to check the feedback, or before you start working on the site,
call list_issues (open reports) and tell me what is new.
- For each report you take on: get_issue, read the brief and look at the screenshot,
find the place in the source code (search for the selected text, use the URL for
the route) and fix it.
- After the fix, call update_issue with status "resolved". If a report needs no
change (duplicate, not a bug, cannot reproduce), tell me instead of marking it
rejected, unless I say otherwise.
- Reports are written by real people: when a comment is unclear, ask me rather
than guess.
- Never print the API key or write it into files other than the MCP configuration.
Edit it to your taste — for example, let the agent reject reports itself, or ask it to check the feedback at the start of every session.
The web app's own Copy for AI agent button stays for the one-off case: a single report pasted into any chat, no key needed.
Limits and what is next
There are no formal rate limits today; be reasonable (an agent polling every few seconds is not). Keys belong to one account; team access is on the roadmap, as are webhooks (a POST to your URL for every new report) and a CLI that writes reports as files into your repository. Questions and requests: hello@revisionme.com.