MCP Server is an MCP server with 32 tools an agent can call, among them tickerbot_create_custom_signal, tickerbot_create_universe, tickerbot_create_webhook. It answers at https://api.tickerbot.io/mcp over streamable HTTP, and it listed its tools to an anonymous client, so no sign-in was needed for that. Our probes reached it 6 of 6 times since 11 September 2026; the last check, on 24 October 2026, succeeded.
The stock market, in SQL — scan, replay, or subscribe across ~12k US tickers and top 100 cryptos.
Description as the publisher wrote it.
| Tool | What it does |
|---|---|
tickerbot_create_custom_signal | A named boolean predicate you can reference anywhere a built-in signal goes. Inputs: name, expr, description |
tickerbot_create_universe | Create a named ticker list owned by your account. Inputs: name, tickers, id, description |
tickerbot_create_webhook | Canonical create: a webhook is a trigger plus a delivery. Trigger shapes: scan {type:"scan", q, universe?}; ticker {type:"ticker", ticker, condition}; signal {type:"signal", signal, ticker?, universe?, condition?}; event {type:"event", kind Inputs: trigger, target_url, channel, discord_url, device_id, cadence |
tickerbot_delete_custom_signal | Delete one of your custom signals. Refused by default if another of your signals references it. Inputs: signal, force |
tickerbot_delete_universe | Permanently delete one of your universes. Webhooks that reference the deleted universe fail on their next eval — clean those up first. Inputs: id, force |
tickerbot_delete_webhook | Delete a webhook subscription, and its delivery history with it. Inputs: id |
tickerbot_enable_webhook | Re-enable a disabled webhook and start it clean. Clears match-state, so the next eval treats every currently-matching ticker as new. Inputs: id |
tickerbot_get_bars | OHLCV bars from 1-second through monthly. The prices underneath the table. Inputs: ticker, interval, from, to, asof, adjusted |
tickerbot_get_etf_holdings | Returns an ETF's constituents 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 are not ingested yet. The reverse l Inputs: ticker, limit |
tickerbot_get_etf_sectors | Returns an ETF's sector weights, heaviest first. Always complete, since sector breakdowns are small. When the ticker is not an ETF, `is_etf` is false and `sectors` is empty. Inputs: ticker |
tickerbot_get_series | Any signals for any tickers on one shared time grid — up to 50 tickers by 25 columns per call. One flat row per ticker per interval step, cursor-paged backward. `transitions_only: true` with boolean signals returns only the rows where a boo Inputs: tickers, ticker, columns, interval, from, to |
tickerbot_get_signal | The state of a signal is the set of tickers matching it right now, or with `asof`, as of any moment. One name, the whole market, one call. Booleans need no `condition`; numerics need one like ">70". Sorted by signal value desc for numerics. Inputs: signal, asof, interval, condition, universe, limit |
tickerbot_get_ticker | The full ticker row, every signal on the schema page, for one symbol or a comma list of up to 50. Right now, or with `asof`, as of any past date. Pass a comma list of up to 50 symbols for a batch (`data` keyed by symbol plus `not_found`). C Inputs: ticker, asof, interval |
tickerbot_get_ticker_coverage | For one ticker, what we hold and how far back — so an empty result is never ambiguous. Ask this before treating a gap in bars or series as an outage. `minute_tier.included: false` with `on_demand: true` is not a gap — sub-hour bars fetch fr Inputs: ticker |
tickerbot_get_universe | Returns the universe doc. Use `top_10`/`top_100` to fetch a system universe; any other slug must be one your account owns. Inputs: id |
tickerbot_get_webhook | The current state of one webhook subscription. Inputs: id |
tickerbot_list_events | One timeline across every ticker: earnings, dividends, splits, insider filings, analyst actions, plus opt-in signal firings and news. Requires at least one bound: a ticker scope (ticker/tickers/universe), a time window (from/to), or firm/ac Inputs: kind, ticker, tickers, universe, firm, action |
tickerbot_list_signals | Every signal you can name in a query — the built-in signals and your own custom signals, in one catalog. Use to discover the signal names and `q` vocabulary before composing a scan; custom signals appear with `kind: custom`. Inputs: kind, limit, cursor |
tickerbot_list_tickers | Every symbol we track, active or delisted, as one identity row each. Use `/v2/tickers/{ticker}` for the full row. Inputs: search, asset_class, asset_type, exchange, limit, cursor |
tickerbot_list_universes | Every universe you can reference: your own named ticker lists and the built-in ones. `owner: system` lists the built-in universes (top_10, top_100); `all` lists both. Use a slug as `universe` on scan, signal, and subscribe tools. Inputs: owner, limit, cursor |
tickerbot_list_webhook_deliveries | Recent deliveries for one webhook — what was sent, and what came back. Inputs: id, status, from, to, limit, cursor |
tickerbot_list_webhooks | Every webhook subscription on this account, newest first. Inputs: status, limit, cursor |
tickerbot_scan | Every ticker matching a SQL WHERE clause. Right now, or with `asof`, as of any past date. The `q` grammar is a flat SQL WHERE over signal names: AND/OR/NOT, comparisons, numeric and string literals, custom signals by name. No JOIN or subque Inputs: q, asof, interval, order, dir, limit |
tickerbot_search_news | SQL query over the news archive. Article rows, or rollups when you group them. Filter to a ticker with the `ticker` param, or in `q` via the auto-unnest alias `tk = 'NVDA'`. `search` is full-text over title and summary. Rollups with group_b Inputs: ticker, tickers, universe, from, to, search |
tickerbot_subscribe_events | Push new events: we POST your endpoint when events of the kinds you chose land in the archives. Webhooks need a paid plan (Free has no webhook slots). `q` filters the ticker STATE; `event_q` filters the EVENT payload in the /v2/events gramm Inputs: kinds, tickers, ticker, universe, q, event_q |
tickerbot_subscribe_scan | Push a whole query: we POST your endpoint every time the match set changes. Webhooks need a paid plan (Free has no webhook slots). Use for "alert me when this happens" requests. Inputs: q, universe, target_url, channel, discord_url, device_id |
tickerbot_subscribe_signal | Push one signal: we POST your endpoint whenever any ticker starts matching it. Webhooks need a paid plan (Free has no webhook slots). Omit `ticker` to watch the whole universe. Inputs: signal, condition, ticker, universe, target_url, channel |
tickerbot_subscribe_ticker | Push one ticker: we POST your endpoint whenever it matches the condition you give. Webhooks need a paid plan (Free has no webhook slots). Omit `target_url` for in-app delivery. Inputs: ticker, q, condition, target_url, channel, discord_url |
tickerbot_test_webhook | Send a real-shape test POST to your endpoint, instantly. One-shot: a failed test never retries and never auto-disables the webhook. 400 when the webhook has no target_url. Inputs: id |
tickerbot_update_custom_signal | Update a custom signal you own — its expression, description, or name. Inputs: signal, expr, description, new_name |
tickerbot_update_universe | Update one of your universes: its name, description, or members. `tickers` replaces the whole list; `add`/`remove` adjust it. System universes cannot be edited. Inputs: id, name, description, tickers, add, remove |
tickerbot_update_webhook | Edit a webhook in place — send only the fields you want to change. The trigger and channel are immutable — delete and re-create to change what fires or where it delivers. Unknown fields are a 400. Inputs: id, name, cadence, target_url, enabled |
Every block below points at https://api.tickerbot.io/mcp. Pick your client and copy.
claude mcp add --transport http mcp-server https://api.tickerbot.io/mcp
{
"mcpServers": {
"mcp-server": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://api.tickerbot.io/mcp"]
}
}
}{
"mcpServers": {
"mcp-server": {
"url": "https://api.tickerbot.io/mcp"
}
}
}{
"servers": {
"mcp-server": {
"type": "http",
"url": "https://api.tickerbot.io/mcp"
}
}
}{
"context_servers": {
"mcp-server": {
"url": "https://api.tickerbot.io/mcp"
}
}
}{
"mcpServers": {
"mcp-server": {
"serverUrl": "https://api.tickerbot.io/mcp"
}
}
}{
"mcpServers": {
"mcp-server": {
"url": "https://api.tickerbot.io/mcp"
}
}
}name: MCP Server
version: 0.0.1
schema: v1
mcpServers:
- name: MCP Server
type: streamable-http
url: https://api.tickerbot.io/mcp{
"mcpServers": {
"mcp-server": {
"httpUrl": "https://api.tickerbot.io/mcp"
}
}
}{
"mcpServers": {
"mcp-server": {
"type": "http",
"url": "https://api.tickerbot.io/mcp"
}
}
}{
"mcpServers": {
"mcp-server": {
"url": "https://api.tickerbot.io/mcp"
}
}
}goose://extension?url=https%3A%2F%2Fapi.tickerbot.io%2Fmcp&type=streamable_http&id=mcp-server&name=MCP%20Server
It answered our last check on 24 October 2026 in 345 ms. Over 6 checks since 11 September 2026 it answered 6. Status here comes from Neuronto's own probes, not from the publisher.
32, as returned by the server's own tools/list on 22 September 2026: tickerbot_create_custom_signal, tickerbot_create_universe, tickerbot_create_webhook, tickerbot_delete_custom_signal, tickerbot_delete_universe, tickerbot_delete_webhook, tickerbot_enable_webhook, tickerbot_get_bars, and 24 more.
It answered our last check on 24 October 2026 in 345 ms. Over 6 checks since 11 September 2026 it answered 6.
Put the server under mcpServers in ~/.cursor/mcp.json with the URL https://api.tickerbot.io/mcp. The exact JSON is above, with the same setup for Claude Code, Claude Desktop, VS Code, Windsurf, Zed, Gemini CLI and the rest.
It listed its tools to an anonymous client, so reading the tool list needs no key. Individual tools can still ask for credentials in their own inputs.
Publisher: io.github.tickerbot. Endpoint host: api.tickerbot.io. ARD identifier: urn:air:io.github.tickerbot:mcp:mcp-server.
First indexed 10 September 2026. The tools are exactly what the server returned; nothing on this page
is inferred from its name. Ranking in Neuronto search is never for sale.