Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, email [email protected] and we’ll put it right.

io.github.tickerbot/mcp-server

NPM · @TICKERBOT/MCP-SERVER · 2 COMPONENTS · SCANNED AUG 3

The stock market, in SQL — scan, replay, or subscribe across ~12k US tickers and top 100 cryptos.

+33 this week 78 Trust /100
Trust breakdown (6 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score →

Supply Chain Security86
  • No malware found by supply-chain analysis.Pass
  • Only part of the dependency tree could be resolved (94 of 98), so this covers what we could see, not the whole tree.Partial
  • No install/post-install scripts declared.Pass
  • Only part of the dependency tree could be resolved (94 of 98), so this covers what we could see, not the whole tree. View diagnostics → Partial
Provenance & Transparency97
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to tickerbot/tickerbot-mcp). View diagnostics → Pass
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 52 days ago).Pass
  • Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability73
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 2548 tokens (~134/item across 19 items; 19 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management23
  • Stability observed for 7 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

npm · @tickerbot/mcp-server

# add to Claude Code
claude mcp add tickerbot-mcp-server -- npx -y @tickerbot/mcp-server
# add to Codex CLI
codex mcp add tickerbot-mcp-server -- npx -y @tickerbot/mcp-server
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "tickerbot-mcp-server": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@tickerbot/mcp-server"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add tickerbot-mcp-server --command npx --arg -y --arg @tickerbot/mcp-server
# ~/.hermes/config.yaml
mcp_servers:
  tickerbot-mcp-server:
    command: "npx"
    args: ["-y", "@tickerbot/mcp-server"]
// mcp.json
{
  "mcpServers": {
    "tickerbot-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "@tickerbot/mcp-server"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 2 Aug 26 +58
    • Install scripts: unverified → pass security
    • Provenance: unverified → pass security
    • Known CVEs: unverified → partial security
    • Malware scan: unverified → pass security
    • Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window). security
    • The attested source repository moved: tickerbot/tickerbot-mcp security
    • Dependency health: unverified → partial functional
    • Stability: unverified → 0.20 functional
    • Schema quality: unverified → excellent functional
    • License: unverified → pass functional
    • Maintenance: unverified → pass functional
    • MCP protocol: unverified → pass functional
    • Licence: MIT functional
  • 31 Jul 26 −4
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 30 Jul 26 −21
    • Tool coverage: 100 → unverified functional
    • First check of Schema quality: unverified functional
  • 27 Jul 26 45

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 3 Aug 2026 · Analysed npm/@tickerbot/[email protected]

Provenance verified

Ecosystem: npm · Outcome: verified

Reason: verified

Source repo:
tickerbot/tickerbot-mcp
Certificate issuer:
https://token.actions.githubusercontent.com
Certificate SAN:
https://github.com/tickerbot/tickerbot-mcp/.github/workflows/publish.yml@refs/tags/v0.1.3
Rekor log index:
1790888243
Predicate type:
https://slsa.dev/provenance/v1
Subject digest:
sha512:2aacaeded1d853ddcf34b2295e49e161d417d7346a5a6f540fbe6c4392d62712a12f4e7c8b905eed95a0260842d269124acfc6d3f3459e2447e05d13e
Discovery method:
attestation_endpoint
Dependencies 94 packages

94 packages in the resolved dependency tree · 94 deprecated · 29 stale.

The dependency tree was only partially resolved, so these counts may be incomplete.

MCP tools — 19 exposed · ~2,548 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.

Tool Tokens
tickerbot_create_custom_signal ~108

Save a SQL WHERE expression as a named custom signal the caller can reference by name in future scans. E.g. name="oversold_with_volume", expr="rsi_14 < 30 AND volume_ratio_20d > 2".

NameTypeReqDescription
descriptionstringOptional human description.
exprstringyesSQL WHERE expression. Same grammar as scan `q`.
namestringyesSnake_case identifier for the signal (lowercase letters, digits, underscore).

No output schema declared.

No examples provided.

tickerbot_create_universe ~59

Create a new universe (named set of tickers) for scoping future scans. Returns the new universe with its assigned slug.

NameTypeReqDescription
namestringyesHuman-readable name.
tickersarrayyesList of ticker symbols.

No output schema declared.

No examples provided.

tickerbot_delete_webhook ~50

Delete a webhook subscription by id. Use after listing webhooks when the user wants to remove an alert.

NameTypeReqDescription
idstringyesWebhook id (looks like `wh_…`).

No output schema declared.

No examples provided.

tickerbot_get_signal_history ~140

Get the time series of one signal for one ticker at a chosen interval (1m, 1h, 1d, 1w). Use for charting a numeric signal's evolution or seeing when a boolean flag was on/off across time.

NameTypeReqDescription
cursorstringOpaque cursor.
fromstringEarliest bar timestamp. YYYY-MM-DD or ISO.
intervalstringyesBar interval.
limitintegerPage size.
signalstringyesColumn name.
tickerstringyesSymbol.
tostringLatest bar timestamp. YYYY-MM-DD or ISO.

No output schema declared.

No examples provided.

tickerbot_get_signals_match ~202

Find tickers that match a single signal right now (or at a past date with `asof`). Booleans need no condition (returns tickers where flag is true). Numerics need a `condition` like ">70" or "<=200". Sorted by signal value desc for numerics.

NameTypeReqDescription
asofstringOptional YYYY-MM-DD. Match against historical daily state.
conditionstringRequired for numerics. Single bound: <op><value>, ops in (>, >=, =, !=, <, <=). E.g. ">70".
cursorstringOpaque cursor.
limitintegerPage size. Max 200. Default 50.
signalstringyesColumn name on ticker. E.g. golden_cross_today, above_sma_50, rsi_14, market_cap, pe_ratio.
universestringOptional universe slug.

No output schema declared.

No examples provided.

tickerbot_get_ticker ~126

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 `asof` (YYYY-MM-DD) for the row as it stood at the close of a past trading day.

NameTypeReqDescription
asofstringOptional YYYY-MM-DD. Returns the row at close of that day.
tickerstringyesSymbol. Case-insensitive. Equities: bare symbol (AAPL). Crypto: bare symbol (BTC).

No output schema declared.

No examples provided.

tickerbot_get_ticker_events ~125

Get the discrete event log for one ticker (splits, dividends, analyst rating changes), newest-first. Optional date window and event-kind filter.

NameTypeReqDescription
cursorstringOpaque cursor.
fromstringEarliest event timestamp (inclusive). YYYY-MM-DD or ISO.
kindstringFilter by event kind.
limitintegerPage size. Max 1000. Default 100.
tickerstringyesSymbol.
tostringLatest event timestamp (inclusive). YYYY-MM-DD or ISO.

No output schema declared.

No examples provided.

tickerbot_get_ticker_history ~96

Time-travel: get the full wide row for one ticker as it stood at a past date. Returns indicators, boolean flags, and the most-recent fundamentals known on that date. Use for backtests and reconstructions.

NameTypeReqDescription
asofstringyesTarget date as YYYY-MM-DD or full ISO timestamp. Returns the most-recent daily snapshot on or before this date.
tickerstringyesSymbol.

No output schema declared.

No examples provided.

tickerbot_get_universe ~31

Get one universe by slug, including its ticker list.

NameTypeReqDescription
idstringyesUniverse slug.

No output schema declared.

No examples provided.

tickerbot_list_signal_events ~98

Get the list of discrete firings of a boolean signal for one ticker (each time the flag went true). Newest-first, paginated.

NameTypeReqDescription
cursorstringOpaque cursor.
fromstringEarliest event timestamp.
limitintegerPage size.
signalstringyesBoolean signal column.
tickerstringyesSymbol.
tostringLatest event timestamp.

No output schema declared.

No examples provided.

tickerbot_list_signals_catalog ~104

List the unified signal catalog: every built-in column on the schema (`kind: builtin`) plus the caller's custom signals (`kind: expression`). Use to discover what `q=` clauses and signal names are available before composing a scan.

NameTypeReqDescription
cursorstringOpaque cursor.
kindstringFilter by kind. Omit for both.
limitintegerPage size for custom slice. Max 200. Default 50.

No output schema declared.

No examples provided.

tickerbot_list_tickers ~247

List active tickers from the Tickerbot universe (~12,000 US equities + top 100 crypto). Use `tickers` for bulk lookup of named symbols (returns full rows); otherwise walks the universe alphabetically with `cursor` pagination. Supports filters: search, asset_type, exchange, sector, min_market_cap.

NameTypeReqDescription
asset_typestringFilter by asset type (e.g. "equity", "crypto").
cursorstringOpaque cursor from a prior response.
exchangestringFilter by exchange (e.g. "XNYS", "XNAS", "BATS").
limitintegerPage size. Max 1000. Default 50.
min_market_capnumberMinimum market cap in USD. Orders results by market_cap desc.
searchstringCase-insensitive substring filter on ticker/name. Orders results by market_cap desc.
sectorstringExact-match sector filter (e.g. "Technology").
tickersstringComma-separated symbols (max 50). When set, returns full rows for these symbols and pagination params are ignored.

No output schema declared.

No examples provided.

tickerbot_list_universes ~58

List the caller's saved universes (named ticker sets to scope scans). Each universe has a slug, name, and ticker count.

NameTypeReqDescription
cursorstringOpaque cursor.
limitintegerPage size.

No output schema declared.

No examples provided.

tickerbot_list_webhooks ~45

List the caller's active webhook subscriptions (rules created via the subscribe tools).

NameTypeReqDescription
cursorstringOpaque cursor.
limitintegerPage size.

No output schema declared.

No examples provided.

tickerbot_scan ~274

Run a SQL WHERE clause against the live ticker universe (or against a past trading day with `asof`). Returns matching tickers sorted by chosen column. The `q` grammar is a flat WHERE: column names from the schema, AND/OR/NOT, comparison operators, numeric/string literals. No JOIN, GROUP BY, or subqueries. Example: `gap_up AND market_cap < 2000000000 AND NOT earnings_this_week`.

NameTypeReqDescription
asofstringOptional YYYY-MM-DD. Run the WHERE against historical close-of-day snapshot for this date.
cursorstringOpaque cursor.
dirstringSort direction.
fieldsstringComma-separated extra columns to include in each result row beyond the default set.
limitintegerPage size. Max 100. Default 50.
orderstringSort column. Default day_change_pct.
qstringyesSQL WHERE expression. Max 4000 chars. Identifiers are bare column names from the schema (e.g. above_sma_50, rsi_14, market_cap). Numeric literals fully specified (no 1.5B shorthand).
universestringOptional universe slug (top_10, top_100, or your own).

No output schema declared.

No examples provided.

tickerbot_search_news ~295

Search the news archive (back to 2015) with a SQL WHERE clause. Plan-gated: Scale+ required for the archive. 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 aggregation (e.g. count of articles per day).

NameTypeReqDescription
cursorstringOpaque cursor.
dirstringSort direction.
group_bystringComma-separated columns for aggregation (e.g. `date_trunc('day', time_published)`).
havingstringWHERE-style filter on aggregates. Requires group_by.
limitintegerPage size.
orderstringSort column or SELECT alias. Default time_published (non-aggregate) or volume (aggregate).
qstringyesSQL WHERE on news_article. Required.
selectstringComma-separated columns to include. Defaults to a slim set.

No output schema declared.

No examples provided.

tickerbot_subscribe_scan ~165

Register a webhook that fires when matches for a scan query change. Pass `target_url` to deliver to your own URL (Discord, Slack, server endpoint); omit for in-app delivery in the dashboard. `cadence` is plan-gated (Hobby max 5m, Pro+ 1m). Use to satisfy "alert me when this happens" prompts.

NameTypeReqDescription
cadencestringEvaluation cadence.
namestringHuman-readable label. Defaults to a truncated version of the query.
qstringyesSQL WHERE expression — same grammar as scan.
target_urlstringOptional https URL to POST matches to. Omit for in-app delivery.
universestringOptional universe slug to scope the watch.

No output schema declared.

No examples provided.

tickerbot_subscribe_signal ~180

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 outbound delivery or omit for in-app.

NameTypeReqDescription
cadencestringEvaluation cadence.
conditionstringRequired for numerics: single bound like ">70" or "<=200". Ignored for booleans.
namestringHuman-readable label.
signalstringyesColumn name (e.g. golden_cross_today, rsi_14).
target_urlstringOptional https URL for delivery; omit for in-app.
tickerstringOptional ticker to restrict the watch to one symbol.
universestringOptional universe slug.

No output schema declared.

No examples provided.

tickerbot_subscribe_ticker ~145

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 outbound delivery or omit for in-app.

NameTypeReqDescription
cadencestringEvaluation cadence.
conditionstringyesSQL WHERE fragment evaluated for this ticker (e.g. "rsi_14 > 70 AND gap_up").
namestringHuman-readable label.
target_urlstringOptional https URL for delivery; omit for in-app.
tickerstringyesSymbol.

No output schema declared.

No examples provided.