briefing-mcp
This server provides MCP tools to access and render hourly Briefing Service publications: list available briefings, fetch structured briefings, quick summaries, provenance/candidate data, e-ink page images, and custom rendering.
list_briefings– List all 11 briefing keys, names, and prices.get_briefing(key)– Get a full structured briefing: lead story, ranked stories, research, why-it-matters, key points.get_summary(key)– Get free headlines and one-line summaries for a briefing.get_candidates(key)– Get free provenance dump of every candidate story, outlets, selection status, and duplicate collapses.get_page(key, page, wide)– Get a rendered 480x800 1-bit PNG page (or 800x480 wide front page) for e-ink displays.render_briefing(feeds, persona)– Rank and render a custom briefing from your own feeds and persona (requires Reader key with render credits or x402).Served locally over stdio or remotely via streamable HTTP, with free tier, Reader key, and x402 payment options.
briefing-mcp
MCP server for Briefing Service: every hour an LLM editor ranks ~100 feeds per topic (AI news, AI research, frontier labs, markets, US sports, European football, US news, world, crypto & onchain) plus two daily editions (Grants & Funding: newly posted federal funding notices with Deadline / Amount / Eligible on every item; Noticias Lentas: the day's news in simple Spanish at CEFR B1 with a glossary) and publishes the result as structured JSON, a rendered 480x800 e-ink page, a multi-page Morning Paper PDF, and a free provenance dump of every candidate it saw.
This package runs locally over stdio and calls the public REST API. The same tools are served remotely (streamable HTTP, no install) at https://briefing-service.wholemind.workers.dev/mcp.
Install
Claude Desktop / Claude Code / Cursor / any stdio client:
{
"mcpServers": {
"briefings": {
"command": "npx",
"args": ["-y", "briefing-mcp"],
"env": { "BRIEFING_KEY": "" }
}
}
}Claude Code one-liner:
claude mcp add briefings -- npx -y briefing-mcpClaude Desktop, one click: download briefing-mcp-0.1.0.mcpb and open it (MCP bundle; it asks for the optional Reader key).
Related MCP server: mcp-techTrend
Tools
tool | what it returns | cost |
| the 11 keys ( | free |
| lead, ranked stories, research, why-it-matters, key points | 25 free/IP/day, then key or x402 |
| headlines and one-liners | free |
| every candidate this hour: canonical link, outlets, | free |
| 480x800 1-bit PNG (or 800x480 wide front page) | 25 free/IP/day |
Pricing
Free: 25 JSON/page/tool calls per IP per day, plus the summary and candidates endpoints.
Reader key: $9/month, unlimited reads and Morning Paper delivery. Set it as
BRIEFING_KEY. Buy at https://briefing-service.wholemind.workers.dev/billing/checkoutPer call: x402 (USDC on Base) against the remote endpoint.
Docs for agents: https://briefing-service.wholemind.workers.dev/llms.txt
How it works
index.js is the whole server: it registers five tools with @modelcontextprotocol/sdk and answers each by calling the public Briefing Service REST API over HTTPS (GET /v1/briefings/...). It stores nothing, runs no shell commands, and reads only two environment variables (BRIEFING_KEY, BRIEFING_BASE_URL). The Dockerfile builds the same thing; docker run -i speaks MCP over stdio.
Run the smoke test locally:
npm install
node client-test.mjs # lists tools and calls list_briefings, get_summary, get_candidates, get_page, get_briefingWrite-up of the pipeline (collect, entity-overlap dedupe, LLM editor, 1-bit render) and what the first week taught: https://dev.to/jshelley/i-built-an-hourly-newspaper-for-e-ink-and-turned-the-pipeline-into-an-mcp-server-1ebg. Each briefing also has an Atom feed at /v1/briefings/{key}/feed.xml; the Morning Paper PDF carries an outline per story, front-page go-to links and a clickable source URL on every story page.
Environment
BRIEFING_KEY: optional Reader key (sent asAuthorization: Bearer).BRIEFING_BASE_URL: override the API base (default: the public service).
License
MIT
Available Tools
6 toolsget_briefingBInspect
One briefing as structured JSON: lead story, ranked stories and research items with summaries, why-it-matters and key points, plus when it was ranked.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | briefing key from list_briefings, e.g. 'ai' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the return shape and that ranking time is included, but says nothing about read-only safety, error behavior for an unknown key, or whether results are cached/live.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that leads with the output format and resource, with no filler. It is dense but every clause maps to actual content of the response.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema, the description does the necessary work by enumerating the returned fields. The missing piece is any usage routing relative to the four sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and there is a single parameter, so the baseline is 3. The description adds no format or constraint details for 'key' beyond what the schema's own description already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (retrieve) and resource (a single briefing) and enumerates its contents — lead story, ranked stories, research items, ranking timestamp. It implicitly separates itself from list_briefings ('One briefing'), but never names a sibling explicitly, so an agent must still infer the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance at all: nothing says when to call this instead of get_summary, render_briefing, or get_candidates. The only routing hint lives in the schema's parameter description ('briefing key from list_briefings'), not in the tool description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_candidatesBInspect
Free provenance dump: every candidate the editor saw this hour with canonical_link, published time, feed weight, the other outlets that ran the story (also_in), a selected flag, and collapsed duplicates (duplicate_of, dup_rule, dup_score).
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | briefing key, e.g. 'ai' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; it usefully discloses 'Free' (no cost) and the shape of the return payload (canonical_link, feed weight, also_in, duplicate collapsing). It says nothing about auth requirements, rate limits, pagination, or the time window boundary beyond 'this hour', so significant behavioral gaps remain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that leads with the nature of the tool ('Free provenance dump') before the field list. The field enumeration is long but each item earns its place by telling the agent what is returned.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, so the description's enumeration of returned fields is genuinely load-bearing and covers the return shape well. However, it omits how the 'key' scopes the result, result size limits, and when to prefer this over the other briefing-reading siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'key' parameter is documented in the schema as 'briefing key, e.g. ai'. The description adds no parameter detail, which is the expected baseline when the schema already does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource ('every candidate the editor saw this hour') and enumerates the returned fields, so the agent knows exactly what it gets. It is clearly differentiated by topic from the briefing/summary/render siblings, though it never names an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only steering is 'Free provenance dump', which implies a zero-cost inspection path, but there is no statement of when to call this versus get_briefing, get_summary, or the other siblings, and no prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pageAInspect
One rendered page of a briefing as a 480x800 1-bit PNG (page 0 is the front page; story pages follow). Made for e-ink and small displays. wide=true returns the 800x480 landscape front page.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| page | No | ||
| wide | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does disclose concrete behavior: output format (480x800 1-bit PNG), the display constraint it targets (e-ink/small screens), and the wide=true landscape variant. It omits edge-case behavior such as what happens for an out-of-range page (schema caps at 32) or fetch failures, but for a read-only image fetch this is solid disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly packed sentences with no waste; the deliverable (rendered PNG page) is front-loaded, then page semantics, then the wide variant. Nothing is padded or restated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates by specifying the return artifact (size, bit depth, format) plus the page-ordering model. The main gap is the undocumented 'key' parameter and no mention of the page upper bound that lives only in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains two of the three parameters well — page (0 is the front page, story pages follow) and wide (800x480 landscape front page) — adding real meaning beyond the bare types. The required 'key' parameter is never explained at all, so coverage is partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource: it returns one rendered page of a briefing as a 480x800 1-bit PNG, and it clarifies the page-index semantics. It implicitly contrasts with render_briefing (a single page vs. a whole briefing) but never names that sibling, so the differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Made for e-ink and small displays' gives the intended context for using this over alternative rendering tools, which is useful implied usage guidance. However, it never states when to prefer this over render_briefing or when not to use it, nor any prerequisites, so explicit routing guidance is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_summaryBInspect
Free, small: headlines and one-line summaries of a briefing (for widgets and quick reads).
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | briefing key, e.g. 'world' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full burden and does disclose two real behavioral traits: cost ('free') and payload weight ('small'). It stops there, saying nothing about permissions, caching/freshness, or rate limits, so a mutation-free read tool is left partially characterized.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence that front-loads the two most decision-relevant adjectives ('free, small') before the payload description. No filler, though the fragment style is terse even by tool-description standards.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema, it covers what is returned and why you would want it, which is close to sufficient. It omits any relationship to get_briefing/get_page and gives no hint about freshness or where the briefing key originates, so an agent must still guess at wiring.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'key' parameter is documented in the schema (e.g. 'world'), so the baseline of 3 applies. The description adds no extra meaning about valid key values or how keys relate to sibling tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It names the resource and the exact payload ('headlines and one-line summaries of a briefing'), so an agent knows what comes back. It does not name any sibling, but the adjective 'small' implicitly positions it against the fuller get_briefing, so this sits at clear-purpose-but-no-explicit-differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical 'for widgets and quick reads' supplies a usage context, which is more than nothing. However, it never states when to prefer this over get_briefing, get_page or render_briefing, leaving the selection decision to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_briefingsBInspect
List the hourly briefings available (key and name), with prices.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses the shape of returned items (key, name, prices) but says nothing about ordering, pagination, or whether briefings are always available — significant gaps for an unannotated tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the resource and the returned fields front-loaded. Every word earns its place and nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter list tool with no output schema, the description usefully names the returned fields, but it omits ordering, pagination, and availability semantics that an agent would need to call and interpret it well.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. There is nothing for the description to disambiguate on the input side.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description pairs a specific verb ('List') with a specific resource ('hourly briefings') and even names the returned fields (key, name, prices). It is distinguishable from get_briefing/render_briefing by implication, but it never explicitly contrasts itself with those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus get_briefing or render_briefing, and no prerequisites or exclusions are given. The agent must infer routing from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_briefingBInspect
Rank and render a briefing from your own feeds and persona (one editor run; needs a Reader key with render credits, or use x402 on the remote endpoint). Returns JSON and page URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| feeds | Yes | ||
| persona | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the burden. It discloses the billing model ('needs a Reader key with render credits, or use x402 on the remote endpoint') and that it's 'one editor run', which is meaningful auth/cost context. However, it omits rate limits, reversibility, or side-effect details beyond that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences, front-loaded with the primary action. The credit/auth aside is compactly parenthesized. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the core action, inputs, output format, and auth/cost model, but with 0% schema coverage and no output schema, more detail on input constraints and return shape would help. It's adequate but not thorough for a 2-required-param generation tool with usage costs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It mentions 'feeds' and 'persona' as inputs but adds no semantic meaning beyond the schema (no constraints like the 30-feed max or 2000-char persona limit, no expected formats).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Rank and render a briefing') and clarifies the source ('from your own feeds and persona'). It distinguishes itself from siblings like get_briefing/list_briefings by being the generation step, though it doesn't explicitly name those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use guidance or differentiation from get_briefing, list_briefings, or get_summary. The parenthetical hints at cost/credit requirements but doesn't route the agent between alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v0.1.0- First observed
get_briefing - First observed
get_candidates - First observed
get_page - First observed
get_summary - First observed
list_briefings - First observed
render_briefing
TDQS
Scored across 6 tools
Each tool targets a distinct facet: listing, full JSON, lightweight summary, provenance candidates, image pages, and rendering. The only mild overlap is get_summary vs get_briefing, but the descriptions make the size/format tradeoff clear enough to choose correctly.
All six tools follow a strict verb_noun snake_case pattern (list_briefings, get_briefing, get_summary, get_candidates, get_page, render_briefing). No style mixing or vague standalone verbs.
Six tools is well-scoped for a briefing service, with one clear tool per access mode (list, full read, quick summary, provenance, visual page, render). Nothing feels padded or missing from the count.
The surface covers discovery, full and lightweight retrieval, provenance, paginated rendering, and custom rendering. Minor gaps exist (no date-range search or explicit pagination for list_briefings, and only passive retrieval of pages), but core workflows are covered.
Maintenance
Related MCP Connectors
AI Reasoning Cache & Consensus Layer with 11 MCP tools via Streamable HTTP.
Read-only MCP server that answers questions about turva.dev from its published data. Five tools return JSON: the service catalog with prices, contact and operator details, engagement principles and dated agent-readiness and security evidence with verification links. Connect over Streamable HTTP. You need no API key. The server does not scan other websites or run audits.
Hosted RoboWrite MCP server: recover briefs and drafts, run the reviewed URL-to-Markdown workflow.
- UnifAPIOAuthcom.unifapi
Hosted MCP server for live public-data APIs and Skills for AI agents.
Related MCP Servers
- AlicenseBqualityCmaintenanceAI-powered reading triage MCP. 26 tools with a 24h burn timer — search, triage, burn, vault, and analyze your saved articles. Works with Claude, Cursor, Windsurf. Stdio + HTTPS transports.2691 npm1MIT
- AlicenseAqualityCmaintenanceMCP server pulling academic publications (arXiv, PubMed, HF Daily Papers), trending code (GitHub, HF Hub), and medical-device regulatory data (FDA 510(k), recalls) into newspaper-style briefings. Per-category round-robin, weighted configuration, sandbox-safe Python launcher.166MIT
- AlicenseAqualityDmaintenanceCurated audio-news MCP server. Search trending articles, fetch narrated audio, subscribe topic feeds. OAuth 2.1 + RFC 7591 DCR. Free tier; premium briefings via x402 over stablecoin settlement.716 npm2MIT

subcue-mcpofficial
AlicenseNot gradedqualityBmaintenancePublic read-only MCP server for SubcueAI, the AI interview assistant for macOS and Windows. Exposes live pricing and the latest desktop version as tools, plus product overview and FAQ resources. Includes a zero-dependency stdio bridge and Dockerfile.1MIT