News for AI agents.

Plug AlphAI into ChatGPT, Claude, Gemini, Cursor, VS Code, Windsurf, or any other client that speaks MCP over Streamable HTTP. Setup is one OAuth login, about a minute. After that your agent can search scored, ticker-linked news, pull insider filings, and triage what's breaking in real time. Behind the tools we scan 10,000+ articles from 6,900+ sources every day, score them 1–10, and let fewer than one in five into the feed.

Install

Settings → Connectors → Add custom connector

  Name: AlphAI
  URL:  https://mcp.alphai.io/mcp

Claude Desktop opens your browser to log in to AlphAI and approve
the connection. After that, the AlphAI tools appear in the tool
list automatically. No API key to copy — auth uses OAuth 2.1.

Check the callback host or app scheme and full callback address on the approval page. App names are supplied by the client and are not verified by AlphAI. Approve only a connection you started.

A connection can read news, market data and your saved watchlist. On Basic or Pro it can also create, change and disable your alerts, including after a plan upgrade. The tools.read scope does not restrict access to read-only tools. Review registered callbacks under Account → MCP connections.

Disconnect blocks the app's existing access and refresh tokens, including other sessions of that connection. Work already in progress may finish. To connect again, approve a fresh connection from the app. Other apps and API keys are unaffected.

Building an OAuth client? Refresh one token at a time and save its replacement before the next refresh. Reusing a refresh token ends that connection. If you receive invalid_grant, restart authorization instead of retrying the same credential.

Connecting opens a browser window to authorize (OAuth 2.1); approve it while the client is still running. If the callback tab shows “This site can't be reached”, the client that started the login was restarted mid-flow. Toggle the server off and on (or reconnect) to get a fresh login window, then approve promptly.

Using the mcp-remote bridge? Stale state lives in ~/.mcp-auth; delete that directory and reconnect to restart the flow clean. And a bare curl of the server URL answering 401 is expected: that response is what tells your client to start OAuth.

Running headless, or the browser dance keeps failing? Use an API key instead: create one under Account and send it as Authorization: Bearer ak_live_... (see the “API key (headless)” tab above). No OAuth involved.

Drop-in skills for Claude Code.

Skip the prompting. alphai-claude-skills is an open-source pack of Claude Code skills that wrap these tools into ready-made workflows: a one-ticker brief, a market pulse, an insider-activity scan, a two-ticker read-across, and alert management. Copy them into ~/.claude/skills/ and ask in plain English.

# 1. connect the MCP
claude mcp add --transport http alphai https://mcp.alphai.io/mcp

