stox-mcp

Percentile fingerprints, curated peers, theme clusters & market-stress context for US stocks.

Should I use this

Quality & Safety

A
Description quality
95%
Schema completeness
78%
Naming quality
80%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (1)

  • LOWTool 'compare' description lacks action verbin compare

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,234Tokens (tool definitions)
~884 BTypical response size
Moderate attention impact (0.96% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "stox-mcp": {
      "url": "https://stox-mcp.fly.dev/mcp"
    }
  }
}

Remote endpoints

https://stox-mcp.fly.dev/mcpstreamable-http
https://mcp.stox.market/mcpstreamable-http

What it can do

Tool inventory

Tools (6)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢fingerprint(ticker, as_of)

The character of one stock in ~550 tokens: 16 percentile scores (vs the S&P 500 cohort) across four panels — Market Beat, Trend Persistence, Business Growth, Pressure (money flow) — plus the composite P3 score (the validated 3-factor form), curated competitive peers (not GICS), a one-line character read, and the price line. Use for 'is this number good?' and quick company character.

Input Schema

{
  "type": "object",
  "properties": {
    "ticker": {
      "type": "string",
      "description": "US ticker, e.g. NVDA"
    },
    "as_of": {
      "description": "RESERVED (phase 2): YYYY-MM-DD point-in-time snapshot; currently only the live snapshot is served",
      "type": "string"
    }
  },
  "required": [
    "ticker"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢compare(tickers)

The 16 percentile scores + P3 + 1Y price change for 2-5 tickers as one compact matrix (rows = metrics, columns = tickers). Use when weighing names against each other; percentiles make the comparison fair across sectors and sizes.

Input Schema

{
  "type": "object",
  "properties": {
    "tickers": {
      "minItems": 2,
      "maxItems": 5,
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "2-5 US tickers"
    }
  },
  "required": [
    "tickers"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢peers(ticker)

The stock's TRUE competitive cluster — LLM-curated from segment overlap (who it actually competes with for revenue), not GICS classification. Costco's peers are WMT/TGT/KR, not 'Discount Stores'. Each peer carries its P3 score. Honest empty list for monopolies/private-rival cases.

Input Schema

{
  "type": "object",
  "properties": {
    "ticker": {
      "type": "string"
    }
  },
  "required": [
    "ticker"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢theme_cluster(ticker)

The statistical theme a stock actually trades with: clusters built from years of price co-movement (market-removed residuals → random-matrix cleaning → Ward linkage), not sector labels. Returns the cluster's name, description, cohesion, sector mix and up to 20 member tickers. Different question from `peers` (business competition) — this is who it MOVES with.

Input Schema

{
  "type": "object",
  "properties": {
    "ticker": {
      "type": "string"
    }
  },
  "required": [
    "ticker"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢screen(filters, sort_by, min_perform, min_persist, min_profit, ...)

Screen the S&P 500 + NDX universe on ANY of the 16 percentile scores, with minimum AND maximum bounds, optionally within one GICS sector, sorted by the validated P3 composite or by any single metric. Metric keys: marketBeat1Y/1M/1W/1D (price vs SPY), rankPersistence52W/26W/13W + trendPersistence (rank stability), businessBeat + revGrowthYoy + marginGrowthYoy + fcfGrowthYoy (business growth), accumDistFlow/30/5/2 (money flow 60/30/5/2-day). Examples: momentum — {sort_by:'marketBeat1M', filters:[{metric:'businessBeat', min:70}]}; fallen leaders — {filters:[{metric:'rankPersistence52W', min:80},{metric:'marketBeat1Y', max:40}]}. Legacy min_perform/min_persist/min_profit/min_pressure still work (the four headline scores).

Input Schema

{
  "type": "object",
  "properties": {
    "filters": {
      "description": "bounds on any metrics; entries AND together",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "metric": {
            "type": "string",
            "description": "one of the 16 metric keys"
          },
          "min": {
            "type": "number",
            "minimum": 0,
            "maximum": 100
          },
          "max": {
            "type": "number",
            "minimum": 0,
            "maximum": 100
          }
        },
        "required": [
          "metric"
        ]
      }
    },
    "sort_by": {
      "description": "'p3' (default) or any metric key; descending",
      "type": "string"
    },
    "min_perform": {
      "type": "number",
      "minimum": 0,
      "maximum": 100
    },
    "min_persist": {
      "type": "number",
      "minimum": 0,
      "maximum": 100
    },
    "min_profit": {
      "type": "number",
      "minimum": 0,
      "maximum": 100
    },
    "min_pressure": {
      "type": "number",
      "minimum": 0,
      "maximum": 100
    },
    "sector": {
      "description": "GICS sector filter, e.g. 'Energy'",
      "type": "string"
    },
    "n": {
      "description": "max results (default 12)",
      "type": "number",
      "minimum": 1,
      "maximum": 25
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢market_regime

Where market stress sits right now: the dashboard's 8-indicator stance, each indicator's traffic-light band, the VIX 5-year percentile (the ONE input validated as predicting forward risk — blended composites tested worse), and the S2 stress-confirmation badge (SPY below its 40-week average AND VIX above its 80th percentile of the trailing year). Descriptive context, not a market call.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded6 tools
verifiedversion not recorded6 tools
verifiedversion not recorded6 tools
verifiedversion not recorded6 tools