Pinthread

Server MCP umpan balik situs web untuk agen pengkode AI. Sematkan komentar pada elemen situs nyata; agen Anda membaca dan menyelesaikannya.

Server MCP Terhosting

npx add-mcp 'https://pinthread.dev/mcp'

Terpasang ke Claude Code, Codex, Cursor, dan lainnya

Dokumentasi

A website feedback MCP server.

pinthread is a hosted MCP server for visual feedback for AI agents. Your team pins comments on the real elements of your site. Your coding agent reads them over MCP, makes the change, and replies in the thread. It is included on every plan, including Free at $0 a month.

MCP visual feedback: what your agent reads

Each thread names the exact place on the page. Your agent gets:

  • The page URL
  • The element’s selector and visible text
  • The comment position or selected area
  • Every reply, with its author
Page: /pricing
Target: #annual-plan-button
Element text: Choose plan

Maya: Make it clear this is billed annually.
Alex: Keep the monthly equivalent visible too.

01 · Create an agent token

Sign up free and create a project. Open it in the dashboard and choose Agent access. Pick a scope:

  • Read: list and read threads and new activity.
  • Write: also reply, start, resolve, and reopen threads.

Each token belongs to one project. Tokens start with ptk_ and are shown once. They expire after 90 days by default, or up to 365 days. Store the token as PINTHREAD_TOKEN, never in your repository.

02 · Connect your client

The server URL is https://pinthread.dev/mcp. It uses streamable HTTP with a bearer token.

claude mcp add --transport http pinthread https://pinthread.dev/mcp \
  --header "Authorization: Bearer $PINTHREAD_TOKEN"

Run it in your project with PINTHREAD_TOKEN set to your agent token.

Read the localhost branch

A widget on localhost writes to branch local unless configured otherwise. MCP tools default to shared. Use these calls for localhost feedback:

list_threads({ branch: "local", status: "all" })
get_thread({ thread_id: "THREAD_ID", branch: "local" })

status: "all" includes all statuses in one branch, not all branches. An empty list can include availableBranches with open counts. Pass a listed branch to read its threads.

Remote server, no local install

The pinthread MCP server is remote. We host it at https://pinthread.dev/mcp, so there is no process to start and nothing to install. Your client sends JSON-RPC messages with POST and gets JSON replies. The server exposes tools only, no resources or prompts. A GET request returns HTTP 405.

It does not use OAuth sign-in. Every request carries a static bearer token. The token belongs to one project, so the agent sees only that project's threads. Each request is limited by rate and size, and a revoked or expired token is rejected with HTTP 401.

Setup guide for each agent

Each guide has the exact config for that agent, how it reads and replies to threads, and a troubleshooting list.

Tools

Read tools work with any token. Write tools need a write token.

