mcpField
T
TickerDB

TickerDB

Remote
github.com/tickerdbFinance5Updated 8w ago
Repository

About TickerDB

TickerDB is a market-data MCP server for agents analyzing stocks, ETFs, and crypto pairs. It provides pre-computed indicator states, historical transitions, and aftermath statistics alongside price data.

Key features

  1. 01Pre-computed technical and fundamental states
  2. 02Historical state-transition and aftermath statistics
  3. 03Daily and weekly OHLCV data
  4. 04Screen assets by state or ranked fields
  5. 05Watchlist summaries and change tracking

Use cases

  1. 01Screen for oversold stocks near support
  2. 02Review historical outcomes after an indicator state
  3. 03Track changes across a saved watchlist

MCP support

Exposes market-data tools to MCP clients through a hosted Streamable HTTP server or a local npm package using stdio. The hosted endpoint supports OAuth 2.1 and Bearer token authentication.

Configuration

Remote servers need no local install. Pick your client, then copy the config or install in one click.

Endpointhttps://mcp.tickerdb.com/mcp
Copy install command
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.

Packages
npmtickerdb-mcp1.8.6

Tools

9
ParameterTypeRequiredDescription
endstringNoRange end date (YYYY-MM-DD). Use with start for historical series.
bandstringNoFilter events to a specific band value (e.g. deep_oversold, strong_uptrend, stage_2_growth). For MA distance event fields such as trend_distance_ma40, grouped aliases above and below are also supported. Only used with field.
datestringNoHistorical date (YYYY-MM-DD) for a point-in-time snapshot. Requires Plus or Pro plan. Omit for latest.
metabooleanNoSnapshot and history modes only. Add true to include sibling _meta / status_meta stability objects across the response. Explicit *_meta field paths in fields still work without this flag.
afterstringNoReturn events after this date (YYYY-MM-DD). Only used with field.
fieldstringNoBand field name for event queries (e.g. momentum_rsi_zone, extremes_condition, trend_direction, trend_stage, pattern_bull_flag, pattern_ascending_triangle, pattern_rising_wedge, trend_ma8_slope through trend_ma200_slope, trend_ma_crossover_event, trend_distance_ma40, fundamentals_valuation_zone, fundamentals_free_cash_flow, insider_zone, sector_rsi_zone, momentum_divergence_detected, fundamentals_analyst_consensus). When provided, returns band transition history instead of a snapshot.
limitintegerNoFor event mode: max results (1-50), returned newest-first by default. For sample=even date ranges: requested sampled rows, capped by plan (Free 3, Plus 10, Pro 50).
startstringNoRange start date (YYYY-MM-DD). Use with end for historical series.
statsbooleanNoEvent mode only. Add true to return aggregate stats instead of raw event rows.
beforestringNoReturn events before this date (YYYY-MM-DD). Only used with field.
fieldsarrayNoOptional summary fields to return. Identity fields such as market_cap and market_cap_tier are always kept. Pass sections like ohlcv, trend, momentum, volatility, volume, patterns, extremes, support_level, resistance_level, fundamentals, sector_context, or levels (paid tiers). Or pass dotted paths like ohlcv.close, trend.direction, trend.stage, trend.ma_slopes.ma_8, trend.ma_slopes.ma_20, trend.ma_slopes.ma_40, trend.ma_slopes.ma_50, trend.ma_slopes.ma_100, trend.ma_slopes.ma_200, trend.moving_average_values.ma_8, trend.ma_crossover_event, trend.direction_meta, trend.distance_from_ma_band.ma_40, trend.volume_confirmation, momentum.rsi, momentum.rsi_zone, momentum.stochastic_k, momentum.stochastic_d, momentum.stochastic_zone, momentum.xtrm_score, momentum.divergence_detected, momentum.divergence_type, momentum.macd_state, patterns.bull_flag, patterns.bull_flag_breakout, patterns.bear_flag, patterns.bear_flag_breakdown, patterns.ascending_triangle, patterns.rising_wedge, volatility.squeeze_active, volatility.squeeze_days, volatility.regime_trend, volume.climax_detected, volume.climax_type, volume.accumulation_state, volume.price_direction_on_volume, support_level.level_price, support_level.status_meta, resistance_level.level_price, sector_context.rsi_zone, sector_context.trend, sector_context.agreement, sector_context.asset_vs_sector_rsi, sector_context.asset_vs_sector_trend, sector_context.oversold_count, sector_context.valuation_zone, fundamentals.pe_ratio, fundamentals.valuation_zone, fundamentals.growth_zone, fundamentals.free_cash_flow, fundamentals.earnings_proximity, fundamentals.earnings_proximity_basis, fundamentals.last_earnings_surprise, fundamentals.analyst_consensus, fundamentals.analyst_consensus_direction, fundamentals.valuation_percentile, fundamentals.pe_vs_historical_zone, fundamentals.pe_vs_sector_zone, fundamentals.insider_activity, fundamentals.insider_activity.zone, fundamentals.insider_activity.net_direction, levels, levels.support_levels, levels.resistance_levels. trend.stage is populated on weekly snapshots when stage evidence is sufficient. Event field names should prefer full schema names such as momentum_rsi_zone, extremes_condition, trend_stage, pattern_bull_flag, pattern_ascending_triangle, pattern_rising_wedge, trend_ma8_slope through trend_ma200_slope, trend_ma_crossover_event, trend_distance_ma40, fundamentals_valuation_zone, fundamentals_free_cash_flow, insider_zone, sector_rsi_zone, momentum_divergence_detected, and fundamentals_analyst_consensus.
sampleenumNoDate range mode only. Use 'even' to evenly distribute snapshots across the full start/end range.even
tickerstringYesTicker symbol, e.g. AAPL, BTCUSD, SPY
timeframeenumNoAnalysis timeframe. Default: dailydaily | weekly
context_bandstringNoOnly return events where the context ticker was in this band (e.g. downtrend). For MA distance context fields, grouped aliases above and below are also supported. Must be provided with context_ticker and context_field.
context_fieldstringNoBand field to check on the context ticker (e.g. trend_direction, trend_stage, or trend_distance_ma40). Must be provided with context_ticker and context_band.
context_tickerstringNoCross-asset correlation: a second ticker to filter against (e.g. SPY). Requires context_field and context_band. Plus/Pro only.

