Proofite

com.proofite由 proofite.com 發布官方發布者v1.2.0更新於 Nov 10, 2026

Read your AI-written daily briefing and retune the filter behind it: feeds, newsletters, topics.

已驗證Streamable HTTP可網頁執行效率與工作流網頁搜尋與抓取媒體與設計

概覽

AI 產生的概覽

讀取使用者由 AI 撰寫的每日新聞簡報,並調整其背後的資訊來源、主題與設定,包括播客節目。

可以做什麼
  • 讀取簡報、歷史簡報、資訊飲食、主題收件匣及其訂閱來源、稍後閱讀佇列、深度研究、收藏故事與帳戶狀態
  • 全域或依主題調整簡報,用自然語言糾正簡報,對單則故事評分,編輯已學習画像,追蹤或取消追蹤故事
  • 管理主題收件匣及其來源:建立、修改或刪除收件匣,增刪 RSS 來源與常駐網頁搜尋,探索來源,匯入 OPML,取消訂閱電子報
  • 把連結加入下一期簡報,提出或取消深度研究,收藏或取消收藏故事,回報缺漏故事並加入建議來源
  • 依需求產生簡報與播客節目,讀取節目與逐字稿,恢復已暫停的播客,以及分享或取消分享簡報
適用情境
當使用者希望助理閱讀其 Proofite 簡報、引用或檢索簡報內容,或透過對話而非應用程式介面改變新聞篩選結果(主題、深度、技術程度、推送時間、播客設定)時使用。
執行需求
需要 Proofite 帳戶(可免費試用,不需信用卡)。需在設定的 Connections 建立 Proofite API 金鑰:遠端端點以 Authorization 的 Bearer 標頭傳遞,npx stdio 橋接則以 PROOFITE_API_KEY 環境變數傳遞。需要連線至 proofite.com 的網路。
安裝前請注意
金鑰可存取單一使用者的帳戶;支援並強制唯讀金鑰,不需修改時應優先使用。許多工具會寫入、刪除或取消訂閱:刪除主題收件匣無法復原,取消訂閱電子報會在寄件方生效。產生簡報或播客節目會產生實際 AI 費用。分享簡報會建立公開連結,直到被撤銷為止。變更從下一期簡報起生效。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Proofite,將其新增到工作區。
  2. 連接 Authorization token 憑證。它們會被私密儲存,絕不會在公開頁面上展示。
  3. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/com.proofite%2Fproofite/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "proofite": {
      "type": "http",
      "url": "https://proofite.com/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_TOKEN>"
      }
    }
  }
}

README

Proofite MCP server

Give your AI assistant the keys to your information diet.

Proofite turns the sources you choose — newsletters, RSS feeds, monitored web searches, saved links — into one personal briefing every morning, written by AI and available as a podcast. This MCP server lets any agent read that briefing and, more importantly, retune the filter behind it: what gets in, how deep, how technical, how often, and what never appears again.

It is the same server the product uses for its own voice mode, so it is not a demo surface: it is how Proofite is driven.

you   → "too much crypto this week, and go deeper on the EU regulation"agent → correct_briefing(note: "…")        → topic weights adjusted, depth raised, deep dive queued        → tomorrow's briefing is different

Install

Remote (recommended). Streamable HTTP, no install. Create a key in Proofite under Settings → Connections, then:

bash
claude mcp add --transport http proofite https://proofite.com/mcp \  --header "Authorization: Bearer pfk_live_…"

Or in any client that reads a JSON config:

json
{  "mcpServers": {    "proofite": {      "type": "http",      "url": "https://proofite.com/mcp",      "headers": { "Authorization": "Bearer pfk_live_…" }    }  }}

stdio bridge, for clients that do not speak HTTP yet:

json
{  "mcpServers": {    "proofite": {      "command": "npx",      "args": ["-y", "proofite-mcp"],      "env": { "PROOFITE_API_KEY": "pfk_live_…" }    }  }}