ToolScopeWhat it does
whoamiReadShows the project, token name, and scope of this connection.
list_threadsReadLists threads. Filter by status (unresolved, open, in_progress, needs_review, resolved, dismissed, awaiting_reviewer, all), assignee, priority, label, page, or update time.
get_threadReadReads one thread with every comment, author, and reaction, plus its attachments and any suggested text edit. Set level to compact, standard, or detailed (key attributes, component, file:line, vscode:// and cursor:// links).
get_page_contextReadReturns the open threads on one page with their anchors, attachments, and suggested edits.
get_attachmentReadReads one image or screenshot attachment by id, as an image.
list_eventsReadReads new threads and replies after a cursor, oldest first.
list_assigneesReadLists the people and agents a thread can be assigned to.
reply_threadWriteAdds a reply as the agent.
ask_threadWriteAsks a focused question on a thread and marks it as awaiting a reviewer. A reviewer reply clears the marker.
create_threadWriteStarts a thread on a page at a given anchor.
resolve_threadWriteMarks a thread resolved.
reopen_threadWriteReopens a resolved thread.
dismiss_threadWriteDismisses feedback that needs no code change. A reason is required.
mark_suggestion_appliedWriteMarks a suggested text edit as applied, adds a note, and resolves the thread.
update_threadWriteSets a thread's status, assignee, priority, labels or due date.

get_thread, list_threads, and get_page_context return an attachments list on every thread. Each item has kind (image, log, metadata, video, or replay), name, mime, size, and createdAt. Log and metadata text is inline in text. Images, video, and replay come as a signed url with an expiresAt time. A link works for 15 minutes, only for the project and token that asked for it, and stops working when that token is revoked. Passwords, tokens, and cookie values are masked in stored logs. A thread with a suggested text edit has a suggestion field with plain old, new, and selector values. A comment made on an open menu, dialog, popover, tooltip or expanded section has a ui_state text with numbered steps that show that UI again.

React to new feedback

Call list_events with since: "latest" to start from now. Pass back the cursor it returns, and each call returns only new threads and replies. The agent workflow guide shows the whole loop from comment to fix.

Thread and anchor JSON schema

pinthread publishes an open, versioned JSON Schema for thread, comment, and anchor objects at https://pinthread.dev/schemas/thread-v1.json ($id: https://pinthread.dev/schemas/thread-v1.json).

Version rules:

  • Immutable version URLs: Any schema field or shape change, including additive fields, requires the next numbered schema URL (for example https://pinthread.dev/schemas/thread-v2.json). Never change the contents of an existing versioned URL.
  • Breaking changes: Breaking changes also require a new numbered schema URL.
  • Strict property checks: Known thread, comment, anchor, targets, shadow, and frame path properties reject undeclared fields (additionalProperties: false). Arbitrary keys remain allowed in metadata maps.

Run pinthread schema from the CLI to inspect command and schema metadata.

Compatible readers

This strict schema records a provider response snapshot and detects drift in provider tests. It is not a requirement for existing API clients.

Compatible readers ignore unknown optional fields. New optional fields do not become mandatory for old readers. Use the schema version that matches a provider snapshot when strict validation is needed.

Other feedback tools with MCP

ToolAgent accessFree plan
pinthreadMCP server and agent tokens on every plan, including Free$0 a month, with no trial that runs out. Up to 10 projects, 25 members per project, 10,000 comments per project, 100 MB of storage per project, Opt-in video: 30 s and 8 MB per recording, Opt-in replay: 30 s and 2 MB per recording.
Marker.ioMCP server for all customers at no extra costNo free plan. A 15-day free trial.
BugHerdMCP server in beta, free for all BugHerd subscribersNo free plan. A 7-day free trial.
UserbackMCP connectors on paid plans2 feedback projects. Feedback stays available for 7 days.
HuddlekitMCP on paid plans1 project, 3 team members, and 100 MB of storage
RuttlNo MCP listed on the pricing page1 project, 5 pages, and up to 5 users

Checked on 7 October 2026. Sources: Marker.io pricing, Marker.io MCP, BugHerd pricing, BugHerd MCP, Userback pricing, Huddlekit pricing, Ruttl pricing.

Read all alternatives, see what the free plan includes, or read our guide on how coding agents use an MCP server for website feedback.

Questions

Which agents can use the pinthread MCP server?

Any MCP client that supports streamable HTTP, including Claude Code, Cursor, and Codex. Clients without MCP can take the copied comments as a prompt.

Is the MCP server included in the Free plan?

Yes. Agent tokens and MCP access are included on every plan, including Free at $0 a month.

Can the agent see my other projects?

No. Each token belongs to one project, so the agent sees only that project's threads. A read token cannot reply to, start, resolve, or reopen threads.

Is the pinthread MCP server remote or local?

Remote. pinthread hosts it at https://pinthread.dev/mcp. Your client connects over HTTP with a bearer token. You do not run a local process. The server exposes tools only, no resources or prompts, and the endpoint accepts POST requests only.

How does the MCP server authenticate?

With an agent token that starts with ptk_, sent as an Authorization: Bearer header. There is no OAuth sign-in. Each token belongs to one project and has a read or write scope. Tokens expire after 90 days by default and you can revoke them at any time.