propline-mcp 0.35.5 → 0.37.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -30,7 +30,7 @@ The model uses these tools transparently:
30
30
  | `propline_get_odds` | Live odds — bulk by sport or full props per event. Accepts `period` (q1/h1/p1/f5/…) to scope to game-period markets. |
31
31
  | `propline_get_odds_history` | Hobby+: snapshot history per outcome; supports `period` (q1/h1/…) plus time-window filters (from/to, relative_from/relative_to, interval, changes_only) |
32
32
  | `propline_get_odds_closing` | Hobby+: opening **and** closing line per (book, market, outcome) — CLV helper. Accepts `period` to scope to a specific game period. |
33
- | `propline_grade_clv` | Hobby+: grade **placed** bets against their closing lines. Returns closing price, de-vigged closing fair (`fair_source` = sharpest book at close, not yours), `clv_pct` (price-vs-price, vig-blind) **and** `ev_vs_close_pct` (the honest number), plus the graded result once the game settles. Fail-closed matching; unstarted events come back `closing_is_final: false` and are excluded from the averages. |
33
+ | `propline_grade_clv` | Hobby+: grade **placed** bets against their closing lines. Returns closing price, de-vigged closing fair (`fair_source` = sharpest book at close, not yours), `clv_pct` (price-vs-price, vig-blind) **and** `ev_vs_close_pct` (the honest number), plus the graded result once the game settles. Fail-closed matching; unstarted events come back `closing_is_final: false` and are excluded from the averages. `devig`: multiplicative or shin. |
34
34
  | `propline_price_sgp` | Hobby+: price a same-game parlay at the **book's own** correlated odds (FanDuel, DraftKings, BetOnline, LowVig — or `bookmaker: "all"` for every book side by side with `best_bookmaker`). Returns `sgp_price`, `independent_price` (product of the live single-leg prices) and `correlation_factor` (their ratio). Legs are named exactly as `/odds` names an outcome; matching is fail-closed. |
35
35
  | `propline_export_odds_history` | Backfill-pass / Enterprise: bulk line-movement tick history (every snapshot, per book) for a sport. Requires a `since`/`until` window; result capped to 200 rows (use the REST endpoint directly for the full file). |
36
36
  | `propline_get_futures` | Season-long futures — championship/division/conference winners, MVP + awards, season win totals — across Bovada/FanDuel/DraftKings/Pinnacle/Kalshi (free) |
@@ -46,7 +46,7 @@ The model uses these tools transparently:
46
46
  | `propline_get_player_history` | Player prop history with resolution |
47
47
  | `propline_get_player_games` | Player game log — recent games with every raw box-score stat per game, one call instead of one per event; `opponent` gives head-to-head (last N *meetings*). Raw-stat archive, so it includes games no book priced |
48
48
  | `propline_get_player_trends` | Hit-rate trends — over/under/push splits over last 5/10/20/50 graded games, streak, avg actual (optional `dfs_odds_type` to scope to a PrizePicks flavor) |
49
- | `propline_get_event_ev` | Pro: cross-book +EV with no-vig fair lines |
49
+ | `propline_get_event_ev` | Pro: cross-book +EV with no-vig fair lines (`devig`: multiplicative or shin) |
50
50
  | `propline_get_event_projections` | Hobby+: market-implied consensus projection per (market, player) |
51
51
  | `propline_get_best_line` | Hobby+: cross-book line shopping — best price per (market, player, line) across all comparable books, `all_prices` sorted best-first; optional `bookmakers` filter |
52
52
  | `propline_list_webhooks` | Streaming Lite+: list webhook subscriptions (read-only, secrets masked) |
package/dist/http.js CHANGED
@@ -159,8 +159,9 @@ var PropLineClient = class {
159
159
  * See the propline_grade_clv tool description for the semantics that
160
160
  * matter when presenting the result.
161
161
  */
162
- gradeClv(bets) {
163
- return this.postRequest("/v1/clv/grade", bets);
162
+ gradeClv(bets, devig) {
163
+ const qs = devig ? `?devig=${encodeURIComponent(devig)}` : "";
164
+ return this.postRequest(`/v1/clv/grade${qs}`, bets);
164
165
  }
165
166
  /**
166
167
  * Price a same-game parlay at the book's own correlated odds (FanDuel
@@ -259,7 +260,8 @@ var PropLineClient = class {
259
260
  getEventEv(sportKey, eventId, opts = {}) {
260
261
  return this.request(`/v1/sports/${sportKey}/events/${eventId}/ev`, {
261
262
  markets: opts.markets,
262
- bookmakers: opts.bookmakers
263
+ bookmakers: opts.bookmakers,
264
+ devig: opts.devig
263
265
  });
264
266
  }
265
267
  getEventProjections(sportKey, eventId, opts = {}) {
@@ -299,7 +301,7 @@ var PropLineClient = class {
299
301
  };
300
302
 
301
303
  // src/server.ts
302
- var VERSION = "0.35.5";
304
+ var VERSION = "0.37.0";
303
305
  var DEMO_KEY = "be2b8487fcfacb1fbc292a8aa925a84c";
304
306
  var apiKey = process.env.PROPLINE_API_KEY;
305
307
  var baseUrl = process.env.PROPLINE_BASE_URL;
@@ -587,12 +589,17 @@ var tools = [
587
589
  ],
588
590
  additionalProperties: false
589
591
  }
592
+ },
593
+ devig: {
594
+ type: "string",
595
+ enum: ["multiplicative", "shin"],
596
+ description: "How the closing anchor's vig is removed before closing_fair_prob / ev_vs_close_pct. 'multiplicative' (default) or 'shin' (loads the overround onto the longshot). Same vocabulary as propline_get_event_ev; echoed as devig_method."
590
597
  }
591
598
  },
592
599
  required: ["bets"],
593
600
  additionalProperties: false
594
601
  },
595
- handler: (args) => client().gradeClv(args.bets)
602
+ handler: (args) => client().gradeClv(args.bets, args.devig)
596
603
  },
597
604
  {
598
605
  name: "propline_price_sgp",
@@ -1001,6 +1008,11 @@ var tools = [
1001
1008
  min_ev_pct: {
1002
1009
  type: "number",
1003
1010
  description: "Filter to outcomes with EV \u2265 this percent (e.g. 2.0)."
1011
+ },
1012
+ devig: {
1013
+ type: "string",
1014
+ enum: ["multiplicative", "shin"],
1015
+ description: "How the anchor's vig is removed. 'multiplicative' (default) divides each implied probability by the booksum; 'shin' solves Shin's insider-trading model, which loads the overround onto the longshot and corrects the favourite-longshot bias \u2014 use it when the user asks about longshot props (anytime TD, first scorer). The response echoes devig_method; say which method the numbers came from."
1004
1016
  }
1005
1017
  },
1006
1018
  required: ["sport_key", "event_id"],
@@ -1012,7 +1024,8 @@ var tools = [
1012
1024
  args.event_id,
1013
1025
  {
1014
1026
  markets: args.markets,
1015
- bookmakers: args.bookmakers
1027
+ bookmakers: args.bookmakers,
1028
+ devig: args.devig
1016
1029
  }
1017
1030
  );
1018
1031
  return filterByMinEv(res, args.min_ev_pct);