News & Sentiment
News intelligence over free public feeds: headline search (GDELT + RSS), full article extraction, aggregate sentiment, and per-day entity timelines. Built for brand monitoring, press tracking, and market-mood analysis.
What it scrapesโ
| Source | Data |
|---|---|
| GDELT + RSS feeds | Headlines matching a query, with source, published date, and URL |
| Pry scraper (article extraction) | Full article text, summary, and metadata from a URL |
| GDELT tone analysis | Sentiment aggregates โ avg tone, positive/negative percentage, timeline |
Endpointsโ
Router: routers/news_data.py ยท tag: News Data
| Method | Path | Summary |
|---|---|---|
| GET | /v1/news/headlines | Recent headlines matching a query (timeframe e.g. 24h, 7d) |
| GET | /v1/news/article | Extract a full article by URL (text + summary + metadata) |
| GET | /v1/news/sentiment | Aggregate sentiment for a query (tone + keyword fallback) |
| GET | /v1/news/timeline | Per-day entity timeline with tone and top sources |
GET /v1/news/headlinesโ
Query params: query (required, e.g. crypto regulation), limit
(1โ250, default 20), timeframe (GDELT timespan, e.g. 24h, 7d).
curl -X GET "http://localhost:8005/v1/news/headlines?query=crypto%20regulation&limit=5" \
-H "Authorization: Bearer <key>"
Response (200):
{
"success": true,
"query": "crypto regulation",
"limit": 5,
"timeframe": "24h",
"data": [
{
"title": "New EU rules target unbacked crypto assets",
"source": "Reuters",
"published_at": "2026-08-16T09:30:00Z",
"url": "https://example.com/articles/eu-crypto-rules"
}
]
}
GET /v1/news/articleโ
Query params: url (required, article URL).
curl -X GET "http://localhost:8005/v1/news/article?url=https%3A%2F%2Fexample.com%2Farticles%2Feu-crypto-rules" \
-H "Authorization: Bearer <key>"
Response (200):
{
"success": true,
"url": "https://example.com/articles/eu-crypto-rules",
"data": {
"title": "New EU rules target unbacked crypto assets",
"text": "European regulators published draft rules on Monday...",
"summary": "EU publishes draft rules for unbacked crypto assets.",
"published_at": "2026-08-16T09:30:00Z",
"author": "Jane Doe",
"source": "example.com"
}
}
GET /v1/news/sentimentโ
Query params: query (required), timeframe (e.g. 24h, 7d), limit
(1โ250, default 20).
curl -X GET "http://localhost:8005/v1/news/sentiment?query=Bitcoin%20ETF&timeframe=7d" \
-H "Authorization: Bearer <key>"
Response (200):
{
"success": true,
"query": "Bitcoin ETF",
"timeframe": "7d",
"data": {
"avg_tone": 2.4,
"positive_pct": 58.0,
"negative_pct": 21.0,
"neutral_pct": 21.0,
"articles_analyzed": 120,
"timeline": [
{"date": "2026-08-15", "avg_tone": 1.8, "articles": 18}
]
}
}
GET /v1/news/timelineโ
Query params: entity (required, e.g. OpenAI), timeframe, limit.
curl -X GET "http://localhost:8005/v1/news/timeline?entity=OpenAI&timeframe=7d" \
-H "Authorization: Bearer <key>"
Response (200):
{
"success": true,
"entity": "OpenAI",
"data": [
{
"date": "2026-08-16",
"avg_tone": -0.6,
"article_count": 42,
"top_sources": ["TechCrunch", "The Verge", "Bloomberg"]
}
]
}
MCP toolsโ
The Pry MCP server exposes the news lane as two tools (71 tools total):
| Tool | Backing endpoint |
|---|---|
pry_news | GET /v1/news/headlines |
pry_sentiment | GET /v1/news/sentiment |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "pry_news",
"arguments": {"query": "crypto regulation", "language": "en", "limit": 5}
}
}
Both tools are x402 pay-per-call at $0.002/call (see /v1/x402/pricing).
Who uses thisโ
- Brand monitoring โ track press mentions of a company or product.
- Market-mood analysis โ
pry_sentimentbefore a trade or campaign. - Research pipelines โ headline + article extraction for dataset building.
- Competitor tracking โ entity timelines for narrative shifts.
Next stepsโ
- App Store โ track app press alongside store data
- MCP Integration โ run the tools from Claude / Cursor / Hermes