AI and feedback

Your agent reads the feedback your client pinned

Writhink runs a remote MCP server. Connect Claude Code, Cursor or any MCP-compatible client to it and your agent reads the comments your clients left, with the page, the element, the device and the screenshot attached. It can reply to the client in the thread and mark the item resolved, without you pasting anything into a chat window. This page is the reference for that server: the connection, the seven tools, the fields that come back, the authorization model and the limits. The editor-specific walkthroughs live on /for/claude-code and /for/cursor.

No credit card. Your client doesn’t need an account.

implementation-plan.md · 3 changeswrithink
[P1]Hero headline — scale it up, tighten the leading, more contrast.
[P2]The CTA fails AA contrast: darken the color.
[P3]Remove the duplicate pricing card · 2 comments merged.
→ paste into Claude · Cursor · ChatGPTCopy prompt

01

A screenshot in a chat window loses most of the feedback

The usual handoff to an agent is a picture and a sentence: "client says the header is broken on mobile". The agent does not know which URL the client was on, which element they pointed at, how wide their window was, or whether three other people said the same thing. So it asks you, or worse, it guesses.

Writhink captures all of that when the pin is placed. Every comment carries the page URL, the element anchor, the pin position, the viewport size, the device class and an automatic screenshot of the pinned spot. The MCP server hands those over as structured fields, not as prose the agent has to parse out of a paragraph.

That difference grows with how much you let the agent do on its own. A person reading "the header is broken on mobile" fills the gap from six weeks of memory of the project. A model fills it from the most common pattern it has seen, which is an average of a million other sites and not yours.

02

Connect the server

It is a remote HTTP MCP server at https://mcp.writhink.com/mcp. Nothing to install, nothing running on your machine.

  1. Step 1

    Add it to your client

    In Claude Code, one command: claude mcp add --transport http writhink https://mcp.writhink.com/mcp — in Cursor or Claude Desktop, add an MCP server with the same URL and transport HTTP. Per-client setup notes are on /mcp, and the two clients we write about in full are on /for/claude-code and /for/cursor.

  2. Step 2

    Sign in with OAuth

    The first call opens a browser window and asks you to authorize. Writhink uses OAuth 2.1, so you approve access to your own account. There is no API key to paste, no service key, and no shared secret sitting in a config file.

  3. Step 3

    Ask it what it can see

    Say "list my Writhink projects". The agent calls list_projects and comes back with your projects and how many items are still open on each. If that works, everything else works.

  4. Step 4

    Name a project and stay in it

    The feedback tools operate on one project, so the first useful sentence of a session names one: "read the open feedback on the Acme site". The agent carries that project through the rest of the session instead of asking again on every call.

03

The seven tools, and nothing else

The server registers exactly seven tools. That is the entire surface: if something is not on this list, the agent cannot do it.

ToolWhat it doesWhere it lands in the loop
list_projectsLists the projects your account can see, with the count of open feedback itemsStart of a session, to find the project
get_feedbackReads the comments: text, page URL, pinned element, device, viewport, screenshot URL, status, threadThe read your agent works from
get_share_linkReturns the review link for a project, ready to sendWhen someone needs the link
set_feedback_statusMoves an item between open, in progress, in review and resolvedAfter the change is made
reply_to_feedbackPosts a reply the client sees in the public threadTelling the client what you did, or asking what they meant
create_projectCreates a project from a URL, so a review link existsSetting up a new client site
setup_widgetSets up the embeddable feedback widget for a sitePutting the always-on widget on a site you run

This is the whole surface. Per-client setup commands are on /mcp; the editor walkthroughs are on /for/claude-code and /for/cursor.

04

What comes back with one feedback item

get_feedback returns fields, not a paragraph the agent has to interpret. This is the list, so you know what your agent is working from and what it is not.

  • The comment text exactly as the client typed it, with the display name they gave themselves. They needed no account to leave it.
  • The page URL the pin was placed on, which is what lets an agent group twenty items by route without guessing.
  • The element the pin is attached to, and the pin's position inside it. This is the field that turns "this button" into something you can search the repo for.
  • The viewport size, and the device class: desktop, tablet or mobile. Writhink does not record the operating system, the browser or the handset model, so nothing will ever come back saying iOS or Safari — you get a width and a class, which is what a breakpoint bug is actually about.
  • A screenshot of the pinned spot, as a URL your agent can fetch or hand to you.
  • The current status: open, in progress, in review or resolved.
  • The public thread on the item, including your replies and the client's, so "we already discussed this" is checkable rather than remembered.

05

The loop, end to end

This is what a working session looks like when the agent drives it.

  1. Step 1

    Read the open items

    get_feedback on the project returns every item with its page, element and screenshot. The agent can group by screen itself, because the page URL is a field and not a sentence.

  2. Step 2

    Change the code

    Your agent works in your repo as usual. The pin metadata narrows the search: the URL points at the route, the element anchor points at the component.

  3. Step 3

    Reply to the client

    reply_to_feedback posts into the same thread the client commented in. They read it on the review link, with no account and no login.

  4. Step 4

    Close the item

    set_feedback_status moves it to resolved, or to in review if you want the client to confirm before it is closed.

  5. Step 5

    Run it again

    Because status is a field the agent both reads and writes, the second pass only picks up what is still open. Nobody re-reads a Slack thread to work out what got done.