Tools

ToolWhat it does
get_briefingreadRead the user's personal AI-written news briefing (daily digest) in full markdown: every story selected today from their newsletters, RSS feeds and monitored web searches, with sources. Returns the latest briefing by default, or a specific one by id or date. Also returns an index of entry ids, needed to rate or correct individual stories.
list_briefingsreadList the user's past daily briefings (most recent first) with date, title, number of stories and whether an episode exists. Use it to find the id of a specific day before reading or correcting it.
get_information_dietreadRead everything that shapes what reaches this person: delivery schedule, length, technicality, depth, stance and tone, stated interests and no-go topics, the profile the system has learned about them, and the per-topic preferences built from their feedback (affinity, muted, followed). This is the full picture of their news filter — read it before changing anything.
list_sourcesreadList the topic inboxes this person feeds their briefing with: each one has a dedicated email address for newsletter subscriptions, plus RSS feeds and monitored web searches. Shows how much each produced recently, its priority and whether it is included in the briefing.
get_sourcereadInspect one topic inbox in detail: every RSS feed (with its health and last fetch), every monitored web search, X/Twitter profiles, and the newsletters currently arriving at its dedicated address. Use it before removing or reorganising anything.
get_podcast_episodereadGet the audio episode generated from a briefing: a private podcast narrated in the user's language, with a playable URL and the show notes listing every source. Returns the latest episode by default.
list_read_laterreadList what is queued in the read-later inbox: links and forwarded emails that are guaranteed to be covered in the next briefing.
list_deep_divesreadList the deep-dive research requests waiting to be covered: topics the user asked the briefing to investigate with fresh web research.
get_accountreadAccount status: plan, whether the briefing is currently running, when the next one is due, how many sources and stories are in the system, and the AI cost accrued this month.
update_information_dietwriteChange how and when the briefing reaches this person: delivery time and days, length, technicality, depth, stance, tone, stated interests and topics to avoid, language, timezone, podcast and email delivery. Pass only the keys you want to change. Read get_information_diet first — these are global settings, not per-topic ones (for a single topic use tune_topic).
tune_topicwriteTune how a single topic is treated in future briefings: more or less of it, more or less technical, deeper or shorter, more or less often, muted entirely, or followed so every development gets reported. This is the precise instrument — for a vague comment like "too much crypto lately" use correct_briefing instead.
correct_briefingwriteTell the briefing what was wrong with it, in plain language — "too much crypto and not enough on the EU regulation", "keep it shorter", "explain the technical parts more simply", "follow this story". An AI editor reads the note against the actual briefing and turns it into concrete adjustments: topic preferences, settings, deep-dive requests. This is the main way a person retunes their news feed by talking.
rate_briefing_entrywriteGive a precise up/down signal on one story of a briefing: more like this, less like this, more technical, simpler, deeper, shorter, follow it, or mute its topics. Applies to the topics of that story, so the next briefing weighs them differently.
set_learned_profilewriteRead or rewrite the free-text profile the briefing uses to know who this person is — their work, projects, recurring interests, what they already know. Appending is usually better than replacing: pass mode "append" to add a line.
request_deep_divewriteAsk the next briefing to investigate a topic properly, with fresh web research: it will include a mini-dossier with sources. Use it whenever the person says "I want to know more about X" or "keep digging on this".
save_for_laterwritePut a link or a note into the read-later queue: whatever lands there is guaranteed to be covered in the next briefing. The page is fetched and its text stored, so it can be summarised even if the site later blocks access.
generate_briefingwriteGenerate a briefing immediately instead of waiting for the scheduled time, using everything collected so far. Costs real AI money and takes a couple of minutes, so use it only when explicitly asked. Returns the id to poll with get_briefing.
create_sourcewriteCreate a new topic inbox: a themed container with its own dedicated email address (subscribe newsletters to it), which can hold RSS feeds and monitored web searches. This is how you add a whole new subject to someone's information diet.
update_sourcewriteChange a topic inbox: rename it, change its description, raise or lower its priority in the briefing, set a per-inbox technicality level, temporarily exclude it from the briefing or pause it entirely.
delete_sourcewritePermanently delete a topic inbox with all its feeds, searches and collected content. Irreversible: the dedicated email address stops working too. Prefer update_source with is_active false when in doubt.
add_feedwriteAdd an RSS/Atom feed to a topic inbox. You can pass the site address instead of the feed URL — the server fetches the page and discovers the feed. If it fails, the reason is precise (blocked by the site, gone, unreadable) so it can be reported honestly.
remove_feedwriteRemove an RSS feed from a topic inbox. Already-collected content stays; nothing new arrives from it.
add_web_searchwriteMonitor a Google query every day and feed the results into a topic inbox: the standing-search way to follow a company, a person, a law or a niche subject that has no RSS feed. kind "news" watches the news index, "search" the whole web.
remove_web_searchwriteStop monitoring a standing web search: no new results from that query will reach the briefing. What it already collected stays where it is.
discover_sourcesreadDescribe a subject in plain words and get back real, working sources for it: RSS feeds validated live by the server (dead ones are dropped before you see them), web searches worth monitoring, and newsletters worth subscribing to. Nothing is added — it returns proposals to pass to add_feed / add_web_search.
import_opmlwriteImport subscriptions from another RSS reader (Feedly, Inoreader, FreshRSS, NetNewsWire) by passing the OPML file contents. Set dry_run true first to see what is in it and what is already present; then run it for real to add them (they are validated one by one, and the ones that fail come back with the reason).
unsubscribe_newsletterwriteUnsubscribe from a newsletter arriving in one of the inboxes. When the sender supports one-click unsubscribe the server does it directly; otherwise it returns the URL a human has to open, and says so honestly.

