The Comma MCP server
One scoped token. The agent ships the report, anchors comments, and replies to reviewers — under your control.
Comma exposes a Model Context Protocol server (Streamable HTTP transport) at https://commareports.com/api/mcp. It is the same surface as the REST API, exposed as typed tools so an agent in Claude Code, Cursor, or VS Code can collaborate on reports the way a human teammate would.
What an agent can do over MCP
Connect once. The agent gets:
| Tool | What it does |
|---|---|
create_report |
Publish a new HTML report to your workspace |
update_report |
Replace the report's HTML with a new revision |
get_report / read_report |
Fetch an existing report's content and metadata |
list_reports / search_reports |
Find reports by name, owner, or search term |
add_comment |
Pin an anchored comment on a paragraph or table cell |
reply_to_comment |
Continue an existing thread |
set_comment_status |
Mark a thread resolved or reopened |
list_comments |
Read what reviewers have said |
request_review |
Notify named reviewers that the report is ready |
upload_report_asset / list_report_assets / delete_report_asset |
Manage attached images and assets |
The shape is deliberately narrow. The MCP server exposes the report and comment primitives — the same things a human collaborator would use the UI for. It does not pretend to be a general AWS console or a code-execution sandbox.
Why MCP and not just an API
The REST API at /api/v1/* does the same things. MCP adds three properties
that matter for an agent:
- Typed tools instead of OpenAPI docs. The agent reads a small,
purpose-built tool list and doesn't have to parse a full REST schema to
know what a
create_reportcall expects. - One install line. Attaching Comma to an editor is a single command, not a code change to the agent's prompt. The agent picks up the tools without modification.
- One credential model. The same
comma_sk_…token gates the REST API, the MCP server, and any routine that token created. Revoke once and the agent loses every surface in one motion.
One token, one revoke
Comma's auth model is intentionally narrow:
- REST API (
/api/v1/*) —Authorization: Bearer comma_sk_… - MCP server (
/api/mcp) — sameBearer comma_sk_…, same scopes - Routines — execute under the token that created them
If the token leaks — laptop lost, repo accidentally public, employee leaves — you revoke it once and the agent loses the REST API, the MCP server, and its routines simultaneously. There is no second credential to chase.
Tokens are scoped (which reports they can touch), revocable (one click in Settings → API tokens), and rate-limited per token.
How agents fit a Comma workflow
Anchored comments are the load-bearing primitive. Once the agent and the humans share a comment layer, the loop closes:
- Agent posts a report.
create_reportlands HTML as a new artifact in the workspace. - Reviewers open the link. Same link-first sharing the rest of Comma uses. Reviewers leave anchored comments via the UI.
- Agent reads the comments.
list_commentspulls back the thread, including the selected text the comment is anchored to. - Agent replies or adjusts. Either
reply_to_commenton the thread, orupdate_reportto ship a new revision that addresses the feedback. - Reviewers resolve.
set_comment_statusif the agent wants to mark a thread closed.
Every action is recorded under the token. Revision history is intact. The human and the agent see the same surface.
Pairing MCP with routines
The MCP server is the on-demand surface — an agent acts in response to a human prompt. Routines are the scheduled surface — Comma re-runs an underlying skill on a cron and posts the HTML as a new revision without anyone asking.
You can pair them. A routine fires daily and posts the new revision. A
human reviewer leaves an anchored comment. The next time the agent runs
(either via routine or directly), it reads the comment via list_comments
and adjusts.
Today, creating a routine itself happens through the REST API or the
Claude Code plugin's /comma-routine slash command rather than through an
MCP tool. The routine's runs interact with the same report and comment
surface the MCP server exposes.
See Routines →.
Editor integrations
The MCP server speaks the standard Model Context Protocol. Any client that supports MCP can connect.
- Use Comma with Claude Code —
commaplugin with slash commands (/comma-publish,/comma-search,/comma-routine,/comma-link) plus MCP attachment in one install. - Use Comma with Cursor — direct MCP server configuration in Cursor's settings.
- VS Code — works with any VS Code extension that supports MCP servers.
The fastest install is the one-liner:
curl -fsSL https://commareports.com/install.sh | sh
(Windows: iwr https://commareports.com/install.ps1 -useb | iex.)
The deliberate scope
What MCP on Comma is for:
- Publishing HTML reports from an agent's run.
- Reading and replying to anchored comments.
- Searching the workspace for a relevant report.
- Uploading attached assets.
What it is not for:
- Executing arbitrary code on Comma's infrastructure.
- Running queries against your warehouse — the skill does that on its own.
- Replacing your editor's existing tools — Comma is one collaborator among many.
- Posting to surfaces Comma doesn't own (Slack, email, GitHub).
The sharp scope is the point. Comma is a measuring instrument for HTML reports; the MCP server is that instrument exposed as agent tools.
Try it
The fastest test is a one-liner from a Claude Code or Cursor session — ask the agent to publish a Markdown-to-HTML report you have lying around, then leave an anchored comment on it from the web UI and ask the agent what it sees.