Skip to main content

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โ€‹

SourceData
GDELT + RSS feedsHeadlines matching a query, with source, published date, and URL
Pry scraper (article extraction)Full article text, summary, and metadata from a URL
GDELT tone analysisSentiment aggregates โ€” avg tone, positive/negative percentage, timeline

Endpointsโ€‹

Router: routers/news_data.py ยท tag: News Data

MethodPathSummary
GET/v1/news/headlinesRecent headlines matching a query (timeframe e.g. 24h, 7d)
GET/v1/news/articleExtract a full article by URL (text + summary + metadata)
GET/v1/news/sentimentAggregate sentiment for a query (tone + keyword fallback)
GET/v1/news/timelinePer-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):

ToolBacking endpoint
pry_newsGET /v1/news/headlines
pry_sentimentGET /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_sentiment before 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