NewsProbe

Build with NewsProbe — REST + MCP

AI-tagged financial news, sentiment, and trending themes — over a standard REST API and a Model Context Protocol server for Claude Desktop, Cursor, and other agentic clients. Free for hobby use, Pro for production.

Quick start

  1. 1. Sign up (free) and visit /account/api-keys.
  2. 2. Click Generate key. Copy the np_live_… value once — it's never shown again.
  3. 3. Pass it as a Bearer header on every request.
curl https://newsprobe.io/api/v1/me \
  -H "Authorization: Bearer np_live_…"

Authentication

All requests require Authorization: Bearer <key>. Keys are tied to your account; rate limits are per key. Revoking a key (in the dashboard) is immediate — no caching window.

For the MCP endpoint only, you may also pass ?key=np_live_… as a query string — Claude Desktop's connector UI doesn't yet let users set Bearer headers. URL-passed keys can leak in HTTP server logs; prefer the mcp-remote bridge so headers stay out of URLs, and rotate the key if it leaks.

Rate limits

Two windows enforced simultaneously: a per-minute burst guard and a per-day cap. Exceeding either returns 429 with a Retry-After header.

TierPer minutePer dayPro endpoints
Free1050No (403)
Pro6010,000Full access

/api/v1/me is free of quota — call it as often as you need to check usage.

Endpoints

GET/api/v1/meFree

Returns the authenticated user's plan and current quota usage. Does not consume quota itself.

Request

curl https://newsprobe.io/api/v1/me \
  -H "Authorization: Bearer np_live_…"

Response

{
  "ok": true,
  "userId": "…",
  "plan": "free",
  "usage": {
    "minuteCount": 2,
    "minuteLimit": 10,
    "dayCount": 14,
    "dayLimit": 50
  }
}
GET/api/v1/news/searchFree

Recent AI-tagged news for a ticker, ordered by publishedAt desc. Includes per-article sentiment score, AI summary, and catalyst (event) type. Optional ?catalyst= filters to one event type (earnings, m_and_a, fda, guidance, analyst_rating, legal, regulatory, partnership, product, macro, other).

Request

curl "https://newsprobe.io/api/v1/news/search?ticker=AAPL&catalyst=earnings&limit=5" \
  -H "Authorization: Bearer np_live_…"

Response

{
  "ok": true,
  "ticker": "AAPL",
  "since": "2026-04-17T…",
  "catalyst": "earnings",
  "items": [
    { "id": "…", "title": "…", "source": "…", "url": "…",
      "summary": "…", "sentimentScore": 0.62, "catalystType": "earnings",
      "publishedAt": "…", "relevance": 0.9 }
  ]
}
GET/api/v1/news/:idFree

Fetch a single article by UUID, including catalyst type and all tagged tickers.

Request

curl https://newsprobe.io/api/v1/news/123e4567-… \
  -H "Authorization: Bearer np_live_…"

Response

{ "ok": true, "item": { "id": "…", "title": "…", "catalystType": "m_and_a", "tickers": ["AAPL","MSFT"], … } }
GET/api/v1/tickers/searchFree

Autocomplete — resolve "tesla" → TSLA. Returns up to 20 candidate symbols with name + sector.

Request

curl "https://newsprobe.io/api/v1/tickers/search?q=tesla&limit=5" \
  -H "Authorization: Bearer np_live_…"

Response

{ "ok": true, "items": [ { "symbol": "TSLA", "name": "Tesla, Inc.", "sector": "Consumer Cyclical" } ] }
GET/api/v1/tickers/:symbolFree

Metadata for a ticker — name, sector, exchange.

Request

curl https://newsprobe.io/api/v1/tickers/AAPL \
  -H "Authorization: Bearer np_live_…"

Response

{ "ok": true, "ticker": { "symbol": "AAPL", "name": "Apple Inc.", "sector": "Technology", "exchange": "NASDAQ" } }
GET/api/v1/tickers/:symbol/relatedPro

Tickers that have appeared in the same news as this symbol over the last 90 days (with a same-sector bonus). Descriptive of past co-mention only — not price correlation, not a basket to trade.

Request

curl "https://newsprobe.io/api/v1/tickers/NVDA/related?limit=8" \
  -H "Authorization: Bearer np_live_…"

Response

