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.
Available components
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
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
claude mcp add tickerbot-mcp-server -- npx -y @tickerbot/mcp-server
codex mcp add tickerbot-mcp-server -- npx -y @tickerbot/mcp-server
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"tickerbot-mcp-server": {
"type": "local",
"command": [
"npx",
"-y",
"@tickerbot/mcp-server"
],
"enabled": true
}
}
} openclaw mcp add tickerbot-mcp-server --command npx --arg -y --arg @tickerbot/mcp-server
mcp_servers:
tickerbot-mcp-server:
command: "npx"
args: ["-y", "@tickerbot/mcp-server"] {
"mcpServers": {
"tickerbot-mcp-server": {
"command": "npx",
"args": [
"-y",
"@tickerbot/mcp-server"
]
}
}
} 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.
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.
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.
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".
| Name | Type | Req | Description |
|---|---|---|---|
| description | string | — | Optional human description. |
| expr | string | yes | SQL WHERE expression. Same grammar as scan `q`. |
| name | string | yes | Snake_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.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | Human-readable name. |
| tickers | array | yes | List 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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Webhook 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.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | — | Opaque cursor. |
| from | string | — | Earliest bar timestamp. YYYY-MM-DD or ISO. |
| interval | string | yes | Bar interval. |
| limit | integer | — | Page size. |
| signal | string | yes | Column name. |
| ticker | string | yes | Symbol. |
| to | string | — | Latest 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.
| Name | Type | Req | Description |
|---|---|---|---|
| asof | string | — | Optional YYYY-MM-DD. Match against historical daily state. |
| condition | string | — | Required for numerics. Single bound: <op><value>, ops in (>, >=, =, !=, <, <=). E.g. ">70". |
| cursor | string | — | Opaque cursor. |
| limit | integer | — | Page size. Max 200. Default 50. |
| signal | string | yes | Column name on ticker. E.g. golden_cross_today, above_sma_50, rsi_14, market_cap, pe_ratio. |
| universe | string | — | Optional 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.
| Name | Type | Req | Description |
|---|---|---|---|
| asof | string | — | Optional YYYY-MM-DD. Returns the row at close of that day. |
| ticker | string | yes | Symbol. 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.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | — | Opaque cursor. |
| from | string | — | Earliest event timestamp (inclusive). YYYY-MM-DD or ISO. |
| kind | string | — | Filter by event kind. |
| limit | integer | — | Page size. Max 1000. Default 100. |
| ticker | string | yes | Symbol. |
| to | string | — | Latest 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.
| Name | Type | Req | Description |
|---|---|---|---|
| asof | string | yes | Target date as YYYY-MM-DD or full ISO timestamp. Returns the most-recent daily snapshot on or before this date. |
| ticker | string | yes | Symbol. |
No output schema declared.
No examples provided.
tickerbot_get_universe ~31
Get one universe by slug, including its ticker list.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Universe 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.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | — | Opaque cursor. |
| from | string | — | Earliest event timestamp. |
| limit | integer | — | Page size. |
| signal | string | yes | Boolean signal column. |
| ticker | string | yes | Symbol. |
| to | string | — | Latest 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.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | — | Opaque cursor. |
| kind | string | — | Filter by kind. Omit for both. |
| limit | integer | — | Page 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.
| Name | Type | Req | Description |
|---|---|---|---|
| asset_type | string | — | Filter by asset type (e.g. "equity", "crypto"). |
| cursor | string | — | Opaque cursor from a prior response. |
| exchange | string | — | Filter by exchange (e.g. "XNYS", "XNAS", "BATS"). |
| limit | integer | — | Page size. Max 1000. Default 50. |
| min_market_cap | number | — | Minimum market cap in USD. Orders results by market_cap desc. |
| search | string | — | Case-insensitive substring filter on ticker/name. Orders results by market_cap desc. |
| sector | string | — | Exact-match sector filter (e.g. "Technology"). |
| tickers | string | — | Comma-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.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | — | Opaque cursor. |
| limit | integer | — | Page 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).
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | — | Opaque cursor. |
| limit | integer | — | Page 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`.
| Name | Type | Req | Description |
|---|---|---|---|
| asof | string | — | Optional YYYY-MM-DD. Run the WHERE against historical close-of-day snapshot for this date. |
| cursor | string | — | Opaque cursor. |
| dir | string | — | Sort direction. |
| fields | string | — | Comma-separated extra columns to include in each result row beyond the default set. |
| limit | integer | — | Page size. Max 100. Default 50. |
| order | string | — | Sort column. Default day_change_pct. |
| q | string | yes | SQL 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). |
| universe | string | — | Optional 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).
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | — | Opaque cursor. |
| dir | string | — | Sort direction. |
| group_by | string | — | Comma-separated columns for aggregation (e.g. `date_trunc('day', time_published)`). |
| having | string | — | WHERE-style filter on aggregates. Requires group_by. |
| limit | integer | — | Page size. |
| order | string | — | Sort column or SELECT alias. Default time_published (non-aggregate) or volume (aggregate). |
| q | string | yes | SQL WHERE on news_article. Required. |
| select | string | — | Comma-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.
| Name | Type | Req | Description |
|---|---|---|---|
| cadence | string | — | Evaluation cadence. |
| name | string | — | Human-readable label. Defaults to a truncated version of the query. |
| q | string | yes | SQL WHERE expression — same grammar as scan. |
| target_url | string | — | Optional https URL to POST matches to. Omit for in-app delivery. |
| universe | string | — | Optional 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.
| Name | Type | Req | Description |
|---|---|---|---|
| cadence | string | — | Evaluation cadence. |
| condition | string | — | Required for numerics: single bound like ">70" or "<=200". Ignored for booleans. |
| name | string | — | Human-readable label. |
| signal | string | yes | Column name (e.g. golden_cross_today, rsi_14). |
| target_url | string | — | Optional https URL for delivery; omit for in-app. |
| ticker | string | — | Optional ticker to restrict the watch to one symbol. |
| universe | string | — | Optional 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.
| Name | Type | Req | Description |
|---|---|---|---|
| cadence | string | — | Evaluation cadence. |
| condition | string | yes | SQL WHERE fragment evaluated for this ticker (e.g. "rsi_14 > 70 AND gap_up"). |
| name | string | — | Human-readable label. |
| target_url | string | — | Optional https URL for delivery; omit for in-app. |
| ticker | string | yes | Symbol. |
No output schema declared.
No examples provided.