# com.proofite/proofite (remote · proofite.com)

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

- Trust score: 91/100 (high trust)
- Change this week: +2
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-20

## Components

- remote · `proofite.com`: 91/100 (this document), [markdown](https://verifymcp.io/servers/com-proofite-proofite/proofite.md), [page](https://verifymcp.io/servers/com-proofite-proofite/proofite)
- npm · `proofite-mcp`: 39/100, [markdown](https://verifymcp.io/servers/com-proofite-proofite/proofite-mcp.md), [page](https://verifymcp.io/servers/com-proofite-proofite/proofite-mcp)

## Channel facts

- Endpoint: `https://proofite.com/mcp`
- Transports: `streamable-http`
- Auth: `required`
- Version: `1.0.0`

## Trust breakdown

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. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-09-20.

- **Endpoint Security**: 83/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - 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.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 87/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 3388 tokens (~109/item across 31 items; 28 tools + 3 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 100/100
  - No destabilizing schema changes in the last 30 days.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - All 3 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.
  - An AI judge read all 30 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### 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.

### Claude

```bash
claude mcp add --transport http com-proofite-proofite 'https://proofite.com/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "com-proofite-proofite": {
      "url": "https://proofite.com/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "com-proofite-proofite": {
      "type": "http",
      "url": "https://proofite.com/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.com-proofite-proofite]
url = "https://proofite.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-proofite-proofite": {
      "type": "remote",
      "url": "https://proofite.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add com-proofite-proofite --url 'https://proofite.com/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  com-proofite-proofite:
    url: "https://proofite.com/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "com-proofite-proofite": {
      "Transport": "http",
      "Url": "https://proofite.com/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add com-proofite-proofite -t streamable-http -u 'https://proofite.com/mcp'
```

### Other

```json
{
  "mcpServers": {
    "com-proofite-proofite": {
      "type": "http",
      "url": "https://proofite.com/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-09-18 (score 91, 0)

- [security] Tool “get_information_diet” rewrote its description, which is the text the model reads
- [security] 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

### 2026-09-17 (score 91, 0)

- [security] Stability: 0.97 → pass

### 2026-09-16 (score 91, +1)

No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-14 (score 90, +1)

- [cosmetic] “update_information_diet” added an optional parameter “podcast_accento”

### 2026-09-13 (score 89, 0)

- [functional regression] Schema quality: pass → fail
- [cosmetic] “update_information_diet” added an optional parameter “podcast_formato”

### 2026-09-12 (score 89, +1)

No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-10 (score 88, +1)

No change was recorded against any check on this day. Stability & Change Management went from 73 to 77. That category is still filling its 30-day observation window: 22 days of observed history at the previous scan, 23 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-08 (score 87, +1)

No change was recorded against any check on this day. Stability & Change Management went from 67 to 70. That category is still filling its 30-day observation window: 20 days of observed history at the previous scan, 21 at this one. The score rises as the window fills, whether or not the server changes.

## MCP tools (28)

### `get_briefing` (~122 tokens)

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.

Input parameters:

- `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.

### `list_briefings` (~65 tokens)

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.

Input parameters:

- `limit` (integer): How many, default 10

### `get_information_diet` (~100 tokens)

Read the information diet

Read 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, 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` (~57 tokens)

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` (~67 tokens)

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.

Input parameters:

- `source_id` (string, required): Id from list_sources

### `get_podcast_episode` (~66 tokens)

Get the podcast episode

Get 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.

Input parameters:

- `briefing_id` (string): Episode of a specific briefing. Omit for the latest.

### `list_read_later` (~36 tokens)

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.

### `list_deep_dives` (~36 tokens)

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.

### `get_account` (~45 tokens)

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` (~573 tokens)

Change how the briefing is written

Change 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).

Input parameters:

- `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
- `podcast_accento` (string): 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)
- `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

### `tune_topic` (~146 tokens)

Tune one topic

Tune 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 of that WHOLE THEME gets reported (to follow one specific story, use rate_briefing_entry with "follow" on that entry). This is the precise instrument — for a vague comment like "too much crypto lately" use correct_briefing instead.

Input parameters:

- `action` (string, required): What to change about it
- `topic` (string, required): The topic, as it appears in get_information_diet or in a briefing entry (e.g. "intelligenza artificiale")

### `correct_briefing` (~161 tokens)

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

Input parameters:

- `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, required): What was wrong or what they want changed, in their own words

### `rate_briefing_entry` (~253 tokens)

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 its topics. These apply to the topics of that story, so the next briefing weighs them differently. A story usually has several topics: pass `topics` to hit only some of them (e.g. "less" of "demographics" but not of "japan"). Sending the same signal again with different topics REPLACES the previous one: the topics you drop are restored, nothing is double-counted. "follow" is different: it pins THIS story — from then on every development of this specific story (and only of it) gets a full entry flagged as an update; "unfollow" releases it. Pinned stories are listed by get_information_diet.

Input parameters:

- `briefing_id` (string): Which briefing. Omit for the latest.
- `entry_id` (string, required): Entry id from get_briefing
- `signal` (string, required): The signal to record
- `topics` (array): Only these topics of the story (as listed by get_briefing). Omit to apply to all of its topics.

### `report_missing_story` (~165 tokens)

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.

Input parameters:

- `briefing_id` (string): Which briefing it was missing from. Omit for the latest.
- `text` (string, required): What story they expected, in their own words

### `set_learned_profile` (~84 tokens)

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.

Input parameters:

- `mode` (string): Default append
- `text` (string, required): The profile text, or the line to add

### `request_deep_dive` (~71 tokens)

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

Input parameters:

- `query` (string, required): The question or topic to research

### `save_for_later` (~100 tokens)

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.

Input parameters:

- `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

### `generate_briefing` (~58 tokens)

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` (~103 tokens)

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.

Input parameters:

- `description` (string): Optional brief: what the reader expects from this inbox and what to skip — the editor reads it at every briefing
- `name` (string, required): Short name, e.g. "AI research" or "Local news"

### `update_source` (~163 tokens)

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.

Input parameters:

- `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, required): Id from list_sources
- `technicality` (integer): Override just for this inbox

### `delete_source` (~59 tokens)

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.

Input parameters:

- `source_id` (string, required): Id from list_sources

### `add_feed` (~103 tokens)

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.

Input parameters:

- `source_id` (string, required): Which inbox (from list_sources)
- `url` (string, required): Feed URL or plain site address, e.g. "ilpost.it"

### `remove_feed` (~41 tokens)

Remove an RSS feed

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

Input parameters:

- `feed_id` (string, required): Id from get_source

### `add_web_search` (~104 tokens)

Monitor a web search

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.

Input parameters:

- `kind` (string): Default news
- `query` (string, required): The query, as you would type it into Google
- `source_id` (string, required): Which inbox (from list_sources)

### `remove_web_search` (~48 tokens)

Stop monitoring a search

Stop monitoring a standing web search: no new results from that query will reach the briefing. What it already collected stays where it is.

Input parameters:

- `search_id` (string, required): Id from get_source

### `discover_sources` (~105 tokens)

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.

Input parameters:

- `description` (string, required): What they want to follow, in plain words
- `source_id` (string, required): The inbox the proposals are for (its existing sources are excluded)

### `import_opml` (~150 tokens)

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).

Input parameters:

- `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, required): The full OPML/XML file contents
- `source_id` (string, required): Which inbox to import into

