com.proofite/proofite
REMOTE · PROOFITE.COM · 2 COMPONENTS
Read your AI-written daily briefing and retune the filter behind it: feeds, newsletters, topics.
Available components
Last scanned (3 hours ago)
Scores higher than 98% of remote servers
Reachable. Last reached 5 Nov 2026.
Category News and Social
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security83
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation is enforced on tool calls, but the challenge carries no valid RFC 9728 metadata, so a client cannot discover where to get a token. See how to fix → View diagnostics → Fail
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability86
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 5576 tokens (~121/item across 46 items; 43 tools + 3 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management98
- Stability check failed: schema churn in the 30 days we've observed: 0 tool removals, 1 breaking changes, 0 auth/transport breaks, 15 additions. See how to fix → Fail
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 5 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 45 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 1 Nov 26 −1
- Schema quality: 4905 → 5576 ▼ functional
- Server version: 1.2.0 → 1.3.0 functional
- New tool “configure_insert” functional
- New tool “list_inserts” functional
- New tool “rate_insert” functional
- “update_information_diet” reworded the description of “language” cosmetic
- 14 Oct 26 0
- Stability: pass → fail ▼ security
- 10 Oct 26 0
- Schema quality: 3388 → 4905 ▼ functional
- 28 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 25 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 18 Sept 26 0
- Tool “rate_briefing_entry” rewrote its description, which is the text the model reads security
- Tool “tune_topic” rewrote its description, which is the text the model reads security
- Tool “get_information_diet” rewrote its description, which is the text the model reads security
- 17 Sept 26 0
- Stability: 0.97 → pass security
- 14 Sept 26 0
- “update_information_diet” added an optional parameter “podcast_accento” cosmetic
1 cosmetic change on this day. Switch on “Show cosmetic changes” to see it.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Probed https://proofite.com/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=proofite.com | CN=WE1,O=Google Trust Services,C=US | 14 Oct 2026 | 12 Jan 2027 | ECDSA 256 | ECDSA-SHA256 | f6085bedeab916910e9f730bd1483df7 |
| SANs: proofite.com, *.proofite.com | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of proofite.com. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| proofite.com. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication Challenged, unverified
The endpoint asked for a token, but we could not retrieve and validate the RFC 9728 metadata that tells a client how to obtain one.
| Result | Challenged, unverified |
|---|---|
| Enforced | On tool calls |
| HTTP status | 200 |
WWW-Authenticate challenge Bearer realm="Proofite", error="invalid_token"
Bearer realm="Proofite", error="invalid_token" Protected resource metadata
| Retrieved | No |
|---|---|
| Problem | no_resource_metadata |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://proofite.com/mcp | Verified | 200 | |
| http (plaintext) | http://proofite.com/mcp | HTTPS enforced | 301 | https://proofite.com/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
add_feed Add an RSS feed ~103
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.
| Name | Type | Req | Description |
|---|---|---|---|
| source_id | string | yes | Which inbox (from list_sources) |
| url | string | yes | Feed URL or plain site address, e.g. "ilpost.it" |
No output schema declared.
No examples provided.
add_proposed_source Add the source an investigation proposed ~84
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.
| Name | Type | Req | Description |
|---|---|---|---|
| report_id | string | yes | The investigation id, from list_missing_reports or the report_missing_story result |
No output schema declared.
No examples provided.
add_web_search Monitor a web search ~104
Monitor 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.
| Name | Type | Req | Description |
|---|---|---|---|
| kind | string | – | Default news |
| query | string | yes | The query, as you would type it into Google |
| source_id | string | yes | Which inbox (from list_sources) |
No output schema declared.
No examples provided.
cancel_deep_dive Cancel a queued deep dive ~60
Remove a deep-dive request that is still waiting (ids from list_deep_dives). One already covered in a briefing cannot be cancelled.
| Name | Type | Req | Description |
|---|---|---|---|
| deep_dive_id | string | yes | The request id, from list_deep_dives |
No output schema declared.
No examples provided.
configure_insert Switch an insert on or off, or configure it ~366
Configure one insert of the briefing. Call list_inserts first: it returns, for each insert available to this person (language and country already applied), the config fields with their key, type and options. Pass the insert id and any subset of: enabled (true/false), level (one of the insert's AI levels: nessuno = data only, leggero = the podcast hosts mention it, medio = plus a short written comment), config (an object keyed by the field keys). Field types: "luoghi" takes city names as strings (e.g. {"citta": ["Verona"]}; resolved to coordinates here), "lista_testo" takes an array of strings or the pasted text under "<key>_testo", "titoli"/"squadra" take names as strings, "scelta" takes one option id, "scelta_multipla" an array of option ids, "testo" a string. Examples: meteo {"citta": ["Verona", "Milano"], "orizzonte": "weekend"}; fantacalcio {"rosa": ["Contini", "Milinkovic-Savic V."], "lega": "…"}; borsa {"titoli": ["Enel", "Nvidia"]}; rebus {"livello_gioco": "facile", "quando": "weekend"}. Switching on requires a valid configuration. Takes effect from the next briefing.
| Name | Type | Req | Description |
|---|---|---|---|
| config | object | – | The insert's configuration (see the description) |
| enabled | boolean | – | Switch it on (true) or off (false) |
| insert | string | yes | The insert id |
| level | string | – | How much the AI talks about it, where the insert offers levels |
No output schema declared.
No examples provided.
correct_briefing Correct the briefing in plain words ~209
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.
| Name | Type | Req | Description |
|---|---|---|---|
| briefing_id | string | – | Which briefing the note refers to. Omit for the latest. |
| entry_id | string | – | Optional: the specific story the note is about (entry id from get_briefing) |
| note | string | yes | What was wrong or what they want changed, in their own words |
No output schema declared.
No examples provided.
create_source Create a topic inbox ~103
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 | Type | Req | Description |
|---|---|---|---|
| description | string | – | Optional brief: what the reader expects from this inbox and what to skip — the editor reads it at every briefing |
| name | string | yes | Short name, e.g. "AI research" or "Local news" |
No output schema declared.
No examples provided.
delete_source Delete a topic inbox ~59
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.
| Name | Type | Req | Description |
|---|---|---|---|
| source_id | string | yes | Id from list_sources |
No output schema declared.
No examples provided.
discover_sources Find sources for a subject ~105
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.
| Name | Type | Req | Description |
|---|---|---|---|
| description | string | yes | What they want to follow, in plain words |
| source_id | string | yes | The inbox the proposals are for (its existing sources are excluded) |
No output schema declared.
No examples provided.
generate_briefing Generate a briefing now ~58
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
generate_podcast_episode Generate the episode of a briefing now ~88
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.
| Name | Type | Req | Description |
|---|---|---|---|
| briefing_id | string | – | Which briefing. Omit for the latest. |
No output schema declared.
No examples provided.
get_account Account and usage ~45
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_briefing Read the daily briefing ~122
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.
| Name | Type | Req | Description |
|---|---|---|---|
| briefing_id | string | – | Specific briefing id (from list_briefings). Omit for the latest. |
| include_markdown | boolean | – | Include the full text. Default true; set false for just the index. |
No output schema declared.
No examples provided.
get_episode_transcript Read the episode text ~128
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.
| Name | Type | Req | Description |
|---|---|---|---|
| briefing_id | string | – | The episode of a specific briefing. Omit for the latest. |
| episode_id | string | – | A specific episode (from get_podcast_episode). Wins over briefing_id. |
No output schema declared.
No examples provided.
get_information_diet Read the information diet ~124
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_podcast_episode Get the podcast episode ~103
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.
| Name | Type | Req | Description |
|---|---|---|---|
| briefing_id | string | – | Episode of a specific briefing. Omit for the latest. |
No output schema declared.
No examples provided.
get_source Inspect one source ~67
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.
| Name | Type | Req | Description |
|---|---|---|---|
| source_id | string | yes | Id from list_sources |
No output schema declared.
No examples provided.
import_opml Import an OPML subscription file ~150
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).
| Name | Type | Req | Description |
|---|---|---|---|
| dry_run | boolean | – | true = only list what would be imported |
| limit | integer | – | Max feeds to add in this call (default 20 — big imports go in batches) |
| opml | string | yes | The full OPML/XML file contents |
| source_id | string | yes | Which inbox to import into |
No output schema declared.
No examples provided.
list_briefings List past briefings ~94
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.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | How many, default 10 |
| offset | integer | – | Skip the N most recent: use it to walk back through an archive longer than 50 (default 0) |
No output schema declared.
No examples provided.
list_deep_dives List pending deep dives ~36
List the deep-dive research requests waiting to be covered: topics the user asked the briefing to investigate with fresh web research.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_inserts List the briefing inserts (the newsstand) ~97
The inserts: optional extra pages of the daily briefing that the person switches on one by one — weather for their city, their fantasy-football roster (Italian users), the stocks they hold, a daily rebus puzzle. Returns, in the person's language, each insert with what it does, whether it is on, its current configuration, the fields it needs (with types) and the AI levels it offers. Read this before configure_insert.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_missing_reports List the "why wasn't I told" investigations ~77
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.
| Name | Type | Req | Description |
|---|---|---|---|
| briefing_id | string | – | Which briefing. Omit for the latest. |
No output schema declared.
No examples provided.
list_read_later List the read-later queue ~61
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_saved List the reading list ~107
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.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | How many to return (default 30) |
| query | string | – | Optional: a word to search for |
No output schema declared.
No examples provided.
list_sources List information sources ~57
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
rate_briefing_entry Rate one story ~378
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.
| Name | Type | Req | Description |
|---|---|---|---|
| briefing_id | string | – | Which briefing. Omit for the latest. |
| entry_id | string | yes | Entry id from get_briefing |
| signal | string | yes | The signal to record |
| topics | array | – | Labels of this story to combine (AND), from `labels` in get_briefing — e.g. ["e:tesla"] for Tesla everywhere, ["e:tesla","f:soldi"] for Tesla only about money. Omit for the whole story. |
| withdraw | boolean | – | true = take back the signal of this kind previously given on this story (the topics it had touched are restored). With "follow" use "unfollow" instead. |
No output schema declared.
No examples provided.
rate_insert Rate an insert: stars and/or a short comment ~200
Leave feedback on one insert of the briefing for the people who build it: stars from 1 to 5 and/or a comment of up to 1000 characters, at least one of the two. Use it when the person judges an insert — "the weather page is great", "the quiz is too hard", "the stocks insert is missing my bank" — passing the insert id (see list_inserts), the stars if they gave a grade, and the comment in their own words. A second call within fifteen minutes completes or corrects the same feedback instead of adding another; later calls add a new one. Comments reach the founder; stars are read in aggregate. Returns the current average for that insert.
| Name | Type | Req | Description |
|---|---|---|---|
| comment | string | – | What they like, what is missing, in their words |
| insert | string | yes | The insert id |
| stars | integer | – | The grade, 1 (poor) to 5 (excellent) |
No output schema declared.
No examples provided.
remove_feed Remove an RSS feed ~41
Remove an RSS feed from a topic inbox. Already-collected content stays; nothing new arrives from it.
| Name | Type | Req | Description |
|---|---|---|---|
| feed_id | string | yes | Id from get_source |
No output schema declared.
No examples provided.
remove_web_search Stop monitoring a search ~48
Stop monitoring a standing web search: no new results from that query will reach the briefing. What it already collected stays where it is.
| Name | Type | Req | Description |
|---|---|---|---|
| search_id | string | yes | Id from get_source |
No output schema declared.
No examples provided.
report_missing_story Ask why a story was missing ~165
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.
| Name | Type | Req | Description |
|---|---|---|---|
| briefing_id | string | – | Which briefing it was missing from. Omit for the latest. |
| text | string | yes | What story they expected, in their own words |
No output schema declared.
No examples provided.
request_deep_dive Queue a deep dive ~71
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".
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | yes | The question or topic to research |
No output schema declared.
No examples provided.
resume_podcast Resume the podcast after the automatic pause ~59
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
save_entry Save a story to the reading list ~103
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.
| Name | Type | Req | Description |
|---|---|---|---|
| briefing_id | string | – | Which briefing. Omit for the latest. |
| entry_id | string | yes | Entry id from get_briefing, or "chicca" |
No output schema declared.
No examples provided.
save_for_later Save something into the next briefing ~100
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.
| Name | Type | Req | Description |
|---|---|---|---|
| text | string | – | Alternative to url: a free-text note to keep |
| title | string | – | Optional title for a text note |
| url | string | – | The link to save |
No output schema declared.
No examples provided.
set_learned_profile Rewrite the learned profile ~84
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.
| Name | Type | Req | Description |
|---|---|---|---|
| mode | string | – | Default append |
| text | string | yes | The profile text, or the line to add |
No output schema declared.
No examples provided.
share_briefing Share a briefing with a link ~130
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.
| Name | Type | Req | Description |
|---|---|---|---|
| briefing_id | string | – | Which briefing. Omit for the latest. |
| podcast | boolean | – | Include the episode in the shared page (default: unchanged, initially false) |
No output schema declared.
No examples provided.
tune_topic Tune one topic ~271
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.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | What to change about it |
| topic | string | – | One key: a topic as it appears in get_information_diet or in a briefing entry (e.g. "intelligenza artificiale", "e:tesla", "c:auto") |
| topics | array | – | Alternative to topic: labels to COMBINE with AND (e.g. ["e:tesla","f:soldi"]) |
No output schema declared.
No examples provided.
unfollow_story Stop following a story ~81
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.
| Name | Type | Req | Description |
|---|---|---|---|
| story_id | string | yes | The story id listed by get_information_diet |
No output schema declared.
No examples provided.
unsave_entry Remove a story from the reading list ~83
Take a story out of the reading list, by its saved id (from list_saved) or by briefing + entry id.
| Name | Type | Req | Description |
|---|---|---|---|
| briefing_id | string | – | With entry_id: which briefing. Omit for the latest. |
| entry_id | string | – | Alternative: the entry id in its briefing |
| saved_id | string | – | The id from list_saved |
No output schema declared.
No examples provided.
unshare_briefing Revoke a shared link ~45
Revoke the public link of a briefing: the page and its audio stop answering immediately.
| Name | Type | Req | Description |
|---|---|---|---|
| briefing_id | string | – | Which briefing. Omit for the latest. |
No output schema declared.
No examples provided.
unsubscribe_newsletter Unsubscribe from a newsletter ~66
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.
| Name | Type | Req | Description |
|---|---|---|---|
| newsletter_id | string | yes | Id from get_source (newsletters) |
No output schema declared.
No examples provided.
update_information_diet Change how the briefing is written ~640
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).
| Name | Type | Req | Description |
|---|---|---|---|
| avoid | string | – | cosa non vuole leggere mai |
| chicca_enabled | boolean | – | nei giorni senza notizie, una storia vera dall'archivio |
| depth | integer | – | 1 solo i fatti … 5 analisi e implicazioni |
| digest_days | array | – | giorni della settimana, ISO 1=lunedì … 7=domenica |
| digest_enabled | boolean | – | ricevere o meno il briefing quotidiano |
| digest_length | string | – | quanto deve essere lungo |
| digest_time | string | – | orario di consegna, HH:MM nel fuso dell'utente |
| email_digest_enabled | boolean | – | ricevere il briefing anche per email |
| entry_mix | integer | – | 1 poche voci trattate a fondo … 5 tante voci brevi (la lunghezza totale non cambia) |
| interests | string | – | cosa seguire, in linguaggio naturale |
| language | string | – | lingua del briefing e del podcast (codice ISO 639-1) |
| podcast_accento | string|null | – | accento della voce, per la lingua scelta: inglese us/gb/au/ie/in, spagnolo es/latam, francese fr/ca, tedesco de/at/ch (l'italiano non ha varianti); null = automatico, abbinato alla lingua |
| podcast_enabled | boolean | – | generare anche l'episodio audio |
| podcast_formato | string | – | show = due conduttori che si rispondono (il formato di casa); classico = una voce che legge il briefing |
| podcast_minutes | integer | – | durata desiderata dell'episodio |
| serper_enrich | boolean | – | arricchire il briefing con ricerche web fresche |
| smalltalking_enabled | boolean | – | ogni giorno, in coda al briefing, due o tre storie brevi da raccontare |
| stance | integer | – | 1 neutro … 5 l'editor si sbilancia |
| technicality | integer | – | 1 divulgativo … 5 da addetti ai lavori |
| timezone | string | – | fuso orario IANA (Europe/Rome) |
| tone | string | – | come deve scrivere («diretto, zero fuffa») |
| weekly_recap_enabled | boolean | – | riepilogo settimanale di ciò che non è stato letto |
No output schema declared.
No examples provided.
update_source Update a topic inbox ~163
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.
| Name | Type | Req | Description |
|---|---|---|---|
| description | string | – | The inbox brief: what the reader expects from it and what to skip — the editor reads it at every briefing |
| include_in_digest | boolean | – | false = keep collecting but leave it out of the briefing |
| is_active | boolean | – | false = stop collecting entirely |
| name | string | – | New name for the inbox |
| priority | integer | – | 1 marginal … 5 always first |
| source_id | string | yes | Id from list_sources |
| technicality | integer | – | Override just for this inbox |
No output schema declared.
No examples provided.
How do I install the com.proofite/proofite MCP server?
com.proofite/proofite is a hosted endpoint at https://proofite.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · proofite.com
claude mcp add --transport http com-proofite-proofite 'https://proofite.com/mcp'
What is the com.proofite/proofite MCP server?
com.proofite/proofite is an MCP server listed in the public MCP registry as com.proofite/proofite. Read your AI-written daily briefing and retune the filter behind it: feeds, newsletters, topics. This page covers its hosted endpoint (https://proofite.com/mcp).
Is the com.proofite/proofite MCP server safe to use?
com.proofite/proofite scores 90 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the com.proofite/proofite MCP server expose?
com.proofite/proofite exposes 43 tools: get_briefing, list_briefings, get_information_diet, list_sources, get_source, and 38 more. Their descriptions and schemas cost roughly 5,335 tokens of context every time the server is loaded.
Does the com.proofite/proofite MCP server require authentication?
Yes. com.proofite/proofite asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.
Is the com.proofite/proofite MCP server still maintained?
com.proofite/proofite is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.