It also exposes resources (proofite://briefing/latest, proofite://diet, proofite://sources) and two prompts (tune-my-feed, catch-me-up).

Notes that matter

  • Keys can be read-only, and the server enforces it: a read-only key cannot change a setting however convincingly it is asked. Create one per client, revoke individually.
  • Changes apply from the next briefing, never retroactively.
  • Scoped to one account. The key identifies a person; the server has no way to reach anyone else's information.
  • Protocol. Streamable HTTP. Speaks the 2026-07-28 revision (stateless, per-request _meta, mirrored Mcp-Method / Mcp-Name headers, server/discover) and the older initialize handshake used by most clients today — it detects which era you speak from your first request.

Requirements

A Proofite account — free trial, no card. The briefing, the podcast and this server are the same product seen from three sides.

Links

  • proofite.com/mcp — live documentation, generated from the server's own tool registry
  • proofite.com — what Proofite is
  • https://proofite.com/.well-known/mcp.json — machine-readable manifest

MIT © Nicola Moretti mcp-name: com.proofite/proofite

來源:README.md,提交 a24c0e0

工具

40

get_briefing

Read the daily briefing

Read the user's personal AI-written news briefing (daily digest) in full markdown: every story selected today from their newsletters, RSS feeds and monitored web searches, with sources. Returns the latest briefing by default, or a specific one by id or date. Also returns an index of entry ids, needed to rate or correct individual stories.

輸入參數briefing_idinclude_markdown

list_briefings

List past briefings

List the user's past daily briefings (most recent first) with date, title, number of stories and whether an episode exists. Use it to find the id of a specific day before reading or correcting it.

輸入參數limitoffset

get_information_diet

Read the information diet

Read everything that shapes what reaches this person: delivery schedule, length, technicality, depth, stance, tone and entry mix, podcast format (two-host show or single voice), voice accent and whether the podcast is auto-paused, stated interests and no-go topics, the profile the system has learned about them, the per-topic preferences built from their feedback (affinity, muted, followed themes) and the specific stories they pinned with "follow" (every development of those gets reported). This is the full picture of their news filter — read it before changing anything.

無需輸入參數。

list_sources

List information sources

List the topic inboxes this person feeds their briefing with: each one has a dedicated email address for newsletter subscriptions, plus RSS feeds and monitored web searches. Shows how much each produced recently, its priority and whether it is included in the briefing.

無需輸入參數。

get_source

Inspect one source

Inspect one topic inbox in detail: every RSS feed (with its health and last fetch), every monitored web search, X/Twitter profiles, and the newsletters currently arriving at its dedicated address. Use it before removing or reorganising anything.

輸入參數source_id必填

get_podcast_episode

Get the podcast episode

Get the audio episode generated from a briefing: a private podcast in the user's language — by default a show with two hosts who talk the news through, or a single voice in the classic format — with a playable URL, the private RSS feed URL and the show notes listing every source. Returns the latest episode by default. For the words themselves use get_episode_transcript.

輸入參數briefing_id

get_episode_transcript

Read the episode text

The full text of a podcast episode, word for word: the script the voices read. In the two-host show it comes as "Name: line" turns; in the classic format as plain paragraphs. Use it when the person wants a passage quoted, a point the hosts made that the written briefing does not have, or to search what was said. Latest episode by default.

輸入參數episode_idbriefing_id

list_read_later

List the read-later queue

List what is queued in the read-later inbox: links and forwarded emails that are guaranteed to be covered in the next briefing, and — apart — the stories the person deferred to a later day ("snoozed"), which wait until their date.

無需輸入參數。

list_deep_dives

List pending deep dives

List the deep-dive research requests waiting to be covered: topics the user asked the briefing to investigate with fresh web research.

無需輸入參數。

list_saved

List the reading list

The reading list: stories the person saved from their briefings (including the "chicca", the archive story of quiet days), newest first, each with the briefing it came from. Pass `query` to search them by any word — title, text, topics, briefing title. To add or remove: save_entry, unsave_entry.

輸入參數limitquery

get_account

Account and usage

Account status: plan, whether the briefing is currently running, when the next one is due, how many sources and stories are in the system, and the AI cost accrued this month.

無需輸入參數。

update_information_diet

Change how the briefing is written

Change how and when the briefing reaches this person: delivery time and days, length, technicality, depth, stance, tone, entry mix (few deep stories vs many short ones), stated interests and topics to avoid, language, timezone; the podcast (on/off, minutes, two-host show or single voice, voice accent), email delivery, the weekly recap, the chicca on quiet days, the smalltalking stories, web enrichment. Pass only the keys you want to change. Read get_information_diet first — these are global settings, not per-topic ones (for a single topic use tune_topic).

輸入參數toneavoiddepthstancelanguagetimezoneentry_mixinterestsdigest_daysdigest_timetechnicalitydigest_length另有 10 個

tune_topic

Tune one topic

Tune how a single topic — or a COMBINATION of labels — is treated in future briefings: more or less of it, more or less technical, deeper or shorter, more or less often, muted entirely, or followed so every development of that WHOLE THEME gets reported (to follow one specific story, use rate_briefing_entry with "follow" on that entry). `topic` is one key: a free tag ("intelligenza artificiale") or a typed label (e:tesla, c:auto, f:soldi); `topics` instead is a list of labels combined with AND ("e:tesla"+"f:soldi" = Tesla only when about money — Tesla alone stays as it is). This is the precise instrument — for a vague comment like "too much crypto lately" use correct_briefing instead.

輸入參數topicaction必填topics

correct_briefing

Correct the briefing in plain words

Tell the briefing what was wrong with it, in plain language — "too much crypto and not enough on the EU regulation", "keep it shorter", "explain the technical parts more simply". An AI editor reads the note against the actual briefing and turns it into concrete adjustments: topic preferences, settings (technicality, depth, length, podcast minutes, tone), deep-dive requests. This is the main way a person retunes their news feed by talking. To pin ONE story so its developments get reported, pass its entry_id with the note, or use rate_briefing_entry with "follow": a note without entry_id can only follow a whole theme.

輸入參數note必填entry_idbriefing_id

rate_briefing_entry

Rate one story

Give a precise up/down signal on one story of a briefing: more like this, less like this, more technical, simpler, deeper, shorter, or mute. A story carries typed labels (see `labels` in get_briefing): e:<who or what> (e:tesla), c:<field, its world> (c:auto), f:<angle> (f:soldi = money) and free tags. `topics` chooses the LEVEL: one label = broad ("less of Tesla, everywhere"); several labels = narrow, they are COMBINED with AND ("less of Tesla + soldi" = Tesla only when the story is about money; Tesla alone and money stories of others are untouched). Omit `topics` for the whole story (all its labels together, the narrowest level). Sending the same signal again with different topics REPLACES the previous one. "follow" is different: it pins THIS story — every development of it (and only of it) gets a full entry; "unfollow" releases it. `withdraw: true` takes a signal back.

輸入參數signal必填topicsentry_id必填withdrawbriefing_id

unfollow_story

Stop following a story

Release a pinned story by its id (from get_information_diet → followed_stories), so its developments stop getting a dedicated entry. Works even when the briefing it came from is gone — rate_briefing_entry "unfollow" needs the briefing, this does not.

輸入參數story_id必填

report_missing_story

Ask why a story was missing

The reader expected a story and the briefing did not have it. Describe it in their words; the editor investigates their own sources of the last days, today's briefing, their preferences and a web search, and answers with a verdict: it was in the briefing, none of their sources carried it (and proposes the missing source), it was dropped because of a preference (and corrects it), it was seen but undervalued, or it could not be found. Topics get followed so similar stories do not slip again; a deep-dive may be queued for the next briefing. Five per day.

輸入參數text必填briefing_id

list_missing_reports

List the "why wasn't I told" investigations

The investigations opened with report_missing_story on a briefing: what was asked, the verdict, the explanation, the signals applied and — when none of the person's sources carried the story — the source proposed, with whether it was already added. Latest briefing by default.

輸入參數briefing_id

add_proposed_source

Add the source an investigation proposed

When report_missing_story found that none of the person's sources carried the story, it proposed one. This adds that proposed feed to the inbox it indicated — the same tap the reader has under the briefing. Idempotent: adding twice says it was already added.

輸入參數report_id必填

set_learned_profile

Rewrite the learned profile

Read or rewrite the free-text profile the briefing uses to know who this person is — their work, projects, recurring interests, what they already know. Appending is usually better than replacing: pass mode "append" to add a line.

輸入參數modetext必填

request_deep_dive

Queue a deep dive

Ask the next briefing to investigate a topic properly, with fresh web research: it will include a mini-dossier with sources. Use it whenever the person says "I want to know more about X" or "keep digging on this".

輸入參數query必填

cancel_deep_dive

Cancel a queued deep dive

Remove a deep-dive request that is still waiting (ids from list_deep_dives). One already covered in a briefing cannot be cancelled.

輸入參數deep_dive_id必填

save_for_later

Save something into the next briefing

Put a link or a note into the read-later queue: whatever lands there is guaranteed to be covered in the next briefing. The page is fetched and its text stored, so it can be summarised even if the site later blocks access.

輸入參數urltexttitle

save_entry

Save a story to the reading list

Keep one story of a briefing in the reading list (list_saved): a snapshot that survives even if the briefing is deleted. entry_id "chicca" saves the chicca — the archive story of quiet days — when the briefing has one. Saving again only refreshes the date.

輸入參數entry_id必填briefing_id

unsave_entry

Remove a story from the reading list

Take a story out of the reading list, by its saved id (from list_saved) or by briefing + entry id.

輸入參數entry_idsaved_idbriefing_id

share_briefing

Share a briefing with a link

Create (or read) the public link of a briefing: a cleaned-up read-only copy — no personal "why this matters to you" notes, no name. The podcast episode comes along only if `podcast` is true: the hosts greet the reader by name, so that is the reader's call. Idempotent: calling again returns the same link; unshare_briefing revokes it.

輸入參數podcastbriefing_id

unshare_briefing

Revoke a shared link

Revoke the public link of a briefing: the page and its audio stop answering immediately.

輸入參數briefing_id

generate_podcast_episode

Generate the episode of a briefing now

Make (or remake) the podcast episode of a briefing right away — the latest by default. Takes a few minutes (script, then voices); poll with get_podcast_episode. Asking for an episode is a listening signal: it also lifts the automatic pause. Costs real AI money, so only when asked.

輸入參數briefing_id

resume_podcast

Resume the podcast after the automatic pause

The podcast pauses itself when nobody listens for a while (no episodes get made; the setting podcast_enabled stays true). This lifts the pause: from tomorrow the episode comes back every morning. get_information_diet and get_account say whether it is paused.

無需輸入參數。

generate_briefing

Generate a briefing now

Generate a briefing immediately instead of waiting for the scheduled time, using everything collected so far. Costs real AI money and takes a couple of minutes, so use it only when explicitly asked. Returns the id to poll with get_briefing.

無需輸入參數。

create_source

Create a topic inbox

Create a new topic inbox: a themed container with its own dedicated email address (subscribe newsletters to it), which can hold RSS feeds and monitored web searches. This is how you add a whole new subject to someone's information diet.

輸入參數name必填description

update_source

Update a topic inbox

Change a topic inbox: rename it, change its description, raise or lower its priority in the briefing, set a per-inbox technicality level, temporarily exclude it from the briefing or pause it entirely.

輸入參數namepriorityis_activesource_id必填descriptiontechnicalityinclude_in_digest

delete_source

Delete a topic inbox

Permanently delete a topic inbox with all its feeds, searches and collected content. Irreversible: the dedicated email address stops working too. Prefer update_source with is_active false when in doubt.

輸入參數source_id必填

add_feed

Add an RSS feed

Add an RSS/Atom feed to a topic inbox. You can pass the site address instead of the feed URL — the server fetches the page and discovers the feed. If it fails, the reason is precise (blocked by the site, gone, unreadable) so it can be reported honestly.

輸入參數url必填source_id必填

remove_feed

Remove an RSS feed

Remove an RSS feed from a topic inbox. Already-collected content stays; nothing new arrives from it.

輸入參數feed_id必填

discover_sources

Find sources for a subject

Describe a subject in plain words and get back real, working sources for it: RSS feeds validated live by the server (dead ones are dropped before you see them), web searches worth monitoring, and newsletters worth subscribing to. Nothing is added — it returns proposals to pass to add_feed / add_web_search.

輸入參數source_id必填description必填

import_opml

Import an OPML subscription file

Import subscriptions from another RSS reader (Feedly, Inoreader, FreshRSS, NetNewsWire) by passing the OPML file contents. Set dry_run true first to see what is in it and what is already present; then run it for real to add them (they are validated one by one, and the ones that fail come back with the reason).

輸入參數opml必填limitdry_runsource_id必填

unsubscribe_newsletter

Unsubscribe from a newsletter

Unsubscribe from a newsletter arriving in one of the inboxes. When the sender supports one-click unsubscribe the server does it directly; otherwise it returns the URL a human has to open, and says so honestly.

輸入參數newsletter_id必填

版本歷史

2
  1. v1.2.0最新Oct 6, 2026
  2. v1.0.0Sep 16, 2026

評分

已滿足適用檢查項的 100%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

其他 Proofite 整合