### `unsubscribe_newsletter` (~66 tokens)

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.

Input parameters:

- `newsletter_id` (string, required): Id from get_source (newsletters)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/com-proofite-proofite/proofite#diagnostics

## Score history

- 2026-09-20: 91
- 2026-09-19: 91
- 2026-09-18: 91
- 2026-09-17: 91
- 2026-09-16: 91
- 2026-09-15: 90
- 2026-09-14: 90
- 2026-09-13: 89
- 2026-09-12: 89
- 2026-09-11: 88
- 2026-09-10: 88
- 2026-09-09: 87
- 2026-09-08: 87
- 2026-09-07: 86
- 2026-09-06: 86
- 2026-09-05: 85
- 2026-09-04: 85
- 2026-09-03: 84
- 2026-09-02: 84
- 2026-09-01: 84
- 2026-08-31: 83
- 2026-08-30: 83
- 2026-08-29: 82
- 2026-08-28: 82
- 2026-08-27: 81
- 2026-08-26: 81
- 2026-08-25: 79
- 2026-08-24: 79
- 2026-08-23: 79
- 2026-08-22: 78

## Common questions

### 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 91 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 28 tools: get_briefing, list_briefings, get_information_diet, list_sources, get_source, and 23 more. Their descriptions and schemas cost roughly 3,147 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 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://proofite.com/mcp
- Authorisation metadata: https://proofite.com/.well-known/oauth-protected-resource/mcp
- Repository: https://github.com/hanicker/proofite-mcp
- Website: https://proofite.com/mcp
- Changelog RSS feed: https://verifymcp.io/servers/com-proofite-proofite/proofite.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-proofite-proofite/proofite.json
- HTML version of this page: https://verifymcp.io/servers/com-proofite-proofite/proofite
