twocents

page.twocents由 twocents.page 发布官方发布者v1.0.1更新于 Oct 24, 2026

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

已验证Streamable HTTP可网页运行效率与工作流沟通与协作

概览

AI 生成的概览

一个远程 MCP 服务器,让助手把 HTML 或 markdown 页面发布为在线评审链接,并以 markdown 读回评审者添加的锚定批注。

可以做什么
将单个页面或文档以 HTML 或 markdown 形式分享,返回可发给他人查看的评审链接;向同一房间重复分享时,已连接的评审者可实时看到更新。把多页集合(入口页及其链接页面)以一次原子操作发布到同一房间。按页面分组以 markdown 获取共享页面的评审批注,包含锚定文本、元素及其标记,以及可回读整页的链接。在批注实际处理后将其标记为已解决,使其退出活动列表,评审者也会看到已解决状态。
适用场景
适合助手产出计划、规格、PR 描述、报告或 HTML 页面,需要真人可视化查看并在页面上就地批注,同时希望批注回到助手以便修改、无需离开编辑器时使用。
运行要求
远程 HTTP MCP 端点;助手和评审者都无需安装、无需认证、无需 API 密钥。客户端只需配置服务器地址。
安装前请注意
分享会把页面内容发送到第三方服务,任何持有评审链接的人都能访问;房间 ID 即权限,应把链接视为机密。评审者可以向房间写入批注。将批注标记为已解决会改变评审者可见的共享状态。

安装

在 SourceWeft 中

  1. 打开 控制台中的 twocents,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/page.twocents%2Ftwocents/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

{
  "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.

来源:README.md,提交 4b353b0

工具

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.

输入参数htmlpathroomsourceforkablemarkdowncreatorKey

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>

输入参数roomentrypages必填pruneforkablecreatorKey

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.

输入参数room必填handled

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.

输入参数byids必填room必填whatresolvedcreatorKey必填

版本历史

1
  1. v1.0.1最新Sep 16, 2026

评分

已满足适用检查项的 100%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分