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

  1. Maya opens your staging site, clicks the annual plan button, and writes: “Make it clear this is billed annually.”
  2. You tell Cursor: “Fix the open pinthread comments on /pricing.”
  3. Cursor calls list_threads with the page filter, then get_thread. It receives the page /pricing, the selector, the text “Choose plan”, and Maya’s words.
  4. Cursor edits the component that renders the button and checks the change.
  5. With a write token it calls reply_thread (“Label now reads Choose annual plan; monthly price stays visible”) and resolve_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_threads lists threads. Filter by status, page, assignee, priority or label.
  • get_thread reads one thread with every comment.
  • get_page_context returns the open threads on one page.
  • list_events returns new threads and replies after a cursor. Start with since: "latest".
  • reply_thread and resolve_thread need 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_TOKEN is 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 that PINTHREAD_TOKEN is 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/mcp in a browser or sending GET returns this. It is not a fault in your setup.
A write tool fails
reply_thread, resolve_thread and the other write tools need a write token. Call whoami to read the scope of the connection.
The list is empty
Threads are per project and per page. Call whoami to confirm the project, and list_threads with status all to 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