MCP server

Rumor.io ships a Model Context Protocol server so agents can pull attention, engagement, sentiment, and price data without scraping the REST surface themselves. Wire it into Claude Desktop, Cursor, or any other MCP-aware client.

Endpointhttps://api.rumor.io/mcp
TransportStreamable HTTP (stateless)
AuthOAuth sign-in, or X-API-Key — same key as the REST API

Install

The server is at https://api.rumor.io/mcp over Streamable HTTP, stateless. Sign in with your Rumor account (OAuth), or send your API key as an X-API-Key header — clients that can only send an Authorization header may send Authorization: Bearer pk_... instead.

Setup for Claude, ChatGPT, Gemini and the coding tools — with copyable snippets — is on the connect page.

Tools

Twelve tools cover the surface area: a single-asset snapshot, the screener, a timeseries fetch, written summaries, market-wide trends, a news feed with its publisher list, an event calendar, financial statements, a co-attention list, search, and an account-status check. Errors and rate limits follow the same envelope as the REST API — see the error reference and rate limits.

Every tool and endpoint that returns history takes the same window: start and end name the dates, and resolution names the bucket. There are no named periods. end omitted is now; start omitted is thirty days before the end, or the whole history at month resolution. The resolution is day unless hour or month is asked for by name, however long the window is. Dates on the wire are unix seconds in both directions; YYYY-MM-DD is accepted as an input form, and as an end it means the end of that UTC day. A window is never clamped: one your plan cannot read is refused, so a short series is never mistaken for the real one.

The type parameter keeps the formal names — equities, funds, and cryptocurrencies — even though the site labels them Stocks, ETFs, and Crypto.

A note on units, common to every tool: attention level fields (socialAttention*, sentimentNet*Attention*, topic*Attention*) are 0–1 fractions of a cross-entity pool, not percentages. Attention-based *Change* fields are percentage-point deltas in that same fraction unit (level_now − level_prior), not relative percent change; null means there is no prior-period data, and the prior level is level − change. Only priceChangePercentage* is a relative percent.

get_asset

