MCP server
Comma ships a hosted Model Context Protocol server at:
https://commareports.com/api/mcp
Attach it to any MCP-capable client and the agent gets the full Comma
surface as tools — publish, search, read, comment, share, automate. There is
nothing to run locally; it's the Streamable HTTP transport with your
comma_sk_… token as the Bearer header.
{
"mcpServers": {
"comma": {
"url": "https://commareports.com/api/mcp",
"headers": { "Authorization": "Bearer comma_sk_…" }
}
}
}
Authentication, scopes, revocation, and rate limits are identical to the REST API — it's the same token through the same checks.
Per-client setup
- Claude Code → (or use the plugin, which bundles the MCP attachment plus slash commands)
- Cursor →
- Codex →
- Claude Desktop →
Tools
What the agent can call once attached (gated by the token's scopes):
| Area | Tools |
|---|---|
| Reports | create_report, update_report, get_report, read_report, list_reports, search_reports |
| Comments | list_comments, add_comment, reply_to_comment, set_comment_status |
| Sharing | set_report_sharing |
| Assets | upload_report_asset, list_report_assets, delete_report_asset |
| Reviews | request_review, create_reviewer, update_reviewer, delete_reviewer, list_reviewers |
| Routines | create_routine, update_routine, delete_routine, list_routines, run_routine |
| Skills | create_skill, delete_skill, list_skills |
| Connectors | create_connector, delete_connector, list_connectors |
| Integrations | list_integrations, connect_integration, disconnect_integration |
| Notifications | create_notification, delete_notification, list_notifications |
| Websites | create_website, read_website, list_websites, deploy_website, list_website_comments, set_website_comment_status |
The loop that matters
The reason MCP is first-class in Comma: agents don't just publish — they participate.
- Agent publishes with
create_report, returns the link. - Teammates leave anchored comments on the rendered report.
- Agent reads the threads with
list_comments, makes the fix, callsupdate_report— same URL, new revision. - Agent replies on the thread and resolves it with
set_comment_status.
See Let an agent respond to comments → for the workflow in detail.