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 分