Details

From the project README

TickerDB — Stock market data for agents.

Pre-computed stock market data for AI agents. TickerDB returns indicators like trend_direction, support_level, and analyst_consensus as named states — plus what changed and what usually happens next.

10,000+ US stocks, ETFs, and crypto pairs · 182 indicators across trend, momentum, volatility, volume, patterns, support/resistance, fundamentals, and sector context · 7 years of history · tickerdb.com

Tools

ToolDescription
get_summaryTechnical + fundamental snapshot for a ticker. Historical lookups, state transition history, and what usually happens after
get_ohlcvDaily or weekly EOD candles for returns, charts, and backtests
get_searchScreen assets by categorical state or rank by fields like market_cap or pe_ratio
get_schemaDiscover all 182 fields and their valid band values
get_watchlistFull analytical summary for every ticker on your saved watchlist
get_watchlist_changesWhat changed on your watchlist — day-over-day or week-over-week
add_to_watchlistAdd tickers to your watchlist
remove_from_watchlistRemove tickers from your watchlist
get_accountAccount details, plan tier, and usage

All tools are available on every tier (Free, Plus, Pro). Tiers differ by credit limits, history depth, number of filters, and watchlist size. See tickerdb.com/pricing.

Quick start

Connect TickerDB to Claude, ChatGPT, or another MCP client (see Setup below), then try:

"Show me oversold large-cap stocks near support"

The agent calls get_search with filters for momentum_rsi_zone = oversold and market_cap_tier in [large, mega], then follows up with get_summary on individual results. No raw number crunching — the agent reads categorical states and reasons over them directly.