# 2. add the skills
git clone https://github.com/makeev/alphai-claude-skills
cp -r alphai-claude-skills/skills/* ~/.claude/skills/

Tools

alphai_radar
Rank unusual news activity across the market or your saved watchlist, with story counts, expected activity, news tone and supporting headlines. Choose window=4h or 24h (default), scope=market or watchlist, exact comma-separated tickers, market, sentiment and sort/order. limit accepts 1–100 on every plan (default 20). Free adds 60 minutes, Basic 15 minutes, Pro no added delay; the server selects the whole snapshot, including headlines. Snapshots refresh every minute; collection and enrichment add processing time. Read as_of and freshness, then follow next_cursor with identical filters and limit. On snapshot_expired, restart without cursor. Descriptive scores with unverified collection coverage, not price forecasts or confirmed alerts. Missing metrics include a reason. Read news evidence UIDs with alphai_article. event_context adds separate 7-day 8-K/selected earnings 6-K filings and 30-day open-market insider clusters by latest SEC filing time, shared by instruments with the same SEC CIK. Check top-level event_context status and as_of, then each results[].event_context status: null is unavailable, while zero means no eligible stored records. Lists show up to three filings and three clusters, with SEC links and independent buyer counts. Filings add news_title, news_published and has_article alongside news_uid; when has_article is true, open news_uid with alphai_article or build its AlphAI URL. Availability is frozen at the context cutoff; older snapshots default to false with null title/publication metadata. sec_url remains available. Context follows the same snapshot delay and cursor; news scores and row eligibility stay unchanged. Available does not certify complete SEC coverage.
alphai_watchlist_brief
Your saved watchlist in one call: news grouped by story, a separate SEC filings section and next confirmed earnings dates. Add tickers at /account/watchlist, then call with hours=24 (1–168) and limit=20 (1–20 per section). Shared events name every matched ticker. The newest 500 matching articles per section are grouped and ranked by relevance, novelty and recency; events_truncated and filings_truncated flag omitted coverage. This is a publication-window snapshot, not a changes cursor. Unknown symbols are explicit; missing report dates mean no confirmed date on file. Available on every tier.
alphai_news_search
Query the news feed with structured filters — tickers, category, date range, relevance — or with a free-text query, which is a full-text search over each article's title, summary and extracted entity names: bare words are all required, "a phrase" must appear in order, -word excludes, OR separates alternatives, one typo is tolerated from five letters, and results come back ranked with newest first among equal matches, bounded to the best 200. query_interpretation.search reports the mode: strict when every word matched, broadened when the strict pass found too little and only rows holding at least two of the words were kept (each item then carries search_match.terms_matched; read them as leads), no_match when nothing in your tier's archive window carried the words. Explicit tickers and category stay hard filters, and query cannot be combined with sort="ingested". limit is an alias for page_size. Set collapse_stories=true to get one row per story instead of every article about it (syndicated reprints and independent write-ups of one event group together), with sources_count: how many distinct outlets carried it, usually 1 because most stories run at a single outlet. For repeated polling, sort="ingested" returns rows in the order they entered the feed: next_cursor is always returned, and an empty items list means you are caught up. Every item carries created_at, the moment AlphAI received the article, next to its time_published. source_type narrows the feed to an ingest source (gdelt for press, sec_form4, sec_form8k, sec_form6k) and item narrows to 8-K filings carrying one item code, e.g. item="5.02" for officer changes; category already covers 2.02 (earnings) and 2.01 (mergers_acquisitions). Every 8-K item carries a filing block: items, primary_item, accession_number, filed_at, event_date and exhibit_url. How the query was read comes back in query_interpretation: mode searched, the search block above, the tickers and category the words also read as (each ticker with its registered name) for reference only, never as filters, and a note.
alphai_ticker_news
Latest news for a specific ticker, newest first; insider filings included by default. Takes the same min_relevance floor as alphai_news_search, so you can ask for one ticker's material news only. Paginates with a cursor; sort="ingested" flips it to delta polling (only rows added since your cursor). collapse_stories=true collapses reprints and other articles covering the same event. Delisted symbols serve their history with delisted=true, and renamed_to points to the ticker the company continues under. Any share class of an issuer serves rows tagged with its other listed classes (GOOGL includes GOOG). Bare crypto names resolve to their -USD form (DOGE serves Dogecoin).
alphai_trending
Top stories of the last 48 hours by relevance score decayed by article age, so fresh stories lead, with at most two stories per ticker. Reprints and independent write-ups collapsed to one representative per story, with story_id (the story root's uid, one stable id for the story across the news tools), sources_count and sources on each item; pass dedupe=false to keep every article instead.
alphai_actionable_now
Breaking news from the last few hours, gated to high-actionability "act on this today" items for triage loops — widen the floor with min_actionability="medium" to include position-shaping stories. Collapsed items carry the same story fields as alphai_trending: story_id, sources_count and sources.
alphai_macro
The market-wide macro tape from the last N hours: central-bank decisions, inflation and jobs prints, commodities and geopolitics in one call, ordered novelty-first so on a release day the release itself leads and the commentary follows. Macro rows are market-wide events and mostly carry no tickers; each item still carries the full analysis inline. Reprints collapse by story, and collapsed items carry story_id, sources_count and sources. Narrow with categories, or raise min_relevance to 7 to keep roughly the release-day events. Next to the stories, releases lists the scheduled US releases of the same window, newest first, each with its coverage, then the ones due in the next 24 hours: an elapsed release with empty coverage has come out and the stories are still arriving.
alphai_calendar
The forward half of the macro loop: scheduled US releases from the official agency calendars — FOMC decisions (with SEP and press-conference markers) and minutes, CPI, PPI, the jobs report, GDP estimates, PCE, retail sales, weekly jobless claims and JOLTS. Each occurrence has a stable uid that survives reschedules, a phase (upcoming or elapsed; elapsed means the scheduled moment passed, check schedule_status for postponements) and, on elapsed occurrences, coverage: the top feed stories about that release, ready to expand via alphai_article. days_back counts from today's UTC midnight, so the default still includes today's already-released prints. Ask it what is coming this week, then read alphai_macro for what a release meant.
alphai_insider_news
Insider-transaction news: SEC Form 4 trades by directors, officers and 10%+ owners, filterable by ticker, date, minimum relevance, and 10b5-1 status (is_10b5_1=false leaves the discretionary trades, dropping sales that ran on a plan scheduled months earlier). Items include structured trade fields: side, shares, average price, total value, the reporting owner, and when the filing landed (filed_at, plus late_filing for the ones that missed the two business day deadline). sort="ingested" flips it to delta polling, which is the mode to use for watching new filings: a Form 4 is filed days after the trade it reports, so a new event often enters the feed below the newest page.
alphai_insider_clusters
Issuers where several different insiders bought on the open market in one run of purchases: Form 4 purchase dates chained while at most 10 days apart, an episode capped at 30 days. Every purchase is examined before a buyer counts. An IPO or PIPE allocation (by its price shape, or by a footnote in the filing itself saying the shares came from the issuer, an offering or a negotiated block), ESPP and DRIP lots, director-plan purchases, units and note exchanges without a price, and the same transaction reported through two owners are labeled per buyer (role: independent, plan_like, unpriced, duplicate_of) and left out of the default open_market list; pattern=plan_or_offering, holders_only or all shows them. days is measured on known_at, when the latest filing reached EDGAR, so "what became known this month" is one call: Free reaches 30 days, Basic and Pro 90. Sort by recent, buyers or value; each result carries every filing with its accession number and EDGAR link, and the news uids to open with alphai_article.
alphai_pair_analysis
Cross-ticker read-across: stories naming both tickers, plus each one's own recent tape side by side.
alphai_article
Fetch a single article by UID with full enrichment (key entities, context, market relevance). SEC rows carry the same structured block as the feeds: the insider trade on a Form 4, the filing on an 8-K. Major-ticker SEC earnings filings (8-K item 2.02, or a 6-K earnings release from a foreign issuer) add a structured earnings block.
alphai_earnings
AlphAI's structured read of a company's earnings reports, newest first, plus its next confirmed date. Built from the company's own SEC filing with every figure checked against the filing text, so it arbitrates when press coverage disagrees. Every key_metrics and segments row carries numeric, unit and scale next to the printed value, and table_scale names the unit of the filing's tables.
alphai_tickers
List supported tickers with metadata (name, sector, exchange), plus next_report_date, the next company-confirmed earnings date. Never an estimate: null means we hold no confirmed date.
alphai_alerts_list
List your active ticker news-alert subscriptions and their filters. (Basic/Pro)
alphai_alerts_subscribe
Subscribe a ticker to news alerts, with optional category and relevance filters. A new subscription starts at min_relevance_score 7; pass your own to widen or narrow it. The threshold applies to email and telegram delivery, while a Pro webhook receives every matched article and filters on its own. (Basic/Pro)
alphai_alerts_unsubscribe
Remove one of your ticker news-alert subscriptions. (Basic/Pro)
search
ChatGPT connector contract: natural-language news search — ticker symbols, company names, and topic words in the query resolve to filters. Powers ChatGPT deep research; agents with precise filters should prefer alphai_news_search.
fetch
ChatGPT connector contract: fetch one article by the id a search result returned. Citation-ready text includes the enriched digest and, when available, the completed earnings read with metrics, comparisons, segments, guidance, concerns and missing data. The canonical alphai.io URL and original source remain attached.

Same tools, deeper reach.

Every plan sees all 19 tools. Tiers differ on cadence, page depth (page_size caps at 20 on Free and Basic and 50 on Pro; oversized requests are clamped, not rejected), how far back search reaches, and alert capacity. MCP calls are metered per account, with a per-minute burst cap and a per-day volume cap, separately from the REST quota. Only tool calls are metered: the connect handshake, the tool catalog and keepalives are free, and a request rejected with 429 does not spend budget either.

FreeBasicPro
Burst / min2060150
Volume / day10010,000100,000
News feed max page size202050
Radar added delay60 min delay15 min delayNo added delay
News archive depth30 days90 days180 days
Ticker alerts—1050
Alert delivery—Daily digestInstant

What an MCP-connected agent can do.

One OAuth flow connects all 19 tools. Your agent taps the same news index you read yourself.

What your agent gets right now.

The stories alphai_trending returns at this moment, trimmed to the core fields. Ask Claude what's moving and these are the rows behind the answer.

alphai_trending · output excerpt
[
  {
    "title": "📊 PRO: This Week in Visuals",
    "tickers": [
      "ACN",
      "NKE"
    ],
    "relevance_score": 9,
    "category": "earnings",
    "published": "2026-10-03T14:00:55Z"
  },
  {
    "title": "Paramount and Warner Bros. Set to Merge Under Skydance Name",
    "tickers": [
      "WBD"
    ],
    "relevance_score": 9,
    "category": "mergers_acquisitions",
    "published": "2026-10-03T13:22:56Z"
  },
  {
    "title": "Novartis Signs Up To $7.8 Billion Licensing Deal With Abogen For mRNA-Encoded T-Cell Engager",
    "tickers": [
      "NVS"
    ],
    "relevance_score": 9,
    "category": "mergers_acquisitions",
    "published": "2026-10-03T11:20:39Z"
  }
]

Claude, what's moving in chips today?

Once AlphAI is installed, Claude reaches for the right tools on its own; you never have to name a tool in the prompt. The same articles you read in the feed end up in Claude's context window.

Transcript · Claude Code

What's driving semiconductor stocks today? Focus on the last 24 hours.

[invoking alphai_news_search with tickers=["NVDA","AMD","TSM"], min_relevance=8, from_date=yesterday]

Three threads are driving chip names today: (1) the White House is expected to tighten Nvidia export curbs to China on Friday — Reuters, rel 9/10; (2) TSMC reaffirmed 2026 capex despite a softer Q1 — FT, rel 8/10; (3) AMD said its MI400 is sampling with three hyperscalers — Bloomberg, rel 8/10…

Still shipping.

100%
100%
100%
99.98%

The probes run from GitHub Actions, outside our own infrastructure, so the status page stays reachable when our services are not. The API probe is a deep one and passes only when the database and the cache both answer. Response times, history and past incidents are public.

Questions

What is the AlphAI MCP server?

A hosted financial-news MCP server. It exposes AlphAI's scored, ticker-linked news feed, SEC Form 4 insider filings, and trending-story triage as Model Context Protocol tools that any compliant client can call. Connect once over OAuth 2.1 and your agent reads the same enriched newswire that powers alphai.io.

Which MCP clients work with AlphAI?

Any spec-compliant MCP client that speaks Streamable HTTP. ChatGPT, Claude Desktop, Claude Code, Gemini, Cursor, VS Code, and Windsurf are all tested. Point the client at https://mcp.alphai.io/mcp and authenticate with OAuth in the browser, or send an AlphAI API key as a Bearer header where no browser is available.

Can I connect without a browser, for a bot or a server?

Yes. The same API keys that authenticate the AlphAI REST API work on the MCP server: send Authorization: Bearer ak_live_... with every request and skip the OAuth flow entirely. Create a key under Account, then paste it into any client that supports custom headers, such as n8n, cron agents, CI jobs, or an SDK. The key carries the same plan limits as an OAuth session.

Is there a free tier for the MCP server?

Yes. The Free plan connects to the MCP server with an allotment of 20 requests a minute and 100 a day, which is enough to wire an agent up and evaluate the tools before paying. Basic and Pro raise the caps for production and commercial use.

How do I connect Claude to financial news?

In Claude Desktop, open Settings → Connectors → Add custom connector, name it AlphAI, and paste https://mcp.alphai.io/mcp. Claude walks you through the OAuth login, then reaches for the AlphAI tools on its own whenever a prompt needs market news.

Claude + the newswire.

The Free tier is 100 calls a day, no card. Sign up, connect your MCP client, and your agent is reading the feed in about a minute.