MCP server
Coding agents read and answer review comments through this server. The plugin sets it up for Claude Code and Codex. Use this page to connect without it.
Server URL: https://mcp.gutternote.com/mcp
Connect
Use the plugin or a manual setup, not both. The plugin already adds a server
named gutternote.
Claude Code
claude mcp add --transport http gutternote https://mcp.gutternote.com/mcpThen run /mcp in Claude Code and choose gutternote. Your browser opens the
approval page.
Codex
codex mcp add gutternote --url https://mcp.gutternote.com/mcpCodex opens the approval page. Codex may not show MCP prompts. Call the tools directly, or use the plugin, whose skills carry the same steps.
Another client
The client must support the MCP browser authorization flow:
- OAuth metadata:
https://mcp.gutternote.com/.well-known/oauth-authorization-server - Client registration: dynamic registration or a client ID metadata document
- PKCE with
S256is required
A client that needs a static token cannot connect.
Approve
The approval page shows the client’s name and where your browser returns. Check both. Sign in, choose the workspace and projects, then select Approve connection.
| Token | Lifetime |
|---|---|
| Access token | 1 hour. The client refreshes it. |
| Refresh token | 30 days since last use. After that, approve again. |
Access is checked on every call. To end a connection, use the client’s sign-out or the project’s Install page.
Tools
Start with list_projects. Pass the chosen projectId on every call.
| Tool | What it does |
|---|---|
list_projects | Lists the projects this connection may use, with id, name and workflow. |
list_threads | Lists threads waiting for an agent. Pass branch and pr to see only your work’s threads. |
wait_for_threads | Waits for a new comment, reply or reopen, and returns an empty list when the wait runs out. Pass since from the last call. |
get_thread | Reads one thread: text, replies, page, element and screenshots. |
acknowledge_thread | Tells the reviewer an agent is on it. |
reply_to_thread | Replies in the thread. Set waitingOnReviewer to ask a question and wait. |
resolve_thread | Resolves with a summary, commit and changed files. |
reopen_thread | Reopens a thread whose fix did not hold. |
get_widget_setup | Returns the project key, script tag, allowed sites and install state. |
add_allowed_origin | Proposes one exact origin. Returns a link for an owner to confirm. Saves nothing. |
Replies, summaries and reasons are public. A guest may read them.
Each call has a time limit. A call still
running at the limit stops with TOOL_TIMEOUT.
Wait a few seconds, then call it again, with the same clientEventId for a
write.
Prompts
| Prompt | Arguments | What it does |
|---|---|---|
work_threads | projectId (optional) | Works the project’s comments. Without projectId, it starts with project discovery. |
work_thread | threadId (required) | Works one thread. |
set_up_widget | none | Installs the widget on the site, including its CSP. |
A prompt does not select a project for later calls.
Workflow
list_projects returns a workflow for each project:
threads: use the tools above.unavailable: stop. Comment delivery is not on for this project.batches: a private pilot. See Local delivery pilot.
Errors are in Errors. The full loop is in Resolve feedback with your agent.