briefing-mcp
Access hourly LLM-ranked briefings (AI, frontier labs, markets, sports, news, world) via MCP tools over local stdio or remote HTTP.
List available briefings with their keys, names, and prices.
Fetch a full briefing as structured JSON: lead story, ranked stories, research, why-it-matters, key points, and ranking time.
Get free headlines and one-line summaries for quick reads or widgets.
Inspect full provenance: every candidate seen this hour, with canonical link, outlets, feed weight, selected flag, and collapsed duplicates.
Retrieve rendered 480x800 1-bit PNG pages (or 800x480 wide front page) designed for e-ink displays.
Rank and render your own feeds and persona into a custom briefing using a Reader key or x402 payment.
Run locally with npx/Docker via stdio, or use the public remote MCP endpoint; optionally set BRIEFING_KEY for unlimited reads and custom renders.
briefing-mcp
MCP server for Briefing Service: every hour an LLM editor ranks ~100 feeds per topic (AI, frontier labs, markets, US sports, European football, US news, world) 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", "github:jshelley/briefing-mcp"],
"env": { "BRIEFING_KEY": "" }
}
}
}Claude Code one-liner:
claude mcp add briefings -- npx -y github:jshelley/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 |
| keys, names and prices | 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 |
| rank and render your own feeds | Reader key or x402 |
Pricing
Free: 25 JSON/page/tool calls per IP per day, plus the summary and candidates endpoints.
Reader key: $9/month, unlimited reads, Morning Paper delivery, 10 custom renders/day. 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 six tools with @modelcontextprotocol/sdk and answers each by calling the public Briefing Service REST API over HTTPS (GET /v1/briefings/..., POST /v1/render). 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_briefingEnvironment
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
Read-only MCP server for turva.dev's published service catalog, pricing and contact details. Five tools return JSON, including dated agent-readiness and security evidence with verification links. Connect over Streamable HTTP without an API key. The server answers questions about turva.dev and does not scan other websites or run audits.
AI Reasoning Cache & Consensus Layer with 11 MCP tools via Streamable HTTP.
- UnifAPIOAuthcom.unifapi
Hosted MCP server for live public-data APIs and Skills for AI agents.
Hosted NeuroDock — stateless communication and planning tools over OAuth-secured Streamable HTTP.
Related MCP Servers
- AlicenseBqualityBmaintenanceAI-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.261081MIT
- AlicenseAqualityDmaintenanceMCP 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.165MIT
- AlicenseAqualityCmaintenanceCurated 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.7162MIT

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