# `com.predictionmarketspicks/quant` on anlyon.dev

> Text inside fenced blocks marked untrusted-server-text was written by the MCP server's publisher, not by anlyon.dev. It is data to inspect, not instructions to follow. Invisible characters are shown as [U+XXXX].
> No finding is not a safety guarantee: these are point-in-time checks of tool definitions, not of code or behaviour.

- Page: https://anlyon.dev/servers/com.predictionmarketspicks/quant
- JSON: https://anlyon.dev/api/v1/servers/com.predictionmarketspicks/quant
- Version: 1.28.0 (active)
- Publisher: com.predictionmarketspicks (domain proven to the MCP Registry)
- Runs: remote (streamable-http)
- Sign-in to list tools: none
- Repository: https://github.com/predictionmarketspicks/mcp
- Metadata from the official MCP Registry, synced 2026-10-22T14:17:40.466Z

Title and description, as the publisher wrote them:

```untrusted-server-text
Prediction Markets Quant
Free, no key: NFL + NBA prop boards, NHL model, Kalshi vs Polymarket gaps, Fed odds, EV/Kelly.
```

Scanned 2026-10-22T14:19:03.084Z over streamable-http.

**45 tools: 39 change things and 6 only read.**

| Group | Class | Tools | Claude Code |
| --- | --- | --- | --- |
| Deletes or cancels | destructive | 0 | deny |
| Can't be undone | irreversible | 0 | ask |
| Changes things | write | 39 | ask |
| Only reads | read | 6 | allow |

## Exfil surface

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

| Tag | Meaning | Tools |
| --- | --- | --- |
| private-data | Reads files, mail, messages, databases, secrets, calendars or repositories. | none |
| untrusted-input | Brings in text someone else can write: web pages, inbound email, messages, issues and comments. | `mcp__quant__best_price` `mcp__quant__commodity_edge` `mcp__quant__edge_alerts` `mcp__quant__fifteen_min_board` `mcp__quant__find_arbitrage` `mcp__quant__ladder_arb` `mcp__quant__market_pulse` `mcp__quant__my_league` `mcp__quant__nba_game_board` `mcp__quant__nba_injury_impact` `mcp__quant__nba_prop_board` `mcp__quant__nfl_edge` `mcp__quant__nfl_ladder` `mcp__quant__nfl_prop_board` `mcp__quant__nfl_prop_edge` `mcp__quant__nhl_edge` `mcp__quant__perp_liquidation` `mcp__quant__perps_board` `mcp__quant__race_odds` `mcp__quant__scan_mispricings` `mcp__quant__senate_map` `mcp__quant__start_sit` `mcp__quant__track_record` `mcp__quant__waiver_targets` `mcp__quant__weather_board` |
| outbound | Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL. | none |

## Findings

- **warn** Annotations that disagree with the tool in `bayes_update` ([annotation-conflict](https://anlyon.dev/methodology#annotation-conflict))

```untrusted-server-text
The server marks "bayes_update" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "bayes_update" says "update": a word for a change.
```

- **warn** Annotations that disagree with the tool in `convert_probability` ([annotation-conflict](https://anlyon.dev/methodology#annotation-conflict))

```untrusted-server-text
The server marks "convert_probability" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "convert_probability" says "convert": a word for a change.
```

- **warn** Annotations that disagree with the tool in `start_sit` ([annotation-conflict](https://anlyon.dev/methodology#annotation-conflict))

```untrusted-server-text
The server marks "start_sit" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "start_sit" says "start": a word for a change.
```


## Changes things (39)

Creates or changes something that can be changed back. Claude Code: ask.

### `adp_market_gaps`

- 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:

```untrusted-server-text
In season: Kalshi vs book-consensus gaps on this week's NFL props, widest first, filter by position. Free. (ADP gaps return in the 2027 offseason.)
```

### `base_rate_gap`

- 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:

```untrusted-server-text
Use for "how does this price compare to history" and "is the market ignoring the base rate". Compares a market price with the historical base rate for a class of events: the gap in pp, a signal, and sample-size quality. Pass a known baseRateId (the parameter lists them) or your own baseRateValue.
```

### `bayes_update`

- The name "bayes_update" says "update": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
- Findings: warn annotation-conflict

Description, as the server wrote it:

```untrusted-server-text
Update a prior probability with one or more pieces of evidence using Bayes theorem. Given a prior and a list of evidence items (each with P(evidence | true) and P(evidence | false)), returns the posterior probability and the per-step chain. Use for "update my estimate with new information", "posterior probability", "how does this news change the odds".
```

### `best_available`

- 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:

```untrusted-server-text
In season: where the best available PRICE is on this week's NFL props — strikes where Kalshi and the book consensus are 5¢+ apart. Free.
```

### `best_price`

- 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.
- Tag untrusted-input: The server marks it openWorldHint: true: it reaches things outside the server's own data.

Description, as the server wrote it:

```untrusted-server-text
Use for "where is it cheapest to buy", "Kalshi or Polymarket US for the Bears game" and "cheapest venue for the Georgia Senate race". The same contract on Kalshi, Polymarket US and Novig as the cost to buy one contract including each venue's taker fee, with the cheapest named. Sports games (team, league or matchup), 2026 midterm races (state, slug or district) or the next FOMC meeting. Ranked by price only.
```

### `calculate_ev`

- 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:

```untrusted-server-text
Use for "is this contract mispriced" and "what is my edge". Give a Kalshi or Polymarket price in cents and your own probability; returns the % expected-value edge and a BUY / SELL / SKIP read.
```

### `combo_edge`

- 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:

```untrusted-server-text
Use for "price a same-game NFL combo" and "is this combo worth it". Pass nflGame ("NYG-LAR", "Giants vs Rams") to list that game's Kalshi legs — moneyline, spreads, totals, player props — then legIds to price your pick with the correlation done for you. Or pass legPrices + trueWinProbability for a fair band; add offeredOdds for EV and a verdict. Free.
```

### `commodity_edge`

- 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.
- Tag untrusted-input: The server marks it openWorldHint: true: it reaches things outside the server's own data.

Description, as the server wrote it:

```untrusted-server-text
Use for "gold edge today" and "oil or bitcoin trade signal". The Kalshi daily gold, silver or WTI strike, or hourly bitcoin strike, with the largest PMP model edge, as a ticket: side, entry price, resolve criterion, model probability, edge, tier and quarter-Kelly size. Pass tickers[] to check a watchlist. Pro — sign in with PredictionMarketsPicks, or a Pro API key.
```

### `convert_probability`

- The name "convert_probability" says "convert": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
- Findings: warn annotation-conflict

Description, as the server wrote it:

```untrusted-server-text
Convert between implied probability, American odds, and decimal odds. Give one value and its format and get all three back (American odds carry no commas, e.g. +441 or -200). Use for "what is +150 as a probability", "convert 62% to American odds", "decimal to implied odds".
```

### `draft_board`

- 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:

```untrusted-server-text
In season: this week's QB/RB/WR/TE rankings by the median Kalshi prices each player at (pass/rush/rec yds), plus anytime-TD price. Free. (Draft board returns in 2027.)
```

### `edge_alerts`

- 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.
- Tag untrusted-input: The server marks it openWorldHint: true: it reaches things outside the server's own data.

Description, as the server wrote it:

```untrusted-server-text
Use for "any edge on Kalshi" and "weather trade signals". Our model alerts on Kalshi — weather, bitcoin/silver/gold/oil, mispricings — with feed, tier, side, price, model probability, edge and link. Real time with Pro; free is delayed 24h without the thesis. One identical, impersonal feed for every subscriber; filters only select. Informational, not investment advice.
```

### `fed_rate_odds`

- 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:

```untrusted-server-text
Use for "will the Fed cut, hold or hike" and "next FOMC meeting odds". Live Kalshi odds for each remaining 2026 FOMC meeting: the next meeting's full strike breakdown and days-until, the rate path, the current fed funds rate, and a next-meeting cross-venue check against Polymarket and CME futures, with the gap in pp.
```

### `fifteen_min_board`

- 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.
- Tag untrusted-input: The server marks it openWorldHint: true: it reaches things outside the server's own data.

Description, as the server wrote it:

```untrusted-server-text
Use for "what is the ETH 15-minute market doing" and "which Kalshi 15-minute markets are open". Every Kalshi 15-minute up-or-down series — crypto, metals, energy, FX — with window status, YES price, close time, target price, what it settles on and the up rate over the last 96 windows, plus the same window on Polymarket (international) for BTC, ETH, SOL and XRP with each venue's settlement index and a graded record of the two venues on the same Bitcoin windows, and our Bitcoin top-of-hour strategy (v2 — the version our bot trades live, with its live and paper record). Pass series ("eth", "KXBTC15M") or asset_class.
```

### `kelly_size`

- 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:

```untrusted-server-text
Compute the optimal Kelly position size for a prediction-market contract. Given your win probability, the market price (which sets the payout), your bankroll, and a Kelly fraction (full / half / quarter / eighth), returns the dollar stake and a risk rating. Use for "how much should I stake", "what is my position size", "Kelly sizing for this trade".
```

### `ladder_arb`

- 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.
- Tag untrusted-input: The server marks it openWorldHint: true: it reaches things outside the server's own data.

Description, as the server wrote it:

```untrusted-server-text
Use for "is any CFB ladder mispriced" and "where can I make a market on Kalshi". Kalshi college football and NFL spread/total strikes priced out of order: locked arbitrage, crossed-mid inversions and wide books worth making a market in, with both tickers and books, gross edge, volume and tier. Pro adds the resting orders, net-of-fee edge and quarter-Kelly size.
```

### `market_pulse`

- 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.
- Tag untrusted-input: The server marks it openWorldHint: true: it reaches things outside the server's own data.

Description, as the server wrote it:

```untrusted-server-text
The US macro-health composite (0–100) and regime plus the six category scores (growth, labor, inflation, rates, liquidity, sentiment). Returns the composite, the regime call and 2 category scores without an account, 4 to a signed-in account, and all six with Pro. Use for "how is the US economy", "macro regime", "risk-on or risk-off".
```

### `my_league`

- 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.
- Tag untrusted-input: The server marks it openWorldHint: true: it reaches things outside the server's own data.

Description, as the server wrote it:

```untrusted-server-text
Use for "show my fantasy team" and "what is Kalshi pricing my starters at". Give a Sleeper username (and a league name if you have several): your roster, each starter's opponent and kickoff, OUT and QB-gate flags, and every Kalshi prop strike on him this week with the best price per side. Market data; Pro adds our weekly projection.
```

### `nba_game_board`

- 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.
- Tag untrusted-input: The server marks it openWorldHint: true: it reaches things outside the server's own data.

Description, as the server wrote it:

```untrusted-server-text
Use for "Knicks moneyline on Kalshi vs the books" and "cheapest place for the Celtics spread tonight". Kalshi NBA moneyline, spread and total beside DraftKings, FanDuel, BetRivers, Fanatics, ESPN, Novig and ProphetX at the same line: the cheapest venue per side, Kalshi fee included. Market prices only, no model.
```

### `nba_injury_impact`

- 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.
- Tag untrusted-input: The server marks it openWorldHint: true: it reaches things outside the server's own data.

Description, as the server wrote it:

```untrusted-server-text
Use for "Embiid's out tonight — who benefits?" and "who's out in the NBA today". Today's NBA absences from the official injury report, and for each absent star the teammates whose minutes, points, rebounds, assists and usage rose in past games without him (last two seasons, sample size on every row), beside today's Kalshi prop prices. Questionable players fork into plays/sits branches until ruled. Historical splits only, no projection.
```

### `nba_prop_board`

- 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.
- Tag untrusted-input: The server marks it openWorldHint: true: it reaches things outside the server's own data.

Description, as the server wrote it:

```untrusted-server-text
Use for "where is LeBron's points line cheapest tonight". Every Kalshi NBA player-prop strike (points, rebounds, assists, threes) beside DraftKings, FanDuel, BetRivers, Fanatics, ESPN, Novig and ProphetX at the same strike: the cheapest venue per side, Kalshi fee included. Market prices only, no model.
```

### `nfl_edge`

- 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.
- Tag untrusted-input: The server marks it openWorldHint: true: it reaches things outside the server's own data.

Description, as the server wrote it:

```untrusted-server-text
Use for "which NFL games are mispriced on Kalshi" and "NFL win total, MVP or Super Bowl edges". Our NFL model vs live Kalshi prices — this week's game positions, season win totals, MVP and championship odds: model probability, price, edge and side. tickers[] checks a watchlist (futures, mvp, championship). Pro — sign in with PredictionMarketsPicks, or a Pro API key.
```

### `nfl_ladder`

- 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.
- Tag untrusted-input: The server marks it openWorldHint: true: it reaches things outside the server's own data.

Description, as the server wrote it:

```untrusted-server-text
Use for "where does the model disagree with Kalshi on the Rams spread" and "biggest ladder gaps this week". Every NFL strike ladder — spreads, season win totals, player props — with Kalshi's price at each strike beside our distribution and a SHAPE / LOCATION / PRICED / PARTIAL verdict. Our number is published only between 30% and 70%.
```

### `nfl_power_ratings`

- 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:

```untrusted-server-text
The PredictionMarketsPicks NFL power ratings — PWR for all 32 teams: points per game above an average team on a neutral field, where PWR = Off PR + Def PR + ST PR. Includes each team's rank and tier. Use for "best NFL teams by power rating", "NFL power rankings 2026", "is Baltimore overrated", "how good is Kansas City", "NFL team ratings".
```

### `nfl_prop_board`

- 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.
- Tag untrusted-input: The server marks it openWorldHint: true: it reaches things outside the server's own data.

Description, as the server wrote it:

```untrusted-server-text
Use for "where is the best price on <player> receiving yards" and "is Kalshi cheaper than the books". Best price on every NFL prop this week: Kalshi (fee included) vs five books (DraftKings, FanDuel, BetRivers, Fanatics, ESPN) and the Novig and ProphetX exchanges — the best price per side, how much cheaper Kalshi is than the books, the consensus gap, and the Kalshi close once a strike settles. Filter by team, game, player or stat.
```

### `nfl_prop_edge`

- 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.
- Tag untrusted-input: The server marks it openWorldHint: true: it reaches things outside the server's own data.

Description, as the server wrote it:

```untrusted-server-text
Use for "best NFL props today" and "receiving yards prop value". Our projection vs the Kalshi "X or more" prop line: the contract, the YES/NO call, our odds and Kalshi's price for that side, the projection and the edge, with WATCH rows labelled. Live in season. Pro — sign in with PredictionMarketsPicks, or a Pro API key.
```

### `nfl_win_probability`

- 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:

```untrusted-server-text
Use for "who wins Chiefs vs 49ers" and "what does a -7 spread mean". Pass homeTeam + awayTeam (or game, or one team) for our QB-gated model line (raw power ratings if unscheduled), or a spread (home favored negative). Returns win, cover and over/under probability, the projected score and our own total; neutral-site games get no home edge.
```

### `nhl_edge`

- 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.
- Tag untrusted-input: The server marks it openWorldHint: true: it reaches things outside the server's own data.

Description, as the server wrote it:

```untrusted-server-text
Use for "NHL predictions tonight" and "Stanley Cup odds". Tonight's NHL games on Kalshi — moneyline, puck line, totals, period markets — as Market · Model · Fair, starting goalies checked first. market=goals: anytime and first-goal contracts; market=futures: Cup, conference and division markets on Kalshi and Polymarket (international book) vs a 10,000-season sim. Free.
```

### `perp_liquidation`

- 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.
- Tag untrusted-input: The server marks it openWorldHint: true: it reaches things outside the server's own data.

Description, as the server wrote it:

```untrusted-server-text
Use for "where does a 5x bitcoin long liquidate on Kalshi". Estimates a Kalshi perp's liquidation price and the % move to it from Kalshi's risk parameters (a 5x BTC long is about 8% away, not the 20% the 100÷leverage rule implies), plus fees and expected funding. An estimate; Kalshi's app shows the exact one. Assets: btc, eth, sol, xrp, doge, hype, link, gold, silver, platinum, palladium. Free.
```

### `perps_board`

- 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.
- Tag untrusted-input: The server marks it openWorldHint: true: it reaches things outside the server's own data.

Description, as the server wrote it:

```untrusted-server-text
Use for "Kalshi perps funding rate" and "how much leverage on Kalshi gold perps". Every Kalshi perpetual future: price, 24h volume, open interest, max leverage long and short, funding cadence, and what funding has cost a long since launch. Pass asset ("btc", "gold") for one.
```

### `player_outlook`

- 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:

```untrusted-server-text
One NFL player this week — every Kalshi prop line, the best price across venues, and our probability at each strike. Free. Use for "is <player> a good play this week", "<player> props".
```

### `race_odds`

- 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.
- Tag untrusted-input: The server marks it openWorldHint: true: it reaches things outside the server's own data.

Description, as the server wrote it:

```untrusted-server-text
Use for "who wins the Kansas Senate race" and "Michigan governor odds". Live Kalshi odds for one 2026 Senate, governor or competitive House race, by state, code, slug or district ("TX-34"): every leg's price, volume and link, the seat holder and rating, forecaster bands, and the race page. Prices are never estimated.
```

### `scan_mispricings`

- 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.
- Tag untrusted-input: The server marks it openWorldHint: true: it reaches things outside the server's own data.

Description, as the server wrote it:

```untrusted-server-text
Scan Polymarket contracts for mispricings against the PMP model (a probability swarm). Returns each market where the model disagrees with the price, the direction to take, the edge in percentage points, and quarter-Kelly sizing, sorted by absolute edge. The scanner is being rebuilt for the 2026 midterms and usually returns no rows today; the response says when it last ran. Pro — sign in with PredictionMarketsPicks, or a Pro API key. Use for "where is the edge today", "mispriced markets", "what should I trade".
```

### `senate_map`

- 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.
- Tag untrusted-input: The server marks it openWorldHint: true: it reaches things outside the server's own data.

Description, as the server wrote it:

```untrusted-server-text
Use for "2026 Senate map" and "which Senate seats are toss-ups". Every 2026 Senate seat: holder and role, structure rating, forecaster bands where tracked, and the live Kalshi price (Democrat win probability where provable), closest race first, with a page URL per seat. Prices are never estimated — an unpriced seat returns null.
```

### `sleepers_and_busts`

- 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:

```untrusted-server-text
Every NFL player whose Kalshi prop price the PredictionMarketsPicks model disagrees with this week, ranked, each marked underpriced (model above the market) or overpriced (model below) with the stat driving it. Free, the complete list, no key. Which strike, at what price and by how much is the Pro nfl_prop_edge tool. Use for "undervalued players this week", "who is the market overpricing", "which players is the market wrong on", "overrated players week N", "where does your model disagree with the market most", "sleepers this week", "busts to avoid this week".
```

### `start_sit`

- The name "start_sit" says "start": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
- Tag untrusted-input: The server marks it openWorldHint: true: it reaches things outside the server's own data.
- Findings: warn annotation-conflict

Description, as the server wrote it:

```untrusted-server-text
Use for "should I start Nacua or Adams" and "who does the market like more this week". For 2–4 players: the median Kalshi is pricing for each stat (read off his own strike ladder) and his anytime-TD price, compared on the stats they share. Market prices only — the call stays yours; Pro adds our weekly projection.
```

### `track_record`

- 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.
- Tag untrusted-input: The server marks it openWorldHint: true: it reaches things outside the server's own data.

Description, as the server wrote it:

```untrusted-server-text
Use for "how accurate is your model" and "what's your track record". Every graded PredictionMarketsPicks signal per engine (bitcoin, gold, silver, oil, weather, NHL) and the daily editorial call (POTD): W-L, net P/L, a 95% win-rate range and the current model era, and the NFL model's backtest. WATCH calls are reported apart.
```

### `waiver_targets`

- 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.
- Tag untrusted-input: The server marks it openWorldHint: true: it reaches things outside the server's own data.

Description, as the server wrote it:

```untrusted-server-text
Use for "who is everyone adding off waivers" and "trending waiver adds this week". Sleeper's most-added players in the last 24 hours with what Kalshi is pricing each at this week; pass position, and a Sleeper username + league to see only players still available. Market data only.
```

### `weather_board`

- 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.
- Tag untrusted-input: The server marks it openWorldHint: true: it reaches things outside the server's own data.

Description, as the server wrote it:

```untrusted-server-text
Use for "Kalshi NYC high temperature odds". Every open Kalshi daily-high strike in 13 cities: YES price, settlement station and source, the strict-comparison rule, close time, and the NWS forecast high beside it. Pass city ("nyc", "KXHIGHCHI"). Market data only.
```

### `who_do_i_draft`

- 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:

```untrusted-server-text
In season: the Kalshi props listed on the players you name (2–4), with the best price per strike. Free. Pass roster: ['Player A', 'Player B'].
```

## Only reads (6)

Looks things up and changes nothing. Claude Code: allow.

### `compare_players`

- The name "compare_players" says "compare": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
Compare 2–4 NFL players this week: every Kalshi prop strike each has, the best price per side across venues, our probability where we publish one, and a ranked verdict on whose price the model disagrees with most, and on which strike. Use for "<A> or <B> this week", "compare <A> and <B> props", "who has the better prop, <A> or <B>", "<A> vs <B> receiving yards".
```

### `explain_game`

- The name "explain_game" says "explain": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
Why the PredictionMarketsPicks model prices one NFL game where it does: the Kalshi price and market line, our published win probability and what it is anchored to, the model's own line as a lean in points, each team's power rating split into offense, defense and special teams, the QB gate (PASS, ADJUSTED, FORK with both lines, or HOLD), and the published position (side, Kalshi price, edge) or why none is published. Use for "why do you price <team> vs <team> there", "explain the <team> game line", "what is driving the model on <team>'s game". Pass game as two teams in any form ("Bills vs Chiefs", "BUF@KC") or one team for its game; week defaults to the current week.
```

### `explain_ladder`

- The name "explain_ladder" says "explain": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
Why PredictionMarketsPicks' Ladder reads one NFL strike ladder the way it does — a game's spread, a team's season win total, or a player's prop: the read (SHAPE, LOCATION, PRICED, MARKET READ or QB HOLD) in words — which way our curve leans, or whether it is tighter or wider than Kalshi's and where they cross — where Kalshi's ladder centres beside our projection, the widest published gap, and every listed strike with Kalshi's price and our number where we publish one (30–70% only). One ladder per call. Use for "explain the Chiefs win total ladder", "why does the ladder lean Browns", "what does SHAPE mean on <player> receptions".
```

### `explain_player`

- The name "explain_player" says "explain": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
Why the PredictionMarketsPicks model prices an NFL player's Kalshi prop strikes where it does this week: the projection, The Ladder's verdict (SHAPE, LOCATION, PRICED or market-only), the widest published model-vs-market gap, and what the model does NOT account for. Our number appears only where it is measured calibrated (30–70%). Use for "why do you price <player> there", "explain <player>'s prop", "what's driving the model on <player>", "why is <player>'s over priced at that".
```

### `explain_prop`

- The name "explain_prop" says "explain": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
Why PredictionMarketsPicks publishes a call on one NFL player prop this week: the Kalshi contract, the YES/NO call and Kalshi's price for that side, our tier and — where our probability is measured calibrated — our odds, our projection against the threshold, whether it is published or held at WATCH (and why), The Ladder's read on that stat, and what the model does not account for. One contract per call. Use for "why do you like <player>'s over", "explain the <player> prop", "why is <player> on your board". For the full strike ladder use explain_player.
```

### `find_arbitrage`

- The name "find_arbitrage" says "find": a word for reading.
- Tag untrusted-input: The server marks it openWorldHint: true: it reaches things outside the server's own data.

Description, as the server wrote it:

```untrusted-server-text
Use for "where is the arbitrage" and "Kalshi vs Polymarket price gaps". Cross-venue gaps on the same sports contract (NFL, NBA, NHL, MLB) against Polymarket's international book: the gap in pp, the WATCH/ARB signal, the cheaper venue and whether both contracts settle the same way (settlement_match). Free: the top 3 gaps in full; Pro returns the whole board.
```

## Claude Code permissions

For `.claude/settings.json`, assuming the server is installed as `quant`:

```json
{
  "permissions": {
    "allow": [
      "mcp__quant__find_arbitrage",
      "mcp__quant__explain_player",
      "mcp__quant__explain_game",
      "mcp__quant__explain_prop",
      "mcp__quant__explain_ladder",
      "mcp__quant__compare_players"
    ],
    "ask": [
      "mcp__quant__fed_rate_odds",
      "mcp__quant__calculate_ev",
      "mcp__quant__kelly_size",
      "mcp__quant__bayes_update",
      "mcp__quant__convert_probability",
      "mcp__quant__base_rate_gap",
      "mcp__quant__combo_edge",
      "mcp__quant__nfl_power_ratings",
      "mcp__quant__nfl_win_probability",
      "mcp__quant__market_pulse",
      "mcp__quant__commodity_edge",
      "mcp__quant__scan_mispricings",
      "mcp__quant__edge_alerts",
      "mcp__quant__nfl_edge",
      "mcp__quant__nfl_prop_edge",
      "mcp__quant__nhl_edge",
      "mcp__quant__nfl_prop_board",
      "mcp__quant__nba_prop_board",
      "mcp__quant__nba_game_board",
      "mcp__quant__nba_injury_impact",
      "mcp__quant__nfl_ladder",
      "mcp__quant__ladder_arb",
      "mcp__quant__fifteen_min_board",
      "mcp__quant__weather_board",
      "mcp__quant__track_record",
      "mcp__quant__my_league",
      "mcp__quant__start_sit",
      "mcp__quant__waiver_targets",
      "mcp__quant__perps_board",
      "mcp__quant__perp_liquidation",
      "mcp__quant__senate_map",
      "mcp__quant__race_odds",
      "mcp__quant__best_price",
      "mcp__quant__draft_board",
      "mcp__quant__best_available",
      "mcp__quant__player_outlook",
      "mcp__quant__sleepers_and_busts",
      "mcp__quant__who_do_i_draft",
      "mcp__quant__adp_market_gaps"
    ],
    "deny": []
  }
}
```

Capability tags behind the rules (a read tagged outbound is asked about):

- `mcp__quant__find_arbitrage`: untrusted-input
- `mcp__quant__market_pulse`: untrusted-input
- `mcp__quant__commodity_edge`: untrusted-input
- `mcp__quant__scan_mispricings`: untrusted-input
- `mcp__quant__edge_alerts`: untrusted-input
- `mcp__quant__nfl_edge`: untrusted-input
- `mcp__quant__nfl_prop_edge`: untrusted-input
- `mcp__quant__nhl_edge`: untrusted-input
- `mcp__quant__nfl_prop_board`: untrusted-input
- `mcp__quant__nba_prop_board`: untrusted-input
- `mcp__quant__nba_game_board`: untrusted-input
- `mcp__quant__nba_injury_impact`: untrusted-input
- `mcp__quant__nfl_ladder`: untrusted-input
- `mcp__quant__ladder_arb`: untrusted-input
- `mcp__quant__fifteen_min_board`: untrusted-input
- `mcp__quant__weather_board`: untrusted-input
- `mcp__quant__track_record`: untrusted-input
- `mcp__quant__my_league`: untrusted-input
- `mcp__quant__start_sit`: untrusted-input
- `mcp__quant__waiver_targets`: untrusted-input
- `mcp__quant__perps_board`: untrusted-input
- `mcp__quant__perp_liquidation`: untrusted-input
- `mcp__quant__senate_map`: untrusted-input
- `mcp__quant__race_odds`: untrusted-input
- `mcp__quant__best_price`: untrusted-input

## Remote posture

What an anonymous client saw at the remote endpoint, last 2026-10-22T15:19:50.638Z, unchanged since 2026-10-22T15:19:50.638Z. No credentials were sent and no tool was called. Values are shown as the endpoint returned them. Method: https://anlyon.dev/methodology#remote-posture

| Fact | Observed |
| --- | --- |
| Reachable | `yes` |
| HTTP status of an anonymous initialize | `200` |
| tools/list served without credentials | `yes` |
| Tools that change things, listed without credentials | `39` |
| Protocol version | `2025-06-18` |
| WWW-Authenticate on 401 | `not observed` |
| resource_metadata in WWW-Authenticate | `none` |
| RFC 9728 protected resource metadata | `none` |
| Authorization servers | `none` |
| Legacy HTTP+SSE transport | `no` |
| Dynamic client registration | `not observed` |
| Client ID metadata documents | `not observed` |

- **warn** Tools that change things, listed to anyone ([unauth-remote-writes](https://anlyon.dev/methodology#unauth-remote-writes))

```untrusted-server-text
The endpoint served tools/list without credentials, and the list has 39 tools that change things (39 write). Whether a call also works without credentials was not tested: tools are never called.

https://predictionmarketspicks.com/api/mcp/mcp?via=registry: tools/list returned 45 tools to an anonymous client, including fed_rate_odds (write), calculate_ev (write), kelly_size (write), bayes_update (write), convert_probability (write) and 34 more
```
