Skip to main content
Glama

briefing-mcp

Listed on mcpservers.org briefing-mcp on Glama

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

Claude 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

list_briefings

keys, names and prices

free

get_briefing(key)

lead, ranked stories, research, why-it-matters, key points

25 free/IP/day, then key or x402

get_summary(key)

headlines and one-liners

free

get_candidates(key)

every candidate this hour: canonical link, outlets, selected, collapsed duplicates with duplicate_of

free

get_page(key, page, wide)

480x800 1-bit PNG (or 800x480 wide front page)

25 free/IP/day

render_briefing(feeds, persona)

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/checkout

  • Per 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_briefing

Environment

  • BRIEFING_KEY: optional Reader key (sent as Authorization: Bearer).

  • BRIEFING_BASE_URL: override the API base (default: the public service).

License

MIT

Available Tools

6 tools
get_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesbriefing key from list_briefings, e.g. 'ai'

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesbriefing key, e.g. 'ai'

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
pageNo
wideNo

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesbriefing key, e.g. 'world'

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
feedsYes
personaYes

TDQS

B3/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

  1. 6 tool updatesv0.1.0
    • First observedget_briefing
    • First observedget_candidates
    • First observedget_page
    • First observedget_summary
    • First observedlist_briefings
    • First observedrender_briefing

TDQS

A3.6/5.0

Scored across 6 tools

Disambiguation4/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    B
    maintenance
    AI-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.
    26
    108
    1
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    MCP 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.
    16
    5
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Curated 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.
    7
    16
    2
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Public 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.
    1
    MIT