Urgent.News

What's breaking now, across thousands of outlets.

Tech

I built an hourly newspaper for e-ink (and turned the pipeline into an MCP server)

Every hour, a Lambda pulls about 120 items from ~100 RSS feeds, asks a small model to act as an editor, and typesets the result as a 480x800 one-bit page for the Xteink X4 e-ink reader on my desk. The same pipeline now produces a multi-page "Morning Paper" PDF for reMarkable and Kindle, a TRMNL plugin, and an MCP server that agents can call. This is what it does, what broke, and what I learned…

Every hour, a Lambda processes around 120 items from approximately 100 RSS feeds using a small model to act as an editor. The resulting one-bit page for the e-ink reader on the desk is typed out. This process is now producing multi-page PDFs for various platforms, a TRMNL plugin, and an MCP server that can be called by agents. This system is described below, along with what went wrong and what was learned about news for agents.

The pipeline starts by collecting data from over 100 feeds per briefing, which include various topics such as AI, world news, US news, finance, sports, soccer, and frontier-lab blogs. Each item retains its ID, source, title, link, canonical link (with UTMs and other parameters removed), published time, a 320-character summary, and a per-feed weight.

Duplicate items are collapsed based on their canonical URL, with no merges measured on 480 live candidates and only five false pairs at a 0.2 threshold. Headline entity overlap, including adjacent capitalized words, punctuation, hyphens, and Title-Case outlets, is used to merge similar headlines.

Claude Haiku 4.5 on Bedrock then takes the candidate list, including ID, source, age, title, and summary, and a persona, ranking the items with a lead, N stories, a research section, one-sentence summaries, a three-to-five-sentence detail passage, a why-it-matters line, and key points. Facts must be derived from the candidate text, and if the LLM call fails, a non-LLM fallback ranker is used to ensure the device never shows a blank page.

The page is then rendered using Pillow to create a masthead, lead, numbered stories, and a research strip in 480x800 resolution, dithered to 1-bit and written as BMPs for the reader's firmware to page through. Additionally, a wide 800x480 variant is generated for TRMNL-class panels and a PDF for e-readers. The pages are published on S3 + CloudFront, with a manifest that changes only when the editor's picks change, ensuring the device doesn't download unchanged pages.

The system was surprised by the editor's role as the product, with the rendering being a fun aspect and the lead plus why it matters being the main focus for users. To accommodate agents, the MCP server was exposed as an API, resulting in steady traffic not long after listing it in the official registry, Glama, and Smithery. Thirteen MCP calls were made in a day, with zero human interactions. If you are building a system for agents, expect the first wave to be bots evaluating the system.

E-ink users prefer files rather than APIs, so reMarkable and Kindle owners can access the morning's PDF in their library each day (rmapi push, Send-to-Kindle email), which is free for the first ten users. You can try it out by reading the front pages and JSON, with 25 API/MCP calls per IP per day available at https://briefing-service.wholemind.workers.dev.

Provenance work is available at https://briefing-service.wholemind.workers.dev/v1/briefings/ai/candidates, free with no key required. Agents can access the MCP endpoint at https://briefing-service.wholemind.workers.dev/mcp (streamable HTTP), with tools for listing briefings, getting briefings, getting pages, and rendering briefings.

The system can also be installed as npx -y github:jshelley/briefing-mcp. For paid users, there is a $9/month Reader key, x402 per call (USDC on Base), and $49/month for a Team Briefing over your own feeds. Feedback is welcome on what a news tool should return to your agent: full JSON, a short digest, or the rendered page.

Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.

Read the original at dev.to →

More in Tech

Oracle Integration Cloud Integration Patterns

Twelve reusable patterns, real-world examples, and implementation guidance for Oracle Integration 3 About this field guide I wrote this guide to connect Oracle Integration features with the…

  • Oracle Integration Cloud provides twelve practical integration patterns
  • Synchronous request-reply pattern used for immediate caller response
  • API facade and protocol mediation hides protocol differences

More from Saturday 12 September →