{ "ok": true, "symbol": "NVDA", "items": [ { "symbol": "AMD", "name": "…", "sector": "Technology", "score": 12.5, "coMentionCount": 12, "sharedThemeCount": 0, "sameSector": true } ] }
GET/api/v1/trending/buzzFree

Tickers whose news velocity is surging vs. the 30-day baseline.

Request

curl "https://newsprobe.io/api/v1/trending/buzz?limit=10" \
  -H "Authorization: Bearer np_live_…"

Response

{ "ok": true, "items": [ { "symbol": "…", "count7d": 23, "surgeMultiple": 4.1, "avgSentiment": 0.4 } ] }
GET/api/v1/trending/swingsPro

Tickers with the largest 7-day shifts in news sentiment (in either direction).

Request

curl https://newsprobe.io/api/v1/trending/swings \
  -H "Authorization: Bearer np_live_…"

Response

{ "ok": true, "items": [ … ] }
GET/api/v1/trending/themesPro

Narrative themes (clusters of related stories) gaining momentum.

Request

curl https://newsprobe.io/api/v1/trending/themes \
  -H "Authorization: Bearer np_live_…"

Response

{ "ok": true, "items": [ { "slug": "ai-chips", "title": "AI Chips", "count7d": 41, "surgeMultiple": 2.6 } ] }
GET/api/v1/trending/velocityPro

Tickers ranked by the rate of change of their AI sentiment (velocity) and the change in that rate (acceleration) over the last 7 days. Descriptive of the sentiment series itself, measured after the fact.

Request

curl https://newsprobe.io/api/v1/trending/velocity \
  -H "Authorization: Bearer np_live_…"

Response

{ "ok": true, "items": [ { "symbol": "NVDA", "velocity": 0.012, "acceleration": 0.004, "latestSentiment": 0.55, "count": 31 } ] }
GET/api/v1/watchlistPro

The authenticated user's watchlist tickers.

Request

curl https://newsprobe.io/api/v1/watchlist \
  -H "Authorization: Bearer np_live_…"

Response

{ "ok": true, "items": [ { "ticker": "AAPL", "name": "Apple Inc.", "sector": "Technology", "addedAt": "…" } ] }

MCP server (Claude Desktop, Cursor)

NewsProbe ships a Model Context Protocol server at https://newsprobe.io/api/mcp using Streamable HTTP transport. Same key, same quota, same Pro gating as the REST surface.

Claude Desktop config

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or the equivalent on your platform. Use the mcp-remote bridge so the Bearer header is set without leaking the key in the URL:

{
  "mcpServers": {
    "newsprobe": {
      "command": "npx",
      "args": [
        "-y", "mcp-remote",
        "https://newsprobe.io/api/mcp",
        "--header",
        "Authorization: Bearer np_live_…"
      ]
    }
  }
}

Restart Claude Desktop. You should see newsprobe in the Connectors list with these tools:

  • search_newsRecent news for a ticker (optional catalyst filter)
  • get_newsFetch one article by UUID
  • get_tickerTicker metadata
  • search_tickersResolve names → symbols
  • get_trending_buzzNews-velocity surge list
  • get_trending_swingsLargest 7d sentiment swingsPro
  • get_trending_themesTheme momentum (cluster surge)Pro
  • get_trending_velocitySentiment velocity & accelerationPro
  • get_related_tickersNames often mentioned togetherPro
  • get_watchlistYour watchlist tickersPro

Quick test (curl)

curl -X POST https://newsprobe.io/api/mcp \
  -H "Authorization: Bearer np_live_…" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Errors

StatusBodyMeaning
401{"error":"missing_api_key"}No Bearer header.
401{"error":"invalid_api_key"}Hash mismatch or unknown prefix.
401{"error":"revoked_api_key"}Key was revoked. Generate a new one.
403{"error":"pro_required","upgradeUrl":"/pricing?from=api"}Endpoint requires Pro.
429{"error":"rate_limit_minute","scope":"minute","retryAfter":34}Per-minute burst exceeded.
429{"error":"rate_limit_day","scope":"day","retryAfter":21000}Daily cap exceeded.
400{"error":"invalid_input"}Bad query params.
404{"error":"not_found"}No row for the requested ID.

Status & feedback

The API is in beta. The endpoint shape is stable but minor fields may be added (never removed without a version bump). Send feedback or request endpoints via the feedback form.

Past data is described retrospectively. Nothing returned by this API is investment advice. Disclaimer.