twocents

page.twocentsPublished by twocents.pageOfficial publisherv1.0.1Updated Oct 24, 2026

Human feedback for AI agents: share HTML, get a live review link, read anchored notes as markdown.

VerifiedStreamable HTTPWeb executableProductivity & WorkflowCommunication & Collaboration

Overview

AI-generated overview

A remote MCP server that lets an assistant publish HTML or markdown pages as live review links, then read reviewers' pinned notes back as markdown.

What you can do
Share a single page or document as HTML or markdown and get back a review link to send to people, with re-shares to the same room updating live for connected reviewers. Publish a multi-page set (an entry page plus linked pages) into one room as a single atomic operation. Fetch reviewer notes for a shared page as markdown grouped by page, with anchored text, element and markup, plus a URL to read each page back. Mark notes resolved once applied, so they leave the active list and reviewers see them marked resolved.
When to use it
Useful when an agent produces a plan, spec, PR description, report or HTML page that a human should review visually and comment on in place, and you want the notes returned to the agent for fixes without leaving the editor.
Requirements
A remote HTTP MCP endpoint; no install, no auth and no API key for the agent or for reviewers. The client is configured with the server URL only.
Before you install
Sharing sends your page content to a third-party service and makes it reachable by anyone holding the review link; the room id acts as the permission, so treat links as secrets. Reviewers can write notes into the room. Marking notes resolved changes shared state visible to reviewers.

Installation

In SourceWeft

  1. Open twocents in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/page.twocents%2Ftwocents/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "twocents": {
      "type": "http",
      "url": "https://twocents.page/mcp"
    }
  }
}

README

twocents — human feedback for AI agents (MCP server)

A remote MCP server, live at https://twocents.page/mcp. Connect it and your AI agent can send any HTML page to real people for visual review — and read their pinned notes back. No auth, no API key, no install for reviewers.

Tools

  • share_page — send a self-contained HTML document, get back a review link. Anyone who opens it can pin notes directly on the page — no login, works on any device. Call again with the same room id and connected reviewers see the update live.
  • get_feedback — the pinned notes, returned as markdown with the anchor text/selector for each note so your agent can find and fix the exact spot. Pass the optional handled array (note ids already decided in earlier sessions) and those collapse to one line each, so the response leads with what's new.

Config

json
{  "mcpServers": {    "twocents": {      "url": "https://twocents.page/mcp"    }  }}

Connect

Claude Code

bash
claude mcp add --transport http twocents https://twocents.page/mcp

Claude.ai (web or desktop) — Settings → Connectors → Add custom connector → paste https://twocents.page/mcp

Cursor or any MCP client — use the config block above (an HTTP MCP server; no auth, no API key).

The loop

Ask your agent to "share this page for feedback" → send the link to anyone → they pin notes on the live page → ask your agent to "get the feedback" and apply it. The whole review cycle without leaving your editor.

What's in this repo

The complete server source: mcp.js — a zero-dependency Streamable HTTP (stateless) JSON-RPC handler, ~300 lines. It runs inside a Cloudflare Worker and stores pages/notes in a Durable Object per review room (env.ROOMS); the Worker, relay, and reviewer UI live in the main (private) twocents.page codebase. server.json is the MCP registry manifest (page.twocents/twocents).

Privacy model: a room id is an unguessable capability — knowing it is the permission to read/write that room. Review links are excluded from search indexing.

See it in action

Every page in our interactive explainer library has a live review room — open one and pin a note. Or get feedback on your own work.

Source: README.md at commit 4b353b0

Tools

4

share_page

Share a page for visual feedback

Share a page or document and get back a review link to send to people. Pass "html" for a self-contained page, or "markdown" for a plan, spec, PR description or report — markdown is rendered to a styled, readable document for you, so prefer it whenever the thing you want a human to approve is prose rather than a built page. Reviewers open the link and pin notes directly on it — no login or install. Call again with the same room id to update the page; connected reviewers see the update live. Use get_feedback to collect the notes. Rooms are sticky per project: if the project has a .twocents/state.json, pass its room id instead of creating a new room, so the review link stays stable across sessions.

ParametershtmlpathroomsourceforkablemarkdowncreatorKey

share_pages

Share a whole set of pages in one request

Publish a multi-page set — an entry page plus the pages it links to — into one room as a single atomic operation. Either the whole set lands or nothing changes, so a reviewer never opens a page whose links point at pages that were never stored. Use this instead of calling share_page N times whenever you have more than one page. Note the ceiling: a room is a review set, not a host — it holds 200 pages and 6 MB total. For a large generated corpus, share the entry points a human would actually read and link out to the rest; nobody pins notes on four hundred pages. If the pages are already files on disk, prefer the uploader — it reads them from the folder instead of making you emit every byte: curl -fsSL <origin>/agent.mjs -o .twocents/agent.mjs && FBL_ROOM=<room> node .twocents/agent.mjs --publish <dir>

ParametersroomentrypagesrequiredpruneforkablecreatorKey

get_feedback

Get reviewer feedback for a shared page

Fetch the reviewer notes for a page shared with share_page, as markdown grouped by page. Each note carries the anchored text, the element and its markup as the reviewer saw it, so you can locate and apply it; each page heading carries a URL to read the whole page back, so you never have to guess which file it is. Show your human each new note and apply only the ones they approve. Pass the note ids already decided in earlier sessions as "handled" to see only what is new.

Parametersroomrequiredhandled

resolve_feedback

Mark reviewer notes as addressed

Mark notes resolved once you have actually applied them. This is what closes the loop: the note leaves the active list for every later get_feedback, and the reviewer who wrote it sees it marked resolved on the page — live, if they have it open — instead of finding their old note sitting next to content you already fixed. Pass "what" you changed; that sentence is shown to the reviewer, so write it for them, not for the log. Requires the creatorKey that share_page returned when the room was created — the review link alone cannot resolve, or any reader could clear feedback that was not theirs. Nothing is deleted: call again with resolved:false to reopen a note.

ParametersbyidsrequiredroomrequiredwhatresolvedcreatorKeyrequired

Version history

1
  1. v1.0.1LatestSep 16, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts