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.
6 tools: 5 change things and 1 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things5Claude Code: ask: see these tools
- Only reads1Claude Code: allow: see these tools
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/mcpTools
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/mcpRun 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.
{
"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.
