Newsline MCP Server
Enables fetching of current headlines from CBC News, with filtering by bias and keyword search.
Enables fetching of current headlines from CNN, with filtering by bias and keyword search.
Enables fetching of current headlines from Fox News, with filtering by bias and keyword search.
Enables fetching of current headlines from NBC News, with filtering by bias and keyword search.
Enables fetching of current headlines from The Guardian, with filtering by bias and keyword search.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Newsline MCP ServerWhat are the biggest blindspot stories right now?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Sidewise
What is the other side reading?
Sidewise pulls 16 feeds from 14 newsrooms across the spectrum, tags each left, center or right, and flags the blindspots: stories only one side is covering. Free. No account, no key, no limit.
Two feeds from one newsroom count as one voice. A publisher can't run an opinion section next to its main feed and call that two sources.
Four ways in: a web reader, native iPhone, iPad and Mac apps, a JSON API, and an MCP server.
Apps
SwiftUI, one codebase for iOS and macOS, in ios/. It reads the same public API. No account,
no tracking. Saved stories and the feed cache stay on the device.
cd ios && xcodegen generate
xcodebuild -scheme Sidewise-iOS -destination 'generic/platform=iOS Simulator' buildRelated MCP server: News Fact-Checker MCP Server
MCP
claude mcp add --transport http sidewise https://sidewise.heyitsmejosh.com/mcpTool | Params | Returns |
|
| Current headlines, flat or clustered by story |
|
| Only stories covered by a single political side |
|
| One story as each side headlines it, plus the words unique to each |
| : | Which feeds answered, and whether the data served is complete or a stale fallback |
Call get_feed_health before you trust an empty or one-sided result. An outage and a quiet
news day look the same otherwise.
Stateless streamable HTTP, no auth. Works with any MCP client: Claude Desktop, Claude Code, Cursor.
API
GET https://sidewise.heyitsmejosh.com/api/stories. Every parameter is optional.
Param | Values | Default |
|
|
|
| any outlet name, e.g. | all |
|
| all |
|
| off |
|
| off |
|
| off |
| substring match on headline and summary text | none |
| 1–200 | 60 clusters / 120 headlines |
Two more endpoints. GET /api/health reports every feed and answers 503 when more than
half are down, so you can point a monitor at it as is. GET /api/sources lists each feed with
its bias, its side and its parent newsroom.
curl 'https://sidewise.heyitsmejosh.com/api/stories?view=stories&blindspot=true'
curl 'https://sidewise.heyitsmejosh.com/api/stories?view=latest&outlet=Hacker%20News&limit=10'{
"updated": 1754700000000,
"stories": [
{
"title": "Fed holds rates steady",
"blindspot": false,
"sources": [
{ "title": "Fed holds rates steady", "link": "https://…", "outlet": "NPR", "bias": -1 },
{ "title": "Fed refuses to cut rates", "link": "https://…", "outlet": "Fox News", "bias": 2 }
]
}
],
"latest": [
{ "title": "Fed holds rates steady", "link": "https://…", "outlet": "NPR", "bias": -1, "ts": 1754699000000 }
]
}CORS is open. Feeds are re-pulled at most every 2 minutes. Responses are no-store (see below). ts is epoch ms, or 0 when the feed gave no date. Those sort to the bottom. Full spec: openapi.yaml · orientation for agents: llms.txt.
How it works
One Cloudflare Worker (worker.js) polls every feed in src/feeds.js and serves the page,
the API and MCP from one pooled pull:
latest: every headline, newest first.stories: headlines clustered by title-keyword overlap. Each source tagged left, center or right. One-sided clusters flaggedblindspot.
Only the feed pull is cached, under one constant key. Filtering happens per request in shape(), after it, and responses go out no-store. The zone's CDN cache ignores query strings, so caching them would hand one caller's ?outlet= to everyone. Nothing is refetched either way. Only the cheap filtering runs again.
Clusters are filtered after clustering. The flat feed is filtered before its 120-item cap. Both orders matter. Narrow the input first and you lose the cross-outlet comparison. Filter after the cap and small outlets vanish.
Bias scores
Each source has a score from -2 (left) to +2 (right). 0 is center, or non-political for tech outlets like Hacker News and Daring Fireball. I assigned these by hand in FEEDS. They are a rough lean, not a rating.
CBC · The Guardian · NPR · BBC · Global News · National Post · Fox News · NY Post · Daily Wire · Hacker News · Daring Fireball · NBC News · Wall Street Journal · NY Post Opinion · Vancouver Sun · The Province
Add one by appending [outlet, bias, url] to FEEDS at the top of worker.js. Any RSS 2.0 or Atom feed works.
Develop
npm test # 95 checks, no network
npm run feeds # check every feed for freshness, not just a 200
npm run deploy # wrangler deployRun npm run feeds after touching FEEDS. It checks recency, the only way to catch a
zombie: a feed that still answers 200 with clean XML whose newest item is two years old. CNN
did that for three years. An item count never noticed.
Cloudflare Workers plus Static Assets. One deploy serves the page, /api/stories and /mcp.
Tests
test/ covers the four modules in src/ with no network and no Worker runtime:
File | What it holds down |
| Entity decoding, double-escaped summaries, CDATA and Atom shapes, and the rejection of |
| Clustering, the newsroom-not-feed counting rule behind blindspots, the developing window, and filter-after-cluster ordering |
| Feed failure reporting, timeouts, the degraded/stale fallback, and the rule that a bad pull never overwrites the last good one |
| Query parsing and clamping, and that everything under |
| JSON-RPC framing, malformed input, and each tool's contract |
Security: see SECURITY.md.
License
MIT 2026, Joshua Trommel. Headlines and links belong to their publishers. Sidewise stores nothing and links out to the original.
Whitepaper
API and agent tools
REST (/api/*), the POST /mcp server, and the reader's in-page WebMCP tools
(public/webmcp.js) expose the same four operations. They are tested against each other so
they can't drift. See docs/API.md.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Real-time news and trending topics from major sources
Live world news deduplicated into story events, with corroboration counts and source links.
51Cross-source news (AP, BBC, NPR, HN, Google News) with topic filtering and dedup.
Neutral, bias-scored news for AI agents: compare left/right media-bias framing, fact-check receipts.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAggregates news from 7 APIs and unlimited RSS feeds with AI-powered bias removal and synthesis. Provides over 7,300 free daily requests with conversation-aware caching and 25 comprehensive news analysis tools.1-
- FlicenseNot gradedqualityDmaintenanceEnables fact-checking of news headlines using Google Gemini AI and web search verification, and retrieves trending news topics from RSS feeds with comprehensive multi-source analysis.1-
- AlicenseAqualityBmaintenanceReal-time news with bias scoring, live market data, and AI-powered options pricing. 9 tools across news intelligence, media bias analysis, stock/crypto data, and meme search.9511MIT
- AlicenseNot gradedqualityCmaintenanceEnables browsing and fetching curated politics and policy news feeds from various sources, with options to filter by category or keyword.16MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/nulljosh/sidewise'
If you have feedback or need assistance with the MCP directory API, please join our Discord server