Review a page and let Cursor fix it.
Collect website feedback for Cursor on your running site. Cursor reads each pinned comment over MCP with the element and conversation, edits your code, and replies in the thread.
What you need
- A site with the pinthread script tag. Sign up free and the install guide take a few minutes.
- An agent token from Agent access in the dashboard. Store it as
PINTHREAD_TOKEN, never in your repository. - Cursor with access to your repository.
<script src="https://pinthread.dev/embed.js"
data-project="YOUR_PROJECT_KEY" defer></script>Connect Cursor
The server is https://pinthread.dev/mcp. The token decides which project Cursor sees.
{
"mcpServers": {
"pinthread": {
"url": "https://pinthread.dev/mcp",
"headers": { "Authorization": "Bearer ${env:PINTHREAD_TOKEN}" }
}
}
}Save it as .cursor/mcp.json in your project.
For every project, save the same JSON as ~/.cursor/mcp.json instead.
Checked on 10 October 2026. Source: Cursor MCP documentation. The server side (a POST-only streamable HTTP endpoint with a bearer token) is described on the MCP server page.
Tell it how to work
Paste this into your Agent chat, or keep it in your project instructions:
When I mention pinthread comments, use the pinthread MCP tools. List the open threads, read each one with get_thread, then make the change and check it. Reply with what you changed. Resolve a thread only when you are confident the fix is complete. If a comment is a question or needs a decision, reply and leave it open.Or paste this prompt in a session:
Fix the open pinthread comments on /pricing. List the threads, read each one with get_thread, change the code, and check the change. Reply in each thread with what you changed. Resolve a thread only when the fix is complete. If a comment is a question, reply and leave it open.How it works, step by step
- Maya opens your staging site, clicks the annual plan button, and writes: “Make it clear this is billed annually.”
- You tell Cursor: “Fix the open pinthread comments on /pricing.”
- Cursor calls
list_threadswith the page filter, thenget_thread. It receives the page/pricing, the selector, the text “Choose plan”, and Maya’s words. - Cursor edits the component that renders the button and checks the change.
- With a write token it calls
reply_thread(“Label now reads Choose annual plan; monthly price stays visible”) andresolve_thread. With a read token it reports the change to you and you resolve the thread in the sidebar.
How Cursor reads and replies
pinthread exposes tools only. Cursor uses these:
list_threadslists threads. Filter by status, page, assignee, priority or label.get_threadreads one thread with every comment.get_page_contextreturns the open threads on one page.list_eventsreturns new threads and replies after a cursor. Start withsince: "latest".reply_threadandresolve_threadneed a write token.
The tool table lists all 12 tools.
Check the connection
Open Cursor Settings and look for pinthread in the MCP section. It should list its tools. In Agent chat, ask Cursor to call whoami. It returns the project, token name and scope.
Troubleshooting
- pinthread shows no tools in Cursor Settings
- Check the JSON for syntax errors, and that
PINTHREAD_TOKENis set in the environment Cursor started from. Restart Cursor after you set the variable. - HTTP 401: An agent token is required.
- The request had no valid
ptk_token. Check thatPINTHREAD_TOKENis set in the environment that starts Cursor, and that the token is not revoked or expired. Tokens expire after 90 days by default. - HTTP 405: Send MCP messages with POST.
- The endpoint accepts only POST. Opening
https://pinthread.dev/mcpin a browser or sending GET returns this. It is not a fault in your setup. - A write tool fails
reply_thread,resolve_threadand the other write tools need a write token. Callwhoamito read the scope of the connection.- The list is empty
- Threads are per project and per page. Call
whoamito confirm the project, andlist_threadswith statusallto see resolved threads too.
Questions
Does Cursor need a plugin or extension for pinthread?
No. Cursor connects to the pinthread MCP server over HTTP with an agent token. Your site only needs the pinthread script tag.
Can Cursor resolve threads on its own?
Only with a write token. A read token lists and reads threads and lets Cursor propose fixes. Create the token in Agent access in the dashboard.
Do I put the token in mcp.json?
No. The file reads it from the environment with ${env:PINTHREAD_TOKEN}, so you can commit the file.
Try it
Start on the free plan, or read the general agent workflow. Pinthread carries the feedback. Cursor edits your code.
Guides for other agents
- pinthread for Claude CodeAdd the server with one claude mcp add command.
- pinthread for CodexAdd the server in config.toml or with codex mcp add.
- Agent workflowThe loop from comment to fix, for any agent.
- MCP serverTools, tokens and scopes.
- For your agentToken, setup and the prompt to paste.
- InstallOne script tag for your site.