The current row for a single asset: price and profile, and its attention, engagement and sentiment over the last day, week, month and year, with ranks, percentiles and changes. Social field names compose as {series}{measure}{window}. Series: social, sentimentBullish, sentimentBearish, sentimentNetBullish, sentimentNetBearish, communityNew, communityRegulars, and topic{Topic} (equities: Earnings, Analysts, Announcements, Controversies, Macro, TechnicalAnalysis; funds: Macro, TechnicalAnalysis; cryptocurrencies: Adoption, Controversies, Macro, Defi, TechnicalAnalysis, Tokenomics). Measure: Attention (the asset's 0-1 share of the cross-entity pool), Engagement (a raw count), EngagementPercentage (share of the asset's own engagement; sentiment series only), and Count on social alone (socialCount = messages). Window: Day, Week, Month, Year — so socialAttentionWeek, topicEarningsEngagementDay. In place of a window: AllTimeHigh, Average50Day, Average200Day, HighYear, LowYear. The share measures (Attention, and EngagementPercentage on the sentiment series) also carry Change{window} (level now minus level prior, null with no prior), {window}Rank and {window}Percentile (standing among the type's assets; rankUniverseCount is the universe). sentimentNet* has Attention only. Price and profile fields have no grammar: price, marketCap, volume, priceChangePercentage{window}, priceAvg50, priceAvg200, yearHigh, yearLow, pe, eps, sector, industry, companyName, and on equities the analyst counts (analystRatingsBuy …), price targets (priceTargetAvg …), nextEarningsDate and the fundamentals suffixed Annual, Quarter or TTM. Pass fields=* to see every field the asset carries, values included, and read names off that.

ArgumentDescription
typeequities · funds · cryptocurrencies
tickerTicker symbol (AAPL, SPY, bitcoin)
fieldsComma-separated field names, or * for every field the asset carries. Omit for the defaults.

screen_assets

Screen, rank, and filter assets of a type — the website's Screener as a tool. Returns a columnar table (arrays per column, aligned by index, plus ids). Column names are get_asset's fields. Custom fields and filters need a Personal plan or above.

ArgumentDescription
typeequities · funds · cryptocurrencies
fieldsComma-separated column names to return. Omit for the screener's default columns.
sortColumn to rank by (numeric columns only). Omit for the type's default ranking.
orderasc · desc. Default: desc.
limitMax rows to return (1–50). Default: 25.
filtersObject keyed by column name; each value takes gt, lt (inclusive numeric bounds), contains (case-insensitive substring), include, exclude (categorical value lists).

get_timeseries

Historical series for a single asset, anywhere in the full history: price candles and volume, social engagement and attention, bullish and bearish engagement, engagement per topic, and engagement by community tenure. Fields: opens, highs, lows, closes, volumes, changes; socialEngagement, socialAttention; sentimentBullishEngagement, sentimentBearishEngagement; topic{Topic}Engagement for the type's topics; communityNewEngagement, communityRegularsEngagement. Every *Engagement series has a *Attention twin, the asset's 0–1 share of the cross-entity pool. A window starting further back than 90 days, or at hour or month resolution, needs a Personal plan or above.

ArgumentDescription
typeequities · funds · cryptocurrencies
tickerTicker symbol
startStart of the window: unix seconds, or YYYY-MM-DD. Omit for 30 days before the end (at month resolution, the whole history).
endEnd of the window: unix seconds, or YYYY-MM-DD, which means the end of that UTC day. Omit to end now.
resolutionhour · day · month. Default: day, whatever the window's length — hour and month are asked for by name. An hour window may span at most 30 days.
datesComma-separated YYYY-MM-DD days, up to 100. Returns only those daily buckets, in the order asked, with a null row for a day the series has no bucket for. Exclusive with start, end and resolution. Pair it with get_events: the days out of one, named in one call here.
fieldsComma-separated field names. Omit for the defaults. Narrow it on a long daily window — every field is another row per bucket.

get_summary

What was said about a single asset: written summaries, as lists of plain-text bullets, of the conversation per day or per month. Keys: messages (the whole conversation), sentimentBullish and sentimentBearish (the case each side made), topic{Topic} for the type's topics, communityNew and communityRegulars. latest returns each key's newest non-empty summary whatever its date, in one call and never plan-gated; a named window has the same 90-day free line as get_timeseries.

ArgumentDescription
typeequities · funds · cryptocurrencies
tickerTicker symbol
latesttrue for each key's newest non-empty summary, with the day it is from. Exclusive with start, end and resolution.
startStart of the window: unix seconds, or YYYY-MM-DD. Omit for 30 days before the end (at month resolution, the whole history).
endEnd of the window: unix seconds, or YYYY-MM-DD, which means the end of that UTC day. Omit to end now.
resolutionday · month. Default: day. There is no hourly summary.
fieldsComma-separated keys. Omit for messages, both sentiments and the type's topics.

get_trends

Market-wide attention and sentiment trends for an asset type, broken down by sector, market cap, region, or topic. Same 90-day free line as get_timeseries.

ArgumentDescription
typeequities · funds · cryptocurrencies
sectorsComma-separated PascalCase sector keys (Technology, Healthcare). Omit for all. Narrows the sector fields only.
fieldsengagement · sentiment · sectorSentiment · capEngagement · capSentiment · regionEngagement · regionSentiment · topicEngagement · themeEngagement · themeSentiment. Default: engagement. Topics group messages, not companies, and have no bullish/bearish split.
startStart of the window: unix seconds, or YYYY-MM-DD. Omit for 30 days before the end (at month resolution, the whole history).
endEnd of the window: unix seconds, or YYYY-MM-DD, which means the end of that UTC day. Omit to end now.
resolutionhour · day · month. Default: day, whatever the window's length — hour and month are asked for by name. An hour window may span at most 30 days.

get_news

News articles from our own archive, newest first — the whole market by default, or one asset class or one asset. A window starting further back than 90 days needs a Personal plan or above.

ArgumentDescription
typeequities · funds · cryptocurrencies. Omit for every class.
tickerTicker symbol (AAPL, SPY, bitcoin). Omit for the whole market.
startStart of the window: unix seconds, or YYYY-MM-DD. Omit for 30 days before the end (at month resolution, the whole history).
endEnd of the window: unix seconds, or YYYY-MM-DD, which means the end of that UTC day. Omit to end now.
publisherComma-separated publisher names, OR'd together. Exact, case-sensitive matches from list_news_publishers. Omit for all.
limitMax articles to return (1–50). Default: 20.

list_news_publishers

Every publisher that wrote in a window, with article counts, sorted by count — the vocabulary get_news's publisher argument filters on. A window starting further back than 90 days needs a Personal plan or above.

ArgumentDescription
typeequities · funds · cryptocurrencies. Omit for every class.
tickerTicker symbol (AAPL, SPY, bitcoin). Omit for the whole market.
startStart of the window: unix seconds, or YYYY-MM-DD. Omit for 30 days before the end (at month resolution, the whole history).
endEnd of the window: unix seconds, or YYYY-MM-DD, which means the end of that UTC day. Omit to end now.

get_events

Earnings, dividends, splits and analyst rating changes for one asset, as one array sorted newest first, each row stamped with its kind. Every row carries date (unix seconds) and day (YYYY-MM-DD). To rank events by attention, call this for the days and then ONE get_timeseries with dates set to them — not one timeseries call per event. Equities only; funds and crypto return an empty array. The feed includes the next scheduled report and a declared-but-not-yet-ex dividend.

ArgumentDescription
typeequities · funds · cryptocurrencies
tickerTicker symbol
kindsComma-separated kinds: earnings · dividend · split · rating. Omit for all four.
startDrop events before this day: unix seconds or YYYY-MM-DD. A filter over the calendar, not a plan line — no window here is refused.
endDrop events after this day: unix seconds or YYYY-MM-DD, which includes that whole UTC day. Omit for the whole calendar, future rows included.

get_financials

One financial statement for one asset, newest fiscal period first — the data behind the Financials tab. Rows are the provider's own: date is the fiscal period end as YYYY-MM-DD, and every metric is nullable, where null means no source line and 0 means a reported zero. Needs a free account or above.

ArgumentDescription
typeequities · funds · cryptocurrencies
tickerTicker symbol
statementincome · balance · cashflow · fundamentals (merged key metrics and ratios) · estimates (forward analyst EPS and revenue bands). Required.
periodannual · quarter · ttm. Default: annual. ttm is the trailing twelve months and exists on fundamentals alone; estimates are forward fiscal years and take annual only.
limitKeep only the newest N rows. Omit for every row.

get_related

The assets this asset's audience also discusses, ranked by audience-overlap lift — rank 1 is the strongest overlap. A measure of who talks about what, not of price correlation or sector membership. Each row carries the type and ticker the other tools take; ticker is null for a neighbour the asset tables have no row for.

ArgumentDescription
typeequities · funds · cryptocurrencies
tickerTicker symbol

search_assets

Find tracked assets by ticker or name, closest first: an exact ticker, then tickers starting with the text, then names starting with it, then names containing it. The way from a company or coin name to the ticker and type the other tools take.

ArgumentDescription
queryTicker or name text, at least one character.
typeequities · funds · cryptocurrencies. Omit for every class.
limitResults to return (1–50). Default: 10.

get_account_status

The account behind the connection: which account it is (email), its plan, how the call is authenticated, and today's request budget — used, remaining, and when it resets. The tool to call when a request is refused or rate-limited.

You're viewing limited data.