Tickerbot
Tickerbot is a new kind of market data API. Real-time and historical market data, served as one precomputed table, not as separate feeds. Every US stock, plus rates, FX, metals and crypto, is a row; every data point, from price to 200-day average to golden cross, is a column we call a signal. Build a screener, backtester, alert bot, or trading algo in a few calls. Free plan: 10,000 calls a month, no card.
https://tickerbot.io/Connect straight to this server’s public endpoint.
https://api.tickerbot.io/mcpWe add this server to your workspace, walk through sign-in once, then open Studio with tools ready to run.
Last probed Sep 14, 2026 · api.tickerbot.io
35tools discovered
Showing 25 of 35 from the live probe.
Tickerbot List Tickers
The symbol catalog: an identity walk over every tracked symbol (active and delisted), alphabetical with `cursor` pagination. Rows carry identity only — ticker, name, asset_class, asset_type, exchange, exchange_mic, currency_name, country, cik, composite_figi, list_date, delisted_utc, active — never price or signals. Filters: search (exact ticker → ticker prefix → name match), asset_class, asset_type, exchange. For the full STATE of named symbols use tickerbot_get_ticker with a comma list; for a
Tickerbot Get Ticker
Get the full current row for one ticker — every column on the schema (price, change, indicators like rsi_14, every boolean flag like above_sma_50, fundamentals like pe_ratio). Pass a comma-separated list of up to 50 symbols (AAPL,MSFT,NVDA) for a batch: the response carries `data` keyed by symbol plus `not_found`. Pass `asof` (YYYY-MM-DD or ISO timestamp like 2026-07-20T15:30:00Z) for the row(s) as they stood at that past moment — date-only gives the close of that day.
Tickerbot Get Ticker History
Time-travel SNAPSHOT: the full wide row for one ticker as it stood at a past date (one row, not a series — for a multi-column time SERIES use tickerbot_get_series). Returns indicators, boolean flags, and the most-recent fundamentals known on that date. Unlimited depth on every plan.
Tickerbot Get Ticker Coverage
Data-coverage report for one ticker — which intervals and columns exist, from when, at what depth. The honesty endpoint: ask this before assuming a gap in bars/series is a data outage vs. genuinely-never-covered (e.g. fundamentals on non-equities). NOTE minute_tier.included:false is NOT a gap: it comes with on_demand:true — sub-hour bars for that symbol are fetched from the provider on first request (~3-10s, up to window_days per call) and served sub-second after.
Tickerbot Get Ticker Bars
Get OHLCV (open/high/low/close/volume) bars for one or more symbols at a given interval, oldest-first. Pass a comma-separated `ticker` list (up to 50) for a bulk response keyed by symbol. Use `asof` for a single point-in-time bar, or `before`+`limit` to back-page. `1d`/`1h` cover the full universe with full history; sub-hour intervals back-fill on demand.
Tickerbot Get Ticker Holdings
Get an ETF's constituent holdings and their weights, heaviest first. When the ticker is not an ETF, `is_etf` is false and `holdings` is empty; `is_etf: true` with zero holdings means a real ETF whose holdings aren't ingested yet. (The reverse lookup "which ETFs hold NVDA" is a scan filter on the `etf_holders` column, not this tool.)
Tickerbot Get Ticker Sectors
Get an ETF's sector allocation (sector weights, heaviest first). When the ticker is not an ETF, `is_etf` is false and `sectors` is empty; `is_etf: true` with zero sectors means a real ETF whose sector data isn't ingested yet.
Tickerbot Subscribe Ticker
Register a webhook that fires when one ticker matches a condition. `condition` is a SQL WHERE-clause fragment scoped to that ticker (e.g. "rsi_14 > 70 AND relative_volume > 2"). Pass `target_url` for an https POST, or `channel:"discord"` + `discord_url` to post to Discord; omit for in-app.
Tickerbot Get Series
THE series primitive: cross-ticker, multi-column time series on one aligned grid. Pick up to 25 columns (price, OHLCV, indicators like rsi_14, boolean flags, custom signals) and up to 50 tickers; get one flat row per ticker per interval step ({ticker, t, price, rsi_14, …}), cursor-paged backward. `transitions_only=true` with boolean columns returns only the rows where a flag CHANGED — "every golden_cross flip this year" in one call. All-time on every plan. Replaces looping asof snapshots per dat
Tickerbot List Signals Catalog
List the unified signal catalog: every built-in column on the schema (`kind: builtin`) plus the caller's custom signals (`kind: custom`). Built-in rows carry the audited spec metadata — description, category, update cadence, ticker coverage (`ticker_scope`), history depth (`history`/`history_since`), queryable resolutions, and asset classes. Use to discover what `q=` clauses and signal names are available before composing a scan.
Tickerbot Get Signals Match
Find tickers that match a single signal right now (or at a past moment with `asof`). Booleans need no condition. Numerics need a `condition` like ">70" or "<=200". Sorted by signal value desc for numerics.
Tickerbot List Signal Events
Occurrence SPANS of a boolean signal for one ticker, newest-first. For STATE flags (above_sma_50, in_uptrend) each row is a true-WINDOW: started_at when it flipped true, ended_at when it flipped back (null while still true), with prices at both ends. For EVENT flags (golden_cross, gap_up) each row is a point firing (started_at = ended_at). "Golden crosses in June" is from=2026-06-01&to=2026-06-30. Built-in booleans only — numerics and custom signals have no precomputed spans (use tickerbot_get_s
Tickerbot Create Custom Signal
Save a SQL WHERE expression as a named custom signal the caller can reference by name in future scans.
Tickerbot Update Custom Signal
Edit one of the caller's custom signals — supply `expr`, `description`, `new_name`, or any combination. Providing `expr` recompiles it against the live column whitelist. Renaming is refused (409) while other custom signals reference the current name. Built-in signals are read-only; only custom signals the caller owns can be patched. Available on every plan.
Tickerbot Delete Custom Signal
Delete one of the caller's custom signals. Cascade-safe by default: refused with 409 if another custom signal references it (the error lists the referencing signals). Pass `force: true` to delete anyway — existing references will break on next recompile. Available on every plan.
Tickerbot Subscribe Signal
Register a webhook that fires when a signal turns true (booleans) or its value crosses a condition (numerics). Optional `ticker` restricts to one symbol; omit to watch the whole universe. Pass `target_url` for an https POST, or `channel:"discord"` + `discord_url` to post to Discord; omit for in-app.
Tickerbot List Events
THE events primitive — one timeline over every event log, cross-ticker: dividends, splits, insider transactions, and analyst actions ("all splits this month", "every analyst action in my universe this week", "AAPL's full corporate history" via `ticker`), plus two opt-in kinds that join only when named: `signal` (boolean-flag firings) and `news`. Rows are { ticker, ts, kind, payload }, newest first. Analyst payloads (history to 2012) carry firm/analyst/action/rating/price_target; filter them with
Tickerbot Subscribe Events
Create an event-trigger webhook: fires when NEW events land — dividends, splits, insider filings, analyst actions ("every split in my universe", "Goldman downgrades on large caps"). TWO composable filters: `q` filters the event's TICKER STATE (market_cap > 1e10); `event_q` filters the EVENT CONTENT in the /v2/events grammar (payload->>'firm' = 'Goldman Sachs'). Paid plans (webhook slots). Deliveries carry event: "events.fired" with an events array. Latency = ingest cadence: analyst ≤1h, corporat
Tickerbot Scan
Run a SQL WHERE clause against the live ticker universe (or against a past moment with `asof` — unlimited depth on every plan). Returns matching tickers sorted by chosen column, OR — with `group_by` — aggregate rollups instead of rows (breadth stats: "count of tickers above their 200dma by sector", "median RSI by sector on 2026-03-03"). The `q` grammar is a flat WHERE: column names from the schema, AND/OR/NOT, comparison operators, numeric/string literals. No JOIN or subqueries. Example: `gap_up
Tickerbot Subscribe Scan
Register a webhook that fires when matches for a scan query change. Pass `target_url` for an https POST, or `channel:"discord"` + `discord_url` to post an embed to Discord; omit for in-app delivery in the dashboard. `cadence` is real-time (1m) by default; throttle to hourly or nyse_open. Use to satisfy "alert me when this happens" prompts.
Tickerbot Search News
Search the news archive (back to 2015) with a SQL WHERE clause. Available on every plan. Columns on news_article include `time_published`, `title`, `summary`, `source`, `source_domain`, `category`, `authors`, `topics`, `tickers` (array), `overall_sentiment_score`, `overall_sentiment_label`, `url`. To filter to one ticker use `'NVDA' = ANY(tickers)` or the auto-unnest alias `tk = 'NVDA'`. Example: `q=tk='NVDA' AND time_published >= NOW() - INTERVAL '1 day'`. Supports group_by + having for aggrega
Tickerbot Create Webhook
The canonical webhook create — POST /v2/webhooks with an explicit `trigger` object: { type: "scan" | "ticker" | "signal" | "event", … } plus delivery fields. The subscribe tools above are flat sugar over exactly this; use this form when composing the trigger programmatically or when a sugar door doesn't fit. Trigger shapes: scan {type:"scan", q, universe?}; ticker {type:"ticker", ticker, condition}; signal {type:"signal", signal, ticker?, universe?, condition?}; event {type:"event", kinds, ticke
Tickerbot Patch Webhook
Edit a webhook in place: `name`, `cadence`, `target_url`, `enabled` (pausing/resuming without losing match-state). The trigger (q) and channel are immutable by design — delete and re-create to change what fires or where it delivers. Unknown fields are a 400, never silently ignored.
Tickerbot List Webhooks
List the caller's webhook subscriptions (rules created via the subscribe tools), newest-first. Use `status` to filter to active or disabled rules.
Tickerbot Get Webhook
Fetch one webhook subscription by id (current state, match-set, schedule). Account-scoped: any key on the account can read any of the account's webhooks.
Get your MCP into directories
A working endpoint is step one. Directory coverage is the coordinated launch across ChatGPT, Claude, Cursor, the MCP Registry, and community indexes.
Directory coverage for brandsTickerbot is a new kind of market data API. Real-time and historical market data, served as one precomputed table, not as separate feeds. Every US stock, plus rates, FX, metals and crypto, is a row; every data point, from price to 200-day average to golden cross, is a column we call a signal. Build a screener, backtester, alert bot, or trading algo in a few calls. Free plan: 10,000 calls a month, no card.
Use the MCP endpoint listed on this page in your MCP client configuration. One-click install pills support Claude, Cursor, VS Code, and other hosts. Copy the remote MCP URL if your client needs a manual entry.
Operate Tickerbot? Verify ownership to take over this directory entry.
This server appears in the MCPBundles directory. Verify you operate it to take over the listing — name, description, logo, contact email, and skill content. We email a 6-digit code to a maintainer address your server publishes in /.well-known/security.txt or /.well-known/mcpbundles.json. Free, takes about a minute.
Other MCP servers in this category from the directory index
MCPBundles probed 35 tools on the live server. The tool list on this page reflects what was discovered at the last refresh — connect your client to see the full set available to your session.
Tickerbot may require signing in to the provider before tools can run. Connect through MCPBundles or your MCP client and complete any provider login when prompted.
MCPBundles is an independent platform built on the open Model Context Protocol standard. Not affiliated with Anthropic PBC or Claude.