com. proofite/ proofite
by proofite.com · remote · local (npm) · no sign-in to list tools · v1.2.0 · published by com.proofite
Read your AI-written daily briefing and retune the filter behind it: feeds, newsletters, topics.
40 tools: 8 can delete or cancel things, 19 change things and 13 only read.
Scanned Oct 21, 2026
- Deletes or cancels8Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things19Claude Code: ask: see these tools
- Only reads13Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http proofite https://proofite.com/mcp --header 'Authorization: <your-authorization>'Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
40 tools
Deletes or cancels 8Claude Code: deny
cancel_deep_diveRemove a deep-dive request that is still waiting (ids from list_deep_dives).No findings
Why it is in this group
- The name "cancel_deep_dive" says "cancel": a word for removing or ending something.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Remove a deep-dive request that is still waiting (ids from list_deep_dives). One already covered in a briefing cannot be cancelled.
Annotations the server declares
- title: Cancel a queued deep dive
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: false
delete_sourcePermanently delete a topic inbox with all its feeds, searches and collected content.No findings
Why it is in this group
- The name "delete_source" says "delete": a word for removing or ending something.
- The description says "Permanently delete".
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it 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.
Annotations the server declares
- title: Delete a topic inbox
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: false
remove_feedRemove an RSS feed from a topic inbox.No findings
Why it is in this group
- The name "remove_feed" says "remove": a word for removing or ending something.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Remove an RSS feed from a topic inbox. Already-collected content stays; nothing new arrives from it.
Annotations the server declares
- title: Remove an RSS feed
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: false
remove_web_searchStop monitoring a standing web search: no new results from that query will reach the briefing.No findings
Why it is in this group
- The name "remove_web_search" says "remove": a word for removing or ending something.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Stop monitoring a standing web search: no new results from that query will reach the briefing. What it already collected stays where it is.
Annotations the server declares
- title: Stop monitoring a search
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: false
set_learned_profileRead or rewrite the free-text profile the briefing uses to know who this person is — their work, projects, recurring interests, what they already know.No findings
Why it is in this group
- The name "set_learned_profile" says "set": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it 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.
Annotations the server declares
- title: Rewrite the learned profile
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: false
unsave_entryTake a story out of the reading list, by its saved id (from list_saved) or by briefing + entry id.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Take a story out of the reading list, by its saved id (from list_saved) or by briefing + entry id.
Annotations the server declares
- title: Remove a story from the reading list
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: false
unsubscribe_newsletterUnsubscribe from a newsletter arriving in one of the inboxes.No findings
Why it is in this group
- The name "unsubscribe_newsletter" says "unsubscribe": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it 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.
Annotations the server declares
- title: Unsubscribe from a newsletter
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: true
Changes things 19Claude Code: ask
add_feedAdd an RSS/Atom feed to a topic inbox.No findings
Why it is in this group
- The name "add_feed" says "add": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- title: Add an RSS feed
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
add_proposed_sourceWhen report_missing_story found that none of the person's sources carried the story, it proposed one.No findings
Why it is in this group
- The name "add_proposed_source" says "add": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- title: Add the source an investigation proposed
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
add_web_searchMonitor 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.No findings
Why it is in this group
- The name "add_web_search" says "add": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- title: Monitor a web search
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
correct_briefingTell 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".No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it 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.
Annotations the server declares
- title: Correct the briefing in plain words
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
create_sourceCreate 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.No findings
Why it is in this group
- The name "create_source" says "create": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- title: Create a topic inbox
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
generate_briefingGenerate a briefing immediately instead of waiting for the scheduled time, using everything collected so far.No findings
Why it is in this group
- The name "generate_briefing" says "generate": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- title: Generate a briefing now
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
generate_podcast_episodeMake (or remake) the podcast episode of a briefing right away — the latest by default.No findings
Why it is in this group
- The name "generate_podcast_episode" says "generate": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- title: Generate the episode of a briefing now
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
import_opmlImport subscriptions from another RSS reader (Feedly, Inoreader, FreshRSS, NetNewsWire) by passing the OPML file contents.No findings
Why it is in this group
- The name "import_opml" says "import": a word for a change.
Description, as the server wrote it 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).
Annotations the server declares
- title: Import an OPML subscription file
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
rate_briefing_entryGive a precise up/down signal on one story of a briefing: more like this, less like this, more technical, simpler, deeper, shorter, or mute.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it 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.
Annotations the server declares
- title: Rate one story
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
report_missing_storyThe reader expected a story and the briefing did not have it.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it 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.
Annotations the server declares
- title: Ask why a story was missing
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
request_deep_diveAsk the next briefing to investigate a topic properly, with fresh web research: it will include a mini-dossier with sources.No findings
Why it is in this group
- The name "request_deep_dive" says "request": a word for a change.
Description, as the server wrote it 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".
Annotations the server declares
- title: Queue a deep dive
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
resume_podcastThe podcast pauses itself when nobody listens for a while (no episodes get made; the setting podcast_enabled stays true).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it 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.
Annotations the server declares
- title: Resume the podcast after the automatic pause
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
save_entryKeep one story of a briefing in the reading list (list_saved): a snapshot that survives even if the briefing is deleted.No findings
Why it is in this group
- The name "save_entry" says "save": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- title: Save a story to the reading list
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
save_for_laterPut a link or a note into the read-later queue: whatever lands there is guaranteed to be covered in the next briefing.No findings
Why it is in this group
- The name "save_for_later" says "save": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- title: Save something into the next briefing
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
tune_topicTune 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 enti…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it 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.
Annotations the server declares
- title: Tune one topic
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
unfollow_storyRelease a pinned story by its id (from get_information_diet → followed_stories), so its developments stop getting a dedicated entry.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it 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.
Annotations the server declares
- title: Stop following a story
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
update_information_dietChange 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 int…No findings
Why it is in this group
- The name "update_information_diet" says "update": a word for a change.
Description, as the server wrote it 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).
Annotations the server declares
- title: Change how the briefing is written
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
update_sourceChange 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 o…No findings
Why it is in this group
- The name "update_source" says "update": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- title: Update a topic inbox
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
Only reads 13Claude Code: allow
discover_sourcesDescribe 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 …No findings
Why it is in this group
- The description's first verb is "describe": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: Find sources for a subject
- readOnlyHint: true
- openWorldHint: true
get_accountAccount 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.No findings
Why it is in this group
- The name "get_account" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: Account and usage
- readOnlyHint: true
- openWorldHint: false
get_briefingRead 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 sou…No findings
Why it is in this group
- The name "get_briefing" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: Read the daily briefing
- readOnlyHint: true
- openWorldHint: false
get_episode_transcriptThe full text of a podcast episode, word for word: the script the voices read.No findings
Why it is in this group
- The name "get_episode_transcript" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: Read the episode text
- readOnlyHint: true
- openWorldHint: false
get_information_dietRead 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), vo…No findings
Why it is in this group
- The name "get_information_diet" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: Read the information diet
- readOnlyHint: true
- openWorldHint: false
get_podcast_episodeGet 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 cla…No findings
Why it is in this group
- The name "get_podcast_episode" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: Get the podcast episode
- readOnlyHint: true
- openWorldHint: false
get_sourceInspect 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 de…No findings
Why it is in this group
- The name "get_source" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: Inspect one source
- readOnlyHint: true
- openWorldHint: false
list_briefingsList the user's past daily briefings (most recent first) with date, title, number of stories and whether an episode exists.No findings
Why it is in this group
- The name "list_briefings" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: List past briefings
- readOnlyHint: true
- openWorldHint: false
list_deep_divesList the deep-dive research requests waiting to be covered: topics the user asked the briefing to investigate with fresh web research.No findings
Why it is in this group
- The name "list_deep_dives" says "list": a word for reading.
Description, as the server wrote it List the deep-dive research requests waiting to be covered: topics the user asked the briefing to investigate with fresh web research.
Annotations the server declares
- title: List pending deep dives
- readOnlyHint: true
- openWorldHint: false
list_missing_reportsThe 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…No findings
Why it is in this group
- The name "list_missing_reports" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: List the "why wasn't I told" investigations
- readOnlyHint: true
- openWorldHint: false
list_read_laterList 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 l…No findings
Why it is in this group
- The name "list_read_later" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: List the read-later queue
- readOnlyHint: true
- openWorldHint: false
list_savedThe 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.No findings
Why it is in this group
- The name "list_saved" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: List the reading list
- readOnlyHint: true
- openWorldHint: false
list_sourcesList 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.No findings
Why it is in this group
- The name "list_sources" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: List information sources
- readOnlyHint: true
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.2.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http proofite https://proofite.com/mcp --header 'Authorization: <your-authorization>'Run in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__proofite__get_briefing",
"mcp__proofite__list_briefings",
"mcp__proofite__get_information_diet",
"mcp__proofite__list_sources",
"mcp__proofite__get_source",
"mcp__proofite__get_podcast_episode",
"mcp__proofite__get_episode_transcript",
"mcp__proofite__list_read_later",
"mcp__proofite__list_deep_dives",
"mcp__proofite__list_saved",
"mcp__proofite__get_account",
"mcp__proofite__list_missing_reports",
"mcp__proofite__discover_sources"
],
"ask": [
"mcp__proofite__update_information_diet",
"mcp__proofite__tune_topic",
"mcp__proofite__correct_briefing",
"mcp__proofite__rate_briefing_entry",
"mcp__proofite__unfollow_story",
"mcp__proofite__report_missing_story",
"mcp__proofite__add_proposed_source",
"mcp__proofite__request_deep_dive",
"mcp__proofite__save_for_later",
"mcp__proofite__save_entry",
"mcp__proofite__share_briefing",
"mcp__proofite__generate_podcast_episode",
"mcp__proofite__resume_podcast",
"mcp__proofite__generate_briefing",
"mcp__proofite__create_source",
"mcp__proofite__update_source",
"mcp__proofite__add_feed",
"mcp__proofite__add_web_search",
"mcp__proofite__import_opml"
],
"deny": [
"mcp__proofite__set_learned_profile",
"mcp__proofite__cancel_deep_dive",
"mcp__proofite__unsave_entry",
"mcp__proofite__unshare_briefing",
"mcp__proofite__delete_source",
"mcp__proofite__remove_feed",
"mcp__proofite__remove_web_search",
"mcp__proofite__unsubscribe_newsletter"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as proofite. Review it before you use it.