News Brief with Sources
Topic in, deduplicated story clusters out: headline, every outlet URL and first-seen time, from GDELT and publisher RSS. Headlines and links only, no article text. Not charged when nothing matches or sources fail.
Price: $0.0101 per call, USDC on Base (x402). Also available as the MCP tool news_brief at https://grokzilla.shop/mcp.
Topic in, deduplicated story clusters out. Sources: the GDELT 2.0 DOC API and a fixed list of publisher RSS feeds (BBC, NPR, The Guardian, Al Jazeera, France 24, Sky News, CBS, ABC, The New York Times, TechCrunch, Ars Technica, The Verge, Wired, Engadget, CoinDesk, Cointelegraph, Decrypt). Headlines and links only: no article text, description or image is republished. Open the outlet URL for the story.
Headlines are grouped when their words overlap (Jaccard ≥ 0.45). Clusters with more outlets come first. GDELT rate-limits shared IPs; when it does not answer, results come from RSS only and warnings says so.
Call
POST /api/skills/news-brief
{"topic": "bitcoin", "timespan": "3d", "max_clusters": 2}
topic(required): stringtimespan(optional, default"24h"): stringmax_clusters(optional, default10): integerrequest_id(optional): Optional idempotency key. Echoed back; a credit-pack redemption with the same request_id and body is charged once.
Not charged
Every non-200 has charged: false and is never settled.
422 invalid_params/400 invalid_params: body fails the schema (checked before the 402).400before payment: topic shorter than 2 characters, only stopwords, or unsupported characters.422 no_results: nothing matched in the timespan.503 sources_unavailable: GDELT and every feed failed.
Response (paid 200)
Same envelope on every data service: ok, service, version, summary, data, confidence, sources, generated_at, data_as_of, charged, warnings, next.
{
"ok": true,
"skill": "news_brief",
"service": "news_brief",
"version": "1.0.0",
"summary": "2 stories on 'bitcoin'; top: Don’t Let a Crypto Inheritance Get Stuck on the Blockchain",
"data": {
"topic": "bitcoin",
"terms": [
"bitcoin"
],
"timespan": "3d",
"clusters": [
{
"headline": "Don’t Let a Crypto Inheritance Get Stuck on the Blockchain",
"first_seen": "2026-10-17T10:30:00Z",
"latest": "2026-10-17T10:30:00Z",
"outlet_count": 1,
"outlets": [
{
"outlet": "Wired",
"headline": "Don’t Let a Crypto Inheritance Get Stuck on the Blockchain",
"url": "https://www.wired.com/story/crypto-inheritance-how-to/",
"seen_at": "2026-10-17T10:30:00Z",
"via": "rss"
}
]
},
{
"headline": "‘Wow, it’s a real discovery’: Claude cracks a 25-year NSA number mystery",
"first_seen": "2026-10-17T06:39:48Z",
"latest": "2026-10-17T06:39:48Z",
"outlet_count": 1,
"outlets": [
{
"outlet": "CoinDesk",
"headline": "‘Wow, it’s a real discovery’: Claude cracks a 25-year NSA number mystery",
"url": "https://www.coindesk.com/tech/2026/10/17/wow-it-s-a-real-discovery-claude-cracks-a-25-year-nsa-number-mystery",
"seen_at": "2026-10-17T06:39:48Z",
"via": "rss"
}
]
}
],
"cluster_count": 2,
"headline_count": 2,
"searched": {
"gdelt": false,
"feeds_ok": 22,
"feeds_total": 22
}
},
"confidence": 0.7,
"sources": [
{
"name": "Wired",
"url": "https://www.wired.com/feed/rss",
"fetched_at": "2026-10-17T11:12:49Z"
},
{
"name": "CoinDesk",
"url": "https://www.coindesk.com/arc/outboundfeeds/rss/",
"fetched_at": "2026-10-17T11:12:49Z"
}
],
"generated_at": "2026-10-17T11:12:56Z",
"data_as_of": "2026-10-17T11:12:49Z",
"charged": true,
"warnings": [
"headlines and links only; open the outlet URL for the article",
"GDELT did not answer in time (it rate-limits shared IPs); results come from publisher RSS only"
],
"next": [
"url_to_markdown"
],
"note": "Headlines and links only. No article text is republished."
}