06

How authorization works

Worth reading twice, since you are handing an agent access to client data.

  • OAuth 2.1. The agent authenticates as you and holds a token issued to your account. It has no identity of its own.
  • No service key, no shared secret, no long-lived API key in a dotfile. There is nothing to leak from a config file, and nothing to rotate when someone leaves the team.
  • Row-level security in the database is the authorization boundary, not the MCP layer. The agent gets exactly the rows your account can read, under the same rules the web app runs on.
  • There is no "read everything" scope to grant by mistake. A query that would cross into another organization returns nothing, because the database refuses it before the server sees a result.
  • Revoke the authorization from your Writhink profile and the access ends there. Nothing else about your account changes.
  • The approval step happens in a browser, once per client and machine. A box with no browser is awkward to set up on purpose: there is no key you could paste in instead.

07

What the server will not do

  • One organization at a time. The agent sees only your currently active organization, so switch it in the Writhink dashboard before you start. Otherwise it reports an empty list without knowing there is another organization sitting behind it, and no tool lets it switch for you. This is the one real gotcha in the whole setup.
  • The server exposes tools, not events. Nothing pushes a new comment to your agent; it reads when you ask. Email digests are still what tells a human that something arrived.
  • It reads feedback, not your codebase. Writhink has no access to your repository, your deploys or your hosting, and takes no part in the edit your agent makes.
  • Seven tools is seven tools. There is nothing for deleting projects, managing teammates or billing.
  • No native connector to Jira, Linear, GitHub, Slack or anything else — none of them exist, in either direction. An agent that can already file an issue can write one from what it read here, and that is the whole of it.

08

When it does not answer the way you expect

An empty project list almost always means one of two things: the active organization is not the one you meant, or you approved the browser prompt while signed in as a different account. Both are fixed in the dashboard, then re-run the same question.

A call that suddenly needs authorizing again is normal — tokens do not live forever. Every client has its own way back in: Claude Code has /mcp, Cursor reopens the browser tab on the next call. Nothing is stored on our side that you need to clean up first.

If you want to know whether the problem is you or us before you start digging, mcp.writhink.com/status checks the server's own dependencies and answers in one request. It is the same check our monitoring runs.

09

Connect over MCP, or paste the prompt

Connect over MCP

  • You work in Claude Code, Cursor or Claude Desktop.
  • You want the agent to read the feedback itself, with the pin metadata intact.
  • You want replies and statuses updated from the same session, without opening the dashboard.
  • You are doing several rounds on one project and want the next pass to skip what is done.

Paste the generated prompt

  • You build in Lovable, Bolt, v0, Replit or another chat-box builder with no MCP client.
  • You want one clean brief for a batch of changes rather than a live connection.
  • Writhink writes it: grouped by page and element, screenshots linked, priorities set, ambiguous items flagged. See /feedback-to-prompt.
  • You paste it, the builder works, you come back and move the statuses by hand.

Before you count on it

Writhink is in open beta: everything described here is available and free, no credit card. Paid plans are announced but not purchasable yet. The one limit that applies today is five AI prompt generations a month per organization.

FAQ

Questions people actually ask

Which AI clients can connect to the Writhink MCP server?
Any MCP-compatible client that supports remote HTTP servers. Claude Code, Claude Desktop and Cursor are the ones we use daily. There is no plugin on either side: the client points at https://mcp.writhink.com/mcp and authenticates over OAuth.
Does the agent need its own Writhink account?
No. It authenticates as you and sees exactly what you would see in the dashboard. There is no bot user to create and no service key to provision, which also means there is no credential to rotate when someone leaves.
Can the agent read another client's projects by mistake?
No. Row-level security in the database decides what every query returns, per account, whatever tool asked. The MCP layer is not what stops a cross-organization read; the database is, before any result exists.
Can I connect it from a server or a CI job?
Authorization runs through a browser once, so a headless machine is awkward. That is a consequence of the design rather than an oversight: there is no service key to drop into an environment variable, which is also why there is no credential sitting in your CI config waiting to be read.
Does the server see my repository?
No. It is remote and exchanges feedback data only. Your coding agent reads your code on your machine as it always has, and nothing from the repo reaches Writhink through this connection.
Do I still need the review link or the Chrome extension?
Yes. MCP is how feedback gets out, not how it gets in. Clients comment through a shared review link, through the Chrome extension when the page is behind a login or on a dev server, or through the embeddable widget. The extension is Chrome only; there is no Firefox, Safari or Edge build. The MCP server is the read side of all three.

Start

Send one link. Get feedback you can build from.

Your clients comment right on the page — no account, no screenshots, no voice notes. Writhink sorts the comments and writes the prompt for your AI.