Skip to content

io.github.nirajagarwal/stox-mcp

by nirajagarwal · remote · no sign-in to list tools · v0.2.2 · published by GitHub user nirajagarwal

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

Changes · 5

6 tools: 5 change things and 1 only read.

Scanned Oct 21, 2026

No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http stox https://mcp.stox.market/mcp

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

6 tools

Changes things 5Claude Code: ask
  • fingerprintThe 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) …No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • market_regimeWhere 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 forwar…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • peersThe stock's TRUE competitive cluster — LLM-curated from segment overlap (who it actually competes with for revenue), not GICS classification.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • screenScreen 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…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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).

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • theme_clusterThe 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 la…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
Only reads 1Claude Code: allow
  • compareThe 16 percentile scores + P3 + 1Y price change for 2-5 tickers as one compact matrix (rows = metrics, columns = tickers).No findings

    Why it is in this group

    • The name "compare" says "compare": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Exfil surface

Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.

No private-data, untrusted-input, outbound path in this server alone: no tool is tagged private-data or untrusted-input or outbound.

Reads private data0
Reads files, mail, messages, databases, secrets, calendars or repositories.
Reads text others write0
Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
Can send data out0
Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.

Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.

Install

Pinned to version 0.2.2. Values in angle brackets are yours to fill in.

claude mcp add --transport http stox https://mcp.stox.market/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__stox__compare"
    ],
    "ask": [
      "mcp__stox__fingerprint",
      "mcp__stox__peers",
      "mcp__stox__theme_cluster",
      "mcp__stox__screen",
      "mcp__stox__market_regime"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as stox. Review it before you use it.