"What usually happens when AAPL goes oversold?"

get_summary with field=momentum_rsi_zone, band=oversold, stats=true returns aggregate aftermath distributions: how the stock performed 5, 10, 20, 50, and 100 days after each oversold entry over 7 years of history.

"What changed on my watchlist?"

get_watchlist_changes returns only the field-level state transitions since the last pipeline run — band entries, exits, and shifts — so the agent reports what moved without pulling full summaries for every ticker.

Why not just pass raw OHLCV?

A model can compute RSI from raw bars. But ask "Does AAPL look bullish?" with raw OHLCV and it burns its context on arithmetic — computing indicators one by one — instead of doing what you actually asked: noticing that RSI just hit oversold while institutions are accumulating, that the pullback is sharp but the 200-day uptrend is intact, that insiders have been selling all quarter. That's the analysis. Raw bars bury it under computation.

With TickerDB, the model sees "oversold", "accumulation", "strong_uptrend" and connects them immediately.

State transitions go further. "What happened the last time BTC was this oversold?" means computing RSI across 7 years of daily bars, finding every oversold entry, and calculating what happened after each one. With TickerDB it's one call: get_summary with field=momentum_rsi_zone, band=oversold, stats=true.

Setup

Hosted server (recommended)

The remote server at https://mcp.tickerdb.com/mcp supports OAuth 2.1 and Bearer token auth. Use Streamable HTTP transport (not legacy SSE).

ClientHow
Claude.aiSettings → Connectors → Add → https://mcp.tickerdb.com/mcp → Authorize
Claude Codeclaude mcp add --transport http --scope user tickerdb https://mcp.tickerdb.com/mcp
ChatGPTPlugins → + → https://mcp.tickerdb.com/mcp → Create → Authorize
Cursor.cursor/mcp.json → {"tickerdb": {"url": "https://mcp.tickerdb.com/mcp"}}
Any MCP clientStreamable HTTP to https://mcp.tickerdb.com/mcp with Authorization: Bearer tdb_...
npm package (local stdio)

For clients that prefer a local process (Claude Desktop, etc.):

{
  "mcpServers": {
    "tickerdb": {
      "command": "npx",
      "args": ["tickerdb-mcp"],
      "env": {
        "TICKERDB_KEY": "tdb_your_api_key_here"
      }
    }
  }
}

Get an API key at tickerdb.com/dashboard.

Structure

Three-package monorepo:

  • shared/ — Tool definitions, API client, and server factory (internal)
  • remote/ — Cloudflare Worker at mcp.tickerdb.com (Streamable HTTP + OAuth 2.1)
  • local/ — Published npm package tickerdb-mcp (stdio)

Both transports use the same tool definitions. The MCP server is a thin proxy — access control, rate limiting, and field filtering are handled by the TickerDB API.

Authentication
  • Bearer token — Authorization: Bearer tdb_...
  • OAuth 2.1 — dynamic client registration, PKCE, token exchange, revocation. /authorize redirects to tickerdb.com for consent.

Unauthenticated initialize and tools/list are permitted for tool discovery; tools/call requires auth and returns a 401 Bearer challenge with resource_metadata for clean re-authorization.

Session strategy

The remote worker defaults to stateless transport — intentionally. All tools are request/response stateless, and Cloudflare Worker memory is isolate-local. Stateless mode avoids edge session loss that can invalidate connector-discovered namespaces. Set MCP_SESSION_MODE=stateful for explicit session debugging.

Development

npm install                              # workspace dependencies
npm run build                            # type-check remote + shared
npx wrangler dev                         # remote dev server
cd local && npm install && npm run build  # npm package

Deployment

# Remote server
npx wrangler deploy

# npm + MCP Registry (recommended)
export MCP_PUBLISHER_KEY="your_saved_tickerdb_registry_private_key_hex"
./release.sh mcp patch

# npm only
cd local && npm version patch && npm run build && npm publish

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.