@0xinsider/mcp 2.10.0 → 2.11.4

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.
Files changed (48) hide show
  1. package/dist/constants.d.ts +1 -1
  2. package/dist/constants.js +1 -1
  3. package/dist/sdk/client.d.ts +10 -5
  4. package/dist/sdk/client.d.ts.map +1 -1
  5. package/dist/sdk/client.js +9 -4
  6. package/dist/sdk/client.js.map +1 -1
  7. package/dist/sdk/schema.d.ts +87 -61
  8. package/dist/sdk/schema.d.ts.map +1 -1
  9. package/dist/tools/explore-markets.d.ts +2 -1
  10. package/dist/tools/explore-markets.d.ts.map +1 -1
  11. package/dist/tools/explore-markets.js +6 -6
  12. package/dist/tools/explore-markets.js.map +1 -1
  13. package/dist/tools/games.d.ts.map +1 -1
  14. package/dist/tools/games.js +8 -6
  15. package/dist/tools/games.js.map +1 -1
  16. package/dist/tools/get-large-positions.d.ts.map +1 -1
  17. package/dist/tools/get-large-positions.js +10 -8
  18. package/dist/tools/get-large-positions.js.map +1 -1
  19. package/dist/tools/get-market-flow.d.ts.map +1 -1
  20. package/dist/tools/get-market-flow.js +21 -12
  21. package/dist/tools/get-market-flow.js.map +1 -1
  22. package/dist/tools/get-position-timeline.js +4 -4
  23. package/dist/tools/get-position-timeline.js.map +1 -1
  24. package/dist/tools/get-positions.d.ts +1 -1
  25. package/dist/tools/get-positions.d.ts.map +1 -1
  26. package/dist/tools/get-positions.js +6 -3
  27. package/dist/tools/get-positions.js.map +1 -1
  28. package/dist/tools/get-suspicious-trades.d.ts +8 -2
  29. package/dist/tools/get-suspicious-trades.d.ts.map +1 -1
  30. package/dist/tools/get-suspicious-trades.js +16 -3
  31. package/dist/tools/get-suspicious-trades.js.map +1 -1
  32. package/dist/tools/get-trader-pnl.d.ts.map +1 -1
  33. package/dist/tools/get-trader-pnl.js +6 -4
  34. package/dist/tools/get-trader-pnl.js.map +1 -1
  35. package/dist/tools/get-trader.js +2 -2
  36. package/dist/tools/get-trending-wallets.d.ts.map +1 -1
  37. package/dist/tools/get-trending-wallets.js +9 -7
  38. package/dist/tools/get-trending-wallets.js.map +1 -1
  39. package/dist/tools/get-whale-trades.d.ts.map +1 -1
  40. package/dist/tools/get-whale-trades.js +37 -18
  41. package/dist/tools/get-whale-trades.js.map +1 -1
  42. package/dist/tools/pick-of-the-day.js +1 -1
  43. package/dist/tools/read-parity.d.ts.map +1 -1
  44. package/dist/tools/read-parity.js +158 -84
  45. package/dist/tools/read-parity.js.map +1 -1
  46. package/dist/tools/search-markets.js +1 -1
  47. package/dist/tools/search-markets.js.map +1 -1
  48. package/package.json +1 -2
@@ -3,19 +3,7 @@ import { fail, listResult } from "./result.js";
3
3
  function registerTradeList(server, client, tool) {
4
4
  server.registerTool(tool.name, {
5
5
  title: tool.title,
6
- description: `${tool.deprecatedOf ? `Deprecated alias of ${tool.deprecatedOf} (#16304), kept live; it calls the deprecated ${tool.path} path. ` : ""}Get recent large trades from graded prediction market traders. Each trade includes a 0-1 review score, trader grade, and market context. Cursor-paginated, newest first.
7
-
8
- Args:
9
- - limit (number, 1-100, default 20): Max results per page
10
- - cursor (string, optional): Pagination cursor from previous response
11
- - min_size (number, default 5000): Minimum trade size in USD
12
- - category (string, optional): Filter by market category (case-insensitive)
13
- - min_grade (string, optional): Minimum trader grade (S, A, B, C, D, F)
14
- - suspicious_only (boolean, optional): Keep only persisted suspicion_score >= 60; false preserves the current result set
15
- - min_market_volume_share (number, 0-1, optional): Keep only trades whose market_volume_share is known and at least this; a fraction, so 0.01 is one percent of the market's traded volume
16
- - sort (string, optional): "recent" (default, newest first) or "market_volume_share" (biggest share of its market first, over the last 30 days, or from the from bound on the history tools; a cursor is bound to the order it was minted in)
17
-
18
- Returns: List of large trades with trader info, market context, size, side, price, current review_score (signal_score is its deprecated twin, same value) and trader grade, point-in-time recorded_review_score (recorded_signal_score is its deprecated twin; null before 2026-08-03) and trader grade_at_trade with grade_at_trade_status (unknown before 2026-09-19), optional suspicion_score, and optional suspicion_track. A null suspicion track means the persisted legacy row has no track label. The page carries data_quality beside data: status, as_of (the oldest clock the page rests on) and field_groups. fresh means tracked and clocked, not current: compare as_of with your own tolerance. unknown means this read cannot date that group, never that it is recent.`,
6
+ description: tool.description,
19
7
  inputSchema: {
20
8
  limit: z.number().int().min(1).max(100).default(20)
21
9
  .describe("Max results (1-100, default 20)"),
@@ -27,11 +15,11 @@ Returns: List of large trades with trader info, market context, size, side, pric
27
15
  .describe("Filter by market category (case-insensitive)"),
28
16
  min_grade: z.enum(["S", "A", "B", "C", "D", "F"]).optional()
29
17
  .describe("Minimum trader grade"),
30
- suspicious_only: z.boolean().optional()
31
- .describe("Keep only persisted suspicion_score >= 60"),
18
+ suspicious_only: z.boolean().default(false)
19
+ .describe("Keep only rows with persisted suspicion_score >= 60"),
32
20
  min_market_volume_share: z.number().min(0).max(1).optional()
33
21
  .describe("Keep only trades whose market_volume_share is known and at least this. A fraction, not a percent: 0.01 is one percent of the market's traded volume. A trade whose share is unavailable is never returned by a non-zero value"),
34
- sort: z.enum(["recent", "market_volume_share"]).optional()
22
+ sort: z.enum(["recent", "market_volume_share"]).default("recent")
35
23
  .describe("Order of the page. recent is newest first. market_volume_share ranks by each trade's share of its market's traded volume, biggest first, a trade whose share is unavailable last, over the last 30 days. A cursor is bound to the order it was minted in"),
36
24
  },
37
25
  annotations: {
@@ -62,8 +50,39 @@ Returns: List of large trades with trader info, market context, size, side, pric
62
50
  }
63
51
  });
64
52
  }
53
+ const LARGE_TRADES_DESCRIPTION = `Get recent large trades from graded prediction market traders. Each trade includes a 0-1 review score, persisted suspicion facts, trader grade, and market context. Cursor-paginated, newest first.
54
+
55
+ Args:
56
+ - limit (number, 1-100, default 20): Max results per page
57
+ - cursor (string, optional): Pagination cursor from previous response
58
+ - min_size (number, default 5000): Minimum trade size in USD
59
+ - category (string, optional): Filter by market category (case-insensitive)
60
+ - min_grade (string, optional): Minimum trader grade (S, A, B, C, D, F)
61
+ - suspicious_only (boolean, optional): Keep only persisted suspicion_score >= 60; false preserves the current result set
62
+ - min_market_volume_share (number, 0-1, optional): Keep only trades whose market_volume_share is known and at least this; a fraction, so 0.01 is one percent of the market's traded volume
63
+ - sort (string, optional): "recent" (default, newest first) or "market_volume_share" (biggest share of its market first, over the last 30 days, or from the from bound on the history tools; a cursor is bound to the order it was minted in)
64
+
65
+ Returns: List of large trades with trader info, market context, size, side, price, current review_score (signal_score is its deprecated twin, same value) and trader grade, point-in-time recorded_review_score (recorded_signal_score is its deprecated twin; null before 2026-08-03) and trader grade_at_trade with grade_at_trade_status (unknown before 2026-09-19), optional suspicion_score, and optional suspicion_track. A null suspicion track means the persisted legacy row has no track label. The page carries data_quality beside data: status, as_of (the oldest clock the page rests on) and field_groups. fresh means tracked and clocked, not current: compare as_of with your own tolerance. unknown means this read cannot date that group, never that it is recent.`;
66
+ const WHALE_TRADES_DESCRIPTION = `Deprecated alias of get_large_trades (#16304), kept live; it calls the deprecated /api/v1/whale-trades path. Get recent large trades from graded prediction market traders. Each trade includes a 0-1 review score, persisted suspicion facts, trader grade, and market context. Cursor-paginated, newest first.
67
+
68
+ Args:
69
+ - limit (number, 1-100, default 20): Max results per page
70
+ - cursor (string, optional): Pagination cursor from previous response
71
+ - min_size (number, default 5000): Minimum trade size in USD
72
+ - category (string, optional): Filter by market category (case-insensitive)
73
+ - min_grade (string, optional): Minimum trader grade (S, A, B, C, D, F)
74
+ - suspicious_only (boolean, optional): Keep only persisted suspicion_score >= 60; false preserves the current result set
75
+ - min_market_volume_share (number, 0-1, optional): Keep only trades whose market_volume_share is known and at least this; a fraction, so 0.01 is one percent of the market's traded volume
76
+ - sort (string, optional): "recent" (default, newest first) or "market_volume_share" (biggest share of its market first, over the last 30 days, or from the from bound on the history tools; a cursor is bound to the order it was minted in)
77
+
78
+ Returns: List of whale trades with trader info, market context, size, side, price, current review_score (signal_score is its deprecated twin, same value) and trader grade, point-in-time recorded_review_score (recorded_signal_score is its deprecated twin; null before 2026-08-03) and trader grade_at_trade with grade_at_trade_status (unknown before 2026-09-19), optional suspicion_score, and optional suspicion_track. A null suspicion track means the persisted legacy row has no track label. The page carries data_quality beside data: status, as_of (the oldest clock the page rests on) and field_groups. fresh means tracked and clocked, not current: compare as_of with your own tolerance. unknown means this read cannot date that group, never that it is recent.`;
65
79
  export function registerGetLargeTrades(server, client) {
66
- registerTradeList(server, client, { name: "get_large_trades", title: "List large trades", path: "/api/v1/large-trades" });
80
+ registerTradeList(server, client, {
81
+ name: "get_large_trades",
82
+ title: "List large trades",
83
+ path: "/api/v1/large-trades",
84
+ description: LARGE_TRADES_DESCRIPTION,
85
+ });
67
86
  }
68
87
  /** Deprecated spelling of get_large_trades (#16304). */
69
88
  export function registerGetWhaleTrades(server, client) {
@@ -71,7 +90,7 @@ export function registerGetWhaleTrades(server, client) {
71
90
  name: "get_whale_trades",
72
91
  title: "List Whale Trades",
73
92
  path: "/api/v1/whale-trades",
74
- deprecatedOf: "get_large_trades",
93
+ description: WHALE_TRADES_DESCRIPTION,
75
94
  });
76
95
  }
77
96
  //# sourceMappingURL=get-whale-trades.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-whale-trades.js","sourceRoot":"","sources":["../../src/tools/get-whale-trades.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"get-whale-trades.js","sourceRoot":"","sources":["../../src/tools/get-whale-trades.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,7 @@ const readAnnotations = {
16
16
  export function registerGetPickOfTheDay(server, client) {
17
17
  server.registerTool("get_pick_of_the_day", {
18
18
  title: "Get Pick of the Day",
19
- description: `Get today's published Pick of the Day: the sports markets where graded (S/A/B) sharp money is positioned, frozen at publish time. Pro-tier. Read \`picks\` in \`pick_rank\` order (normally 3-6 items, never more than six). Each pick carries the matchup, the backed side (pick_outcome_label), the frozen pre-game price and the return on the flat $1,000 stake (\`stake_usd\`, \`return_usd\`; \`return_per_100\` keeps the literal $100 basis), the sharp-money holders on that side, the top grade, CLV capture status, and the thesis. \`scheduled_picks\` lists today's selected-but-unreleased slots with only pick_rank, release_at, and kickoff; no market identity exists before release.
19
+ description: `Get today's published Pick of the Day: the sports markets where graded (S/A/B) sharp money is positioned, frozen at publish time. Pro-tier. Read \`picks\` in \`pick_rank\` order (normally 3-10 items, never more than ten). Each pick carries the matchup, the backed side (pick_outcome_label), the frozen pre-game price and the return on the flat $1,000 stake (\`stake_usd\`, \`return_usd\`; \`return_per_100\` keeps the literal $100 basis), the sharp-money holders on that side, the top grade, CLV capture status, and the thesis. \`scheduled_picks\` lists today's selected-but-unreleased slots with only pick_rank, release_at, and kickoff; no market identity exists before release.
20
20
 
21
21
  Before any pick is released the tool returns an error carrying reason pick_not_released and a retry_at instant: schedule the next read from retry_at (or the earliest scheduled_picks.release_at) instead of polling. A current-day pick whose holder proof is not readable yet is listed in \`proof_pending_picks\` (pick_rank, release_at, kickoff, retry_at) while \`picks\` carries the proof-readable picks; the tool returns read_model_warming with a retry only when no published pick has readable proof.
22
22
 
@@ -1 +1 @@
1
- {"version":3,"file":"read-parity.d.ts","sourceRoot":"","sources":["../../src/tools/read-parity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAezC,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CA6BlF;AA0DD,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAExF;AAED,gEAAgE;AAChE,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAOxF;AAmCD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAEhF;AAED,uDAAuD;AACvD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAOhF;AAmCD,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAMrF;AAED,6DAA6D;AAC7D,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAOtF;AAMD,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAyCrF;AAID,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAyCrF;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CA2BpF;AAED,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAkC1F;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAsBtF;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CA6CtF;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAsB/E;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAyB7E;AAED,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAyBzF;AAED,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CA+B1F;AAED,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAyB3F;AAED,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CA2B1F;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAsB9E;AAGD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAsB/E;AAMD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CA2BhF;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CA2B5E;AA4CD,wBAAgB,kCAAkC,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAM7F;AAED,sEAAsE;AACtE,wBAAgB,iCAAiC,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAO5F;AAyCD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAMlF;AAED,0DAA0D;AAC1D,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAOvF"}
1
+ {"version":3,"file":"read-parity.d.ts","sourceRoot":"","sources":["../../src/tools/read-parity.ts"],"names":[],"mappings":"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"}
@@ -38,38 +38,33 @@ Returns: Ordered batch trader results with per-item success or error details. Ea
38
38
  function registerTradeHistory(server, client, tool) {
39
39
  server.registerTool(tool.name, {
40
40
  title: tool.title,
41
- description: `${tool.deprecatedOf ? `Deprecated alias of ${tool.deprecatedOf} (#16304), kept live; it calls the deprecated ${tool.path} path. ` : ""}Replay historical large trades from the local record. Supports cursor pagination plus condition, trader, category, grade, platform, suspicion, market-share, and RFC3339 from/to filters, and a market_volume_share sort.
42
-
43
- Args:
44
- - limit (number, 1-100, default 20)
45
- - cursor (string, optional): Pagination cursor with wth_ prefix
46
- - min_size (number, optional): Minimum trade size in USD
47
- - condition_id (string, optional): Exact raw provider condition_id
48
- - trader (string, optional): Wallet, alias, or username
49
- - category (string, optional)
50
- - min_grade (string, optional): S, A, B, C, D, or F; filters on today's grade, not the grade at trade time
51
- - suspicious_only (boolean, optional): Keep only persisted suspicion_score >= 60
52
- - platform (string, optional): polymarket or all
53
- - from/to (string, optional): RFC3339 traded_at bounds
54
- - min_market_volume_share (number, 0-1, optional): Keep only trades whose market_volume_share is known and at least this; a fraction, so 0.01 is one percent of the market's traded volume
55
- - sort (string, optional): "recent" (default, newest first) or "market_volume_share" (biggest share of its market first, over the last 30 days, or from the from bound on the history tools; a cursor is bound to the order it was minted in)
56
-
57
- Returns: Historical large trades with replay metadata, current review_score (signal_score is its deprecated twin, same value) and trader grade, point-in-time recorded_review_score (recorded_signal_score is its deprecated twin; null before 2026-08-03) and trader grade_at_trade with grade_at_trade_status (unknown before 2026-09-19), optional suspicion_score, and optional suspicion_track. A null suspicion track means the persisted legacy row has no track label. The page carries data_quality beside data: status, as_of (the oldest clock the page rests on) and field_groups. fresh means tracked and clocked, not current: compare as_of with your own tolerance. unknown means this read cannot date that group, never that it is recent.`,
41
+ description: tool.description,
58
42
  inputSchema: {
59
- limit: z.number().int().min(1).max(100).default(20),
60
- cursor: z.string().optional(),
61
- min_size: z.number().min(0).optional(),
62
- condition_id: z.string().optional(),
63
- trader: z.string().optional(),
64
- category: z.string().optional(),
65
- min_grade: z.enum(["S", "A", "B", "C", "D", "F"]).optional(),
66
- suspicious_only: z.boolean().optional(),
67
- platform: z.enum(["polymarket", "all"]).optional(),
68
- from: z.string().datetime().optional(),
69
- to: z.string().datetime().optional(),
43
+ limit: z.number().int().min(1).max(100).default(20)
44
+ .describe("Max results (1-100, default 20)"),
45
+ cursor: z.string().optional()
46
+ .describe("Pagination cursor from previous response"),
47
+ min_size: z.number().min(0).default(5000)
48
+ .describe("Minimum trade size in USD"),
49
+ condition_id: z.string().optional()
50
+ .describe("Exact raw provider condition_id"),
51
+ trader: z.string().optional()
52
+ .describe("Trader wallet, alias, or username"),
53
+ category: z.string().optional()
54
+ .describe("Filter by market category"),
55
+ min_grade: z.enum(["S", "A", "B", "C", "D", "F"]).optional()
56
+ .describe("Minimum trader grade"),
57
+ suspicious_only: z.boolean().default(false)
58
+ .describe("Keep only rows with persisted suspicion_score >= 60"),
59
+ platform: z.enum(["polymarket", "all"]).optional()
60
+ .describe("Filter by provider platform"),
61
+ from: z.string().datetime().optional()
62
+ .describe("Inclusive traded_at lower bound"),
63
+ to: z.string().datetime().optional()
64
+ .describe("Exclusive traded_at upper bound"),
70
65
  min_market_volume_share: z.number().min(0).max(1).optional()
71
66
  .describe("Keep only trades whose market_volume_share is known and at least this. A fraction, not a percent: 0.01 is one percent of the market's traded volume. A trade whose share is unavailable is never returned by a non-zero value"),
72
- sort: z.enum(["recent", "market_volume_share"]).optional()
67
+ sort: z.enum(["recent", "market_volume_share"]).default("recent")
73
68
  .describe("Order of the page. recent is newest first. market_volume_share ranks by each trade's share of its market's traded volume, biggest first, a trade whose share is unavailable last, over from, or the last 30 days when from is omitted. A cursor is bound to the order it was minted in"),
74
69
  },
75
70
  annotations: readAnnotations,
@@ -84,7 +79,28 @@ Returns: Historical large trades with replay metadata, current review_score (sig
84
79
  });
85
80
  }
86
81
  export function registerGetLargeTradesHistory(server, client) {
87
- registerTradeHistory(server, client, { name: "get_large_trades_history", title: "Replay historical large trades", path: "/api/v1/large-trades/history" });
82
+ registerTradeHistory(server, client, {
83
+ name: "get_large_trades_history",
84
+ title: "Replay historical large trades",
85
+ path: "/api/v1/large-trades/history",
86
+ description: `Replay historical large trades from the local record. Supports cursor pagination plus condition, trader, category, grade, platform, suspicion, market-share, and RFC3339 from/to filters, and a market_volume_share sort.
87
+
88
+ Args:
89
+ - limit (number, 1-100, default 20)
90
+ - cursor (string, optional): Pagination cursor with wth_ prefix
91
+ - min_size (number, optional): Minimum trade size in USD
92
+ - condition_id (string, optional): Exact raw provider condition_id
93
+ - trader (string, optional): Wallet, alias, or username
94
+ - category (string, optional)
95
+ - min_grade (string, optional): S, A, B, C, D, or F; filters on today's grade, not the grade at trade time
96
+ - suspicious_only (boolean, optional): Keep only persisted suspicion_score >= 60
97
+ - platform (string, optional): polymarket or all
98
+ - from/to (string, optional): RFC3339 traded_at bounds
99
+ - min_market_volume_share (number, 0-1, optional): Keep only trades whose market_volume_share is known and at least this; a fraction, so 0.01 is one percent of the market's traded volume
100
+ - sort (string, optional): "recent" (default, newest first) or "market_volume_share" (biggest share of its market first, over the last 30 days, or from the from bound on the history tools; a cursor is bound to the order it was minted in)
101
+
102
+ Returns: Historical large trades with replay metadata, current review_score (signal_score is its deprecated twin, same value) and trader grade, point-in-time recorded_review_score (recorded_signal_score is its deprecated twin; null before 2026-08-03) and trader grade_at_trade with grade_at_trade_status (unknown before 2026-09-19), optional suspicion_score, and optional suspicion_track. A null suspicion track means the persisted legacy row has no track label. The page carries data_quality beside data: status, as_of (the oldest clock the page rests on) and field_groups. fresh means tracked and clocked, not current: compare as_of with your own tolerance. unknown means this read cannot date that group, never that it is recent.`,
103
+ });
88
104
  }
89
105
  /** Deprecated spelling of get_large_trades_history (#16304). */
90
106
  export function registerGetWhaleTradesHistory(server, client) {
@@ -92,19 +108,32 @@ export function registerGetWhaleTradesHistory(server, client) {
92
108
  name: "get_whale_trades_history",
93
109
  title: "Replay Historical Whale Trades",
94
110
  path: "/api/v1/whale-trades/history",
95
- deprecatedOf: "get_large_trades_history",
111
+ description: `Deprecated alias of get_large_trades_history (#16304), kept live; it calls the deprecated /api/v1/whale-trades/history path. Replay historical whale trades from local whale_alerts rows. Supports cursor pagination plus condition, trader, category, grade, platform, suspicion, market-share, and RFC3339 from/to filters, and a market_volume_share sort.
112
+
113
+ Args:
114
+ - limit (number, 1-100, default 20)
115
+ - cursor (string, optional): Pagination cursor with wth_ prefix
116
+ - min_size (number, optional): Minimum trade size in USD
117
+ - condition_id (string, optional): Exact raw provider condition_id
118
+ - trader (string, optional): Wallet, alias, or username
119
+ - category (string, optional)
120
+ - min_grade (string, optional): S, A, B, C, D, or F; filters on today's grade, not the grade at trade time
121
+ - suspicious_only (boolean, optional): Keep only persisted suspicion_score >= 60
122
+ - platform (string, optional): polymarket or all
123
+ - from/to (string, optional): RFC3339 traded_at bounds
124
+ - min_market_volume_share (number, 0-1, optional): Keep only trades whose market_volume_share is known and at least this; a fraction, so 0.01 is one percent of the market's traded volume
125
+ - sort (string, optional): "recent" (default, newest first) or "market_volume_share" (biggest share of its market first, over the last 30 days, or from the from bound on the history tools; a cursor is bound to the order it was minted in)
126
+
127
+ Returns: Historical whale trades with replay metadata, current review_score (signal_score is its deprecated twin, same value) and trader grade, point-in-time recorded_review_score (recorded_signal_score is its deprecated twin; null before 2026-08-03) and trader grade_at_trade with grade_at_trade_status (unknown before 2026-09-19), optional suspicion_score, and optional suspicion_track. A null suspicion track means the persisted legacy row has no track label. The page carries data_quality beside data: status, as_of (the oldest clock the page rests on) and field_groups. fresh means tracked and clocked, not current: compare as_of with your own tolerance. unknown means this read cannot date that group, never that it is recent.`,
96
128
  });
97
129
  }
98
130
  function registerTradeDetail(server, client, tool) {
99
131
  server.registerTool(tool.name, {
100
132
  title: tool.title,
101
- description: `${tool.deprecatedOf ? `Deprecated alias of ${tool.deprecatedOf} (#16304), kept live; it calls the deprecated ${tool.path} path. ` : ""}Read one large trade by ID. Accepts either the wt_ ID returned by large-trade list/history responses or the raw numeric id.
102
-
103
- Args:
104
- - id (string, required): Large trade ID such as wt_123 or 123
105
-
106
- Returns: One large trade with trader info, market context, size, side, price, current review_score (signal_score is its deprecated twin, same value) and trader grade, point-in-time recorded_review_score (recorded_signal_score is its deprecated twin; null before 2026-08-03) and trader grade_at_trade with grade_at_trade_status (unknown before 2026-09-19), optional suspicion_score, and optional suspicion_track. A null suspicion track means the persisted legacy row has no track label.`,
133
+ description: tool.description,
107
134
  inputSchema: {
135
+ // `get_large_trade_id_schema` in `backend/src/mcp/tools/schema.rs` names
136
+ // the prefix too (#18083); the two sides must read the same.
108
137
  id: z.string().trim().min(1).describe("Large trade ID such as wt_123 or 123"),
109
138
  },
110
139
  annotations: readAnnotations,
@@ -119,7 +148,17 @@ Returns: One large trade with trader info, market context, size, side, price, cu
119
148
  });
120
149
  }
121
150
  export function registerGetLargeTrade(server, client) {
122
- registerTradeDetail(server, client, { name: "get_large_trade", title: "Get large trade", path: "/api/v1/large-trades" });
151
+ registerTradeDetail(server, client, {
152
+ name: "get_large_trade",
153
+ title: "Get large trade",
154
+ path: "/api/v1/large-trades",
155
+ description: `Read one large trade by ID. Accepts either the wt_ ID returned by large-trade list/history responses or the raw numeric id.
156
+
157
+ Args:
158
+ - id (string, required): Large trade ID such as wt_123 or 123
159
+
160
+ Returns: One large trade with trader info, market context, size, side, price, current review_score (signal_score is its deprecated twin, same value) and trader grade, point-in-time recorded_review_score (recorded_signal_score is its deprecated twin; null before 2026-08-03) and trader grade_at_trade with grade_at_trade_status (unknown before 2026-09-19), optional suspicion_score, and optional suspicion_track. A null suspicion track means the persisted legacy row has no track label.`,
161
+ });
123
162
  }
124
163
  /** Deprecated spelling of get_large_trade (#16304). */
125
164
  export function registerGetWhaleTrade(server, client) {
@@ -127,23 +166,23 @@ export function registerGetWhaleTrade(server, client) {
127
166
  name: "get_whale_trade",
128
167
  title: "Get Whale Trade",
129
168
  path: "/api/v1/whale-trades",
130
- deprecatedOf: "get_large_trade",
169
+ description: `Deprecated alias of get_large_trade (#16304), kept live; it calls the deprecated /api/v1/whale-trades/{id} path, whose envelope keeps object: whale_trade. Read one whale trade by ID. Accepts either the wt_ ID returned by whale-trade list/history responses or the raw numeric whale_alerts.id.
170
+
171
+ Args:
172
+ - id (string, required): Whale trade ID such as wt_123 or 123
173
+
174
+ Returns: One whale trade with trader info, market context, size, side, price, current review_score (signal_score is its deprecated twin, same value) and trader grade, point-in-time recorded_review_score (recorded_signal_score is its deprecated twin; null before 2026-08-03) and trader grade_at_trade with grade_at_trade_status (unknown before 2026-09-19), optional suspicion_score, and optional suspicion_track. A null suspicion track means the persisted legacy row has no track label.`,
131
175
  });
132
176
  }
133
177
  function registerMarketFlowBatch(server, client, tool) {
134
178
  server.registerTool(tool.name, {
135
179
  title: tool.title,
136
- description: `${tool.deprecatedOf ? `Deprecated alias of ${tool.deprecatedOf} (#16312), kept live; it calls the deprecated POST ${tool.path} path, whose envelope keeps object: market_intel_batch. Read-only batch lookup` : "Read-only batch lookup of market flow"} for 1-${MAX_BATCH_ITEMS} raw provider condition_id values. Results preserve request order and duplicate inputs return duplicate rows. Uses the same V1 batch item quota as POST ${tool.path}.
137
-
138
- Args:
139
- - condition_ids (string[], required): Raw provider condition IDs
140
- - timeframe (string, optional): "1h", "4h", "24h", or "7d" (default "24h")
141
-
142
- Returns: Ordered batch market-flow results with per-item success or error details.`,
180
+ description: tool.description,
143
181
  inputSchema: {
144
182
  condition_ids: z.array(z.string().trim().min(1)).min(1).max(MAX_BATCH_ITEMS)
145
- .describe("Raw provider condition IDs"),
146
- timeframe: z.enum(["1h", "4h", "24h", "7d"]).default("24h"),
183
+ .describe("Raw provider condition_id values"),
184
+ timeframe: z.enum(["1h", "4h", "24h", "7d"]).default("24h")
185
+ .describe("Shared lookback window"),
147
186
  },
148
187
  annotations: readAnnotations,
149
188
  }, async ({ condition_ids, timeframe }) => {
@@ -160,6 +199,13 @@ export function registerBatchGetMarketFlow(server, client) {
160
199
  name: "batch_get_market_flow",
161
200
  title: "Batch market flow",
162
201
  path: "/api/v1/markets/flow/batch",
202
+ description: `Read-only batch lookup of market flow for 1-${MAX_BATCH_ITEMS} raw provider condition_id values. Results preserve request order and duplicate inputs return duplicate rows. Uses the same V1 batch item quota as POST /api/v1/markets/flow/batch.
203
+
204
+ Args:
205
+ - condition_ids (string[], required): Raw provider condition IDs
206
+ - timeframe (string, optional): "1h", "4h", "24h", or "7d" (default "24h")
207
+
208
+ Returns: Ordered batch market-flow results with per-item success or error details.`,
163
209
  });
164
210
  }
165
211
  /** Deprecated spelling of batch_get_market_flow (#16312). */
@@ -168,7 +214,13 @@ export function registerBatchGetMarketIntel(server, client) {
168
214
  name: "batch_get_market_intel",
169
215
  title: "Batch Market Intelligence",
170
216
  path: "/api/v1/markets/intel/batch",
171
- deprecatedOf: "batch_get_market_flow",
217
+ description: `Deprecated alias of batch_get_market_flow (#16312), kept live; it calls the deprecated POST /api/v1/markets/intel/batch path, whose envelope keeps object: market_intel_batch. Read-only batch lookup for 1-${MAX_BATCH_ITEMS} raw provider condition_id values. Results preserve request order and duplicate inputs return duplicate rows. Uses the same V1 batch item quota as POST /api/v1/markets/intel/batch.
218
+
219
+ Args:
220
+ - condition_ids (string[], required): Raw provider condition IDs
221
+ - timeframe (string, optional): "1h", "4h", "24h", or "7d" (default "24h")
222
+
223
+ Returns: Ordered batch market-intelligence results with per-item success or error details.`,
172
224
  });
173
225
  }
174
226
  // Canonical "sharp money" spelling (epic #6912, #16300, #16308); "sharp
@@ -185,20 +237,23 @@ Args:
185
237
  - limit (number, 1-100, default 20): Max results per page
186
238
  - cursor (string, optional): Pagination cursor with smf_ prefix
187
239
  - category (string, optional): Filter by provider-backed market category
188
- - platform (string, optional): "polymarket" or "all" (both select Polymarket)
240
+ - platform (string, optional): "polymarket" or "all" (default "all")
189
241
  - min_grade (string, optional): Minimum trader grade S, A, B, C, D, or F (default "B" = S/A/B)
190
242
  - direction (string, optional): Filter by net flow direction: "YES" or "NO"
191
243
 
192
244
  Returns: Ranked markets with sharp_money (net_flow_usd, direction, whale_trade_count, buy/sell volumes) and market identity. smart_money is a deprecated byte-identical alias of sharp_money.`,
193
245
  inputSchema: {
194
- timeframe: z.enum(["1h", "4h", "24h", "7d"]).default("24h"),
195
- limit: z.number().int().min(1).max(100).default(20),
246
+ timeframe: z.enum(["1h", "4h", "24h", "7d"]).default("24h")
247
+ .describe("Lookback window (default 24h)"),
248
+ limit: z.number().int().min(1).max(100).default(20)
249
+ .describe("Max results (1-100, default 20)"),
196
250
  cursor: z.string().optional()
197
251
  .describe("Pagination cursor with smf_ prefix"),
198
252
  category: z.string().optional()
199
253
  .describe("Filter by provider-backed market category"),
200
- platform: z.enum(["polymarket", "all"]).optional(),
201
- min_grade: z.enum(["S", "A", "B", "C", "D", "F"]).optional()
254
+ platform: z.enum(["polymarket", "all"]).default("all")
255
+ .describe("Platform filter (default all)"),
256
+ min_grade: z.enum(["S", "A", "B", "C", "D", "F"]).default("B")
202
257
  .describe("Minimum trader grade (default B = S/A/B)"),
203
258
  direction: z.enum(["YES", "NO"]).optional()
204
259
  .describe("Filter by net flow direction"),
@@ -226,20 +281,23 @@ Args:
226
281
  - limit (number, 1-100, default 20): Max results per page
227
282
  - cursor (string, optional): Pagination cursor with smf_ prefix
228
283
  - category (string, optional): Filter by provider-backed market category
229
- - platform (string, optional): "polymarket" or "all" (both select Polymarket)
284
+ - platform (string, optional): "polymarket" or "all" (default "all")
230
285
  - min_grade (string, optional): Minimum trader grade S, A, B, C, D, or F (default "B" = S/A/B)
231
286
  - direction (string, optional): Filter by net flow direction: "YES" or "NO"
232
287
 
233
288
  Returns: Ranked markets with sharp_money (net_flow_usd, direction, whale_trade_count, buy/sell volumes) and market identity. smart_money is a deprecated byte-identical alias of sharp_money.`,
234
289
  inputSchema: {
235
- timeframe: z.enum(["1h", "4h", "24h", "7d"]).default("24h"),
236
- limit: z.number().int().min(1).max(100).default(20),
290
+ timeframe: z.enum(["1h", "4h", "24h", "7d"]).default("24h")
291
+ .describe("Lookback window (default 24h)"),
292
+ limit: z.number().int().min(1).max(100).default(20)
293
+ .describe("Max results (1-100, default 20)"),
237
294
  cursor: z.string().optional()
238
295
  .describe("Pagination cursor with smf_ prefix"),
239
296
  category: z.string().optional()
240
297
  .describe("Filter by provider-backed market category"),
241
- platform: z.enum(["polymarket", "all"]).optional(),
242
- min_grade: z.enum(["S", "A", "B", "C", "D", "F"]).optional()
298
+ platform: z.enum(["polymarket", "all"]).default("all")
299
+ .describe("Platform filter (default all)"),
300
+ min_grade: z.enum(["S", "A", "B", "C", "D", "F"]).default("B")
243
301
  .describe("Minimum trader grade (default B = S/A/B)"),
244
302
  direction: z.enum(["YES", "NO"]).optional()
245
303
  .describe("Filter by net flow direction"),
@@ -293,8 +351,10 @@ Returns: List of position timeline events with pagination metadata.`,
293
351
  inputSchema: {
294
352
  condition_id: z.string().trim().min(1).describe("Market condition ID"),
295
353
  trader_id: z.number().int().positive().describe("Internal traders.id alias"),
296
- limit: z.number().int().min(1).max(100).default(20),
297
- cursor: z.string().optional(),
354
+ limit: z.number().int().min(1).max(100).default(20)
355
+ .describe("Max events (1-100, default 20)"),
356
+ cursor: z.string().optional()
357
+ .describe("Pagination cursor from previous response"),
298
358
  },
299
359
  annotations: readAnnotations,
300
360
  }, async ({ condition_id, trader_id, limit, cursor }) => {
@@ -341,13 +401,20 @@ Args:
341
401
 
342
402
  Returns: Event replay window with retention and completeness metadata; each event carries trade when expanded.`,
343
403
  inputSchema: {
344
- cursor: z.string().optional(),
345
- limit: z.number().int().min(1).max(100).default(50),
346
- trader: z.string().optional(),
347
- condition_id: z.string().optional(),
348
- min_grade: z.enum(["S", "A", "B", "C", "D", "F"]).optional(),
349
- min_size: z.number().min(0).optional(),
350
- expand: z.enum(["trade"]).optional(),
404
+ cursor: z.string().optional()
405
+ .describe("Opaque event replay cursor; bound to the filters the walk ran with"),
406
+ limit: z.number().int().min(1).max(100).default(50)
407
+ .describe("Max events (1-100, default 50)"),
408
+ trader: z.string().optional()
409
+ .describe("Only this wallet's trades: address, trd_ id or username (bound to the cursor)"),
410
+ condition_id: z.string().optional()
411
+ .describe("Only this market's trades: raw condition_id or mkt_ id (bound to the cursor)"),
412
+ min_grade: z.enum(["S", "A", "B", "C", "D", "F"]).optional()
413
+ .describe("Only wallets at this grade or better (bound to the cursor)"),
414
+ min_size: z.number().min(0).optional()
415
+ .describe("Only trades of at least this size in USD (bound to the cursor)"),
416
+ expand: z.enum(["trade"]).optional()
417
+ .describe("trade: add the public trade read to every event, so no per-event detail call is needed"),
351
418
  },
352
419
  annotations: readAnnotations,
353
420
  }, async ({ cursor, limit, trader, condition_id, min_grade, min_size, expand }) => {
@@ -445,9 +512,12 @@ Args:
445
512
 
446
513
  Returns: Report snapshot metadata and entries.`,
447
514
  inputSchema: {
448
- week: z.string().regex(/^\d{4}-\d{2}$/).optional(),
449
- from: z.string().regex(/^\d{4}-\d{2}-\d{2}$/).optional(),
450
- to: z.string().regex(/^\d{4}-\d{2}-\d{2}$/).optional(),
515
+ week: z.string().regex(/^\d{4}-\d{2}$/).optional()
516
+ .describe("ISO week selector in YYYY-WW format"),
517
+ from: z.string().regex(/^\d{4}-\d{2}-\d{2}$/).optional()
518
+ .describe("UTC source-range start in YYYY-MM-DD format"),
519
+ to: z.string().regex(/^\d{4}-\d{2}-\d{2}$/).optional()
520
+ .describe("UTC source-range end in YYYY-MM-DD format"),
451
521
  },
452
522
  annotations: readAnnotations,
453
523
  }, async ({ week, from, to }) => {
@@ -512,11 +582,11 @@ Returns: Trader export snapshot metadata.`,
512
582
  export function registerGetCoverage(server, client) {
513
583
  server.registerTool("get_coverage", {
514
584
  title: "Get coverage",
515
- description: `Read which V1 data surfaces the API serves for Polymarket, the one venue it covers. Polymarket reports a status (supported, partial, or unsupported) for grade, pnl, strategy, timeline, large_trades, whale_signal (the deprecated spelling of large_trades), suspicious_trades, insider_radar (the deprecated spelling of suspicious_trades), and market_snapshot. Use this before choosing trader, market, large-trade, or suspicious-trade routes.
585
+ description: `Read which V1 data surfaces the API serves for Polymarket, the one venue it covers. Every surface reports the status supported: grade, pnl, strategy, timeline, large_trades, whale_signal (the deprecated spelling of large_trades), suspicious_trades, insider_radar (the deprecated spelling of suspicious_trades), and market_snapshot. Use this before choosing trader, market, large-trade, or suspicious-trade routes.
516
586
 
517
587
  Args: none
518
588
 
519
- Returns: Static backend-owned coverage document keyed by venue.`,
589
+ Returns: Static backend-owned coverage document under the single key polymarket.`,
520
590
  inputSchema: {},
521
591
  annotations: readAnnotations,
522
592
  }, async () => {
@@ -533,11 +603,11 @@ Returns: Static backend-owned coverage document keyed by venue.`,
533
603
  export function registerGetPlatforms(server, client) {
534
604
  server.registerTool("get_platforms", {
535
605
  title: "Get Platform Capability Matrix",
536
- description: `Deprecated alias of get_coverage (#16315), kept live; it calls the deprecated /api/v1/platforms path, which serves the same body. Read the provider capability matrix declaring which V1 data surfaces are supported, partial, or unsupported per platform. Polymarket reports a status (supported, partial, or unsupported) for grade, pnl, strategy, timeline, large_trades, whale_signal (the deprecated spelling of large_trades), suspicious_trades, insider_radar (the deprecated spelling of suspicious_trades), and market_snapshot. Use this before choosing trader, market, large-trade, or suspicious-trade routes so you do not assume parity across providers.
606
+ description: `Deprecated alias of get_coverage (#16315), kept live; it calls the deprecated /api/v1/platforms path, which serves the same body. Read which V1 data surfaces the API serves for Polymarket, the one venue it covers. Every surface reports the status supported: grade, pnl, strategy, timeline, large_trades, whale_signal (the deprecated spelling of large_trades), suspicious_trades, insider_radar (the deprecated spelling of suspicious_trades), and market_snapshot. Use this before choosing trader, market, large-trade, or suspicious-trade routes.
537
607
 
538
608
  Args: none
539
609
 
540
- Returns: Static backend-owned platform capability matrix keyed by platform.`,
610
+ Returns: Static backend-owned coverage document under the single key polymarket.`,
541
611
  inputSchema: {},
542
612
  annotations: readAnnotations,
543
613
  }, async () => {
@@ -565,8 +635,9 @@ Args:
565
635
 
566
636
  Returns: List of matching content items with content_id, kind, slug, title, excerpt, and url.`,
567
637
  inputSchema: {
568
- q: z.string().min(1).max(256).describe("Search query"),
569
- limit: z.number().int().min(1).max(50).default(10),
638
+ q: z.string().min(1).max(256).describe("Search query (1-256 characters before whitespace trimming, non-empty after trimming)"),
639
+ limit: z.number().int().min(1).max(50).default(10)
640
+ .describe("Max results (1-50, default 10)"),
570
641
  },
571
642
  annotations: readAnnotations,
572
643
  }, async ({ q, limit }) => {
@@ -590,8 +661,9 @@ Args:
590
661
 
591
662
  Returns: Report snapshot metadata and entries (source_range, snapshot.status, completeness, reconciliation, report).`,
592
663
  inputSchema: {
593
- granularity: z.enum(["daily", "weekly", "monthly"]),
594
- period: z.string().min(1).describe("Period token for the granularity"),
664
+ granularity: z.enum(["daily", "weekly", "monthly"])
665
+ .describe("Report granularity selector"),
666
+ period: z.string().min(1).describe("Period token: daily YYYY-MM-DD, weekly YYYY-WW or a from,to YYYY-MM-DD pair, monthly YYYY-MM"),
595
667
  },
596
668
  annotations: readAnnotations,
597
669
  }, async ({ granularity, period }) => {
@@ -607,7 +679,7 @@ Returns: Report snapshot metadata and entries (source_range, snapshot.status, co
607
679
  function registerSideObservations(server, client, tool) {
608
680
  server.registerTool(tool.name, {
609
681
  title: tool.title,
610
- description: `${tool.deprecatedOf ? `Deprecated alias of ${tool.deprecatedOf} (#16310), kept live; it calls the deprecated ${tool.path} path. ` : ""}Observation-only evidence for sports and esports markets, for a Pro API key: graded-holder piles the ranked route does not fund. cohort is required: wider_holder, in_play, or emerging_pile. Every row carries observation_only=true, and the canonical side, backing_score and side_share keys beside the older piled_side, conviction_score and smart_score spellings, which carry the same values. The page carries snapshot_as_of, degraded, funnel, and meta: when degraded is true the snapshot is partial and is not healthy evidence. Never feeds or changes get_pre_game_sides. A refreshed snapshot rejects an old cursor with cursor_expired; request the first page again.`,
682
+ description: tool.description,
611
683
  inputSchema: {
612
684
  cohort: z.enum(["wider_holder", "in_play", "emerging_pile"]).describe("Observation cohort; required"),
613
685
  category: z.string().optional().describe("Sport category; omitted means all sports"),
@@ -642,6 +714,7 @@ export function registerGetPreGameSideObservations(server, client) {
642
714
  name: "get_pre_game_side_observations",
643
715
  title: "List pre-game side observations",
644
716
  path: "/api/v1/sports/pre-game-side-observations",
717
+ description: `Observation-only evidence for sports and esports markets, for a Pro API key: graded-holder piles the ranked route does not fund. cohort is required: wider_holder (pre-game holder piles outside the funded route's admission), in_play (provider-confirmed live games with fresh holder and directional evidence), or emerging_pile (wider_holder rows whose sharp share is in [0.75, 0.85) with a complete holder scan, before kickoff). Every row carries observation_only=true, the provider market and token identity, kickoff, observed_at, the side and its price, the graded-holder distribution and scores, holder_scan_complete, directional_status, directional_rank_score, and rank. Canonical field names are side, backing_score and side_share; the older piled_side, conviction_score and smart_score keys carry the same values and stay on the wire. The page carries snapshot_as_of, degraded, funnel, and meta: when degraded is true the snapshot is partial and is not healthy evidence. This surface never feeds or changes get_pre_game_sides. Supports category (omitted means all sports; a non-sport category returns an empty list), limit (1-100, default 20), and cursor (pinned to the cohort and snapshot; a refreshed snapshot rejects it with cursor_expired, so request the first page again).`,
645
718
  });
646
719
  }
647
720
  /** Deprecated spelling of get_pre_game_side_observations (#16310). */
@@ -650,17 +723,17 @@ export function registerGetSportsEdgeObservations(server, client) {
650
723
  name: "get_sports_edge_observations",
651
724
  title: "Get Sports Edge Observations",
652
725
  path: "/api/v1/sports-edge-observations",
653
- deprecatedOf: "get_pre_game_side_observations",
726
+ description: `Deprecated alias of get_pre_game_side_observations (#16310), kept live; it calls the deprecated /api/v1/sports-edge-observations path. Observation-only evidence for sports and esports markets, for a Pro API key: graded-holder piles the ranked signals route does not fund. cohort is required: wider_holder (pre-game holder piles outside the funded route's admission), in_play (provider-confirmed live games with fresh holder and directional evidence), or emerging_pile (wider_holder rows whose sharp share is in [0.75, 0.85) with a complete holder scan, before kickoff). Every row carries observation_only=true, the provider market and token identity, kickoff, observed_at, the piled outcome and price, the graded-holder distribution and scores, holder_scan_complete, directional_status, directional_rank_score, and rank. The page carries snapshot_as_of, degraded, funnel, and meta: when degraded is true the snapshot is partial and is not healthy evidence. This surface never feeds or changes get_sports_edge_signals. Supports category (omitted means all sports; a non-sport category returns an empty list), limit (1-100, default 20), and cursor (pinned to the cohort and snapshot; a refreshed snapshot rejects it with cursor_expired, so request the first page again).`,
654
727
  });
655
728
  }
656
729
  function registerSides(server, client, tool) {
657
730
  server.registerTool(tool.name, {
658
731
  title: tool.title,
659
- description: `${tool.deprecatedOf ? `Deprecated alias of ${tool.deprecatedOf} (#16310), kept live; it calls the deprecated ${tool.path} path. ` : ""}Upcoming games ranked by the side profitable wallets hold, for a Pro API key. Eligibility uses recent graded large-trade flow; ranking uses current graded holder concentration. Returns market identity, the side and its token ID, kickoff, grade distribution, backing_score, ranked_at, and availability, with the older piled_side, signal_created_at, conviction_score and smart_score keys carrying the same values. Analytics, not an order instruction. Cached kickoffs may have passed; inspect timestamps before acting.`,
732
+ description: tool.description,
660
733
  inputSchema: {
661
734
  category: z.string().optional().describe("Sport category; omitted means all sports"),
662
735
  limit: z.number().int().min(1).max(100).default(20),
663
- cursor: z.string().optional().describe("Opaque cursor pinned to a ranked snapshot"),
736
+ cursor: z.string().optional().describe("Opaque cursor pinned to a signal snapshot"),
664
737
  horizon_hours: z.number().int().min(1).max(48).default(12),
665
738
  min_grade: z.enum(["S", "A", "B"]).default("B"),
666
739
  },
@@ -689,6 +762,7 @@ export function registerGetPreGameSides(server, client) {
689
762
  name: "get_pre_game_sides",
690
763
  title: "List pre-game sides",
691
764
  path: "/api/v1/sports/pre-game-sides",
765
+ description: `Upcoming games ranked by the side profitable wallets hold, for a Pro API key. Eligibility uses recent graded large-trade flow; ranking uses current graded holder concentration. Returns provider market identity, the side and its token ID, kickoff, grade distribution, backing_score, ranked_at, and availability. Canonical field names are side, ranked_at, backing_score and side_share; the older piled_side, signal_created_at, conviction_score and smart_score keys carry the same values and stay on the wire. A row is analytics, not an order instruction. Cached snapshots can include kickoffs that have since passed; inspect timestamps before acting. Supports category, limit (1-100, default 20), cursor, horizon_hours (1-48, default 12), and min_grade (S, A, B; default B).`,
692
766
  });
693
767
  }
694
768
  /** Deprecated spelling of get_pre_game_sides (#16310). */
@@ -697,7 +771,7 @@ export function registerGetSportsEdgeSignals(server, client) {
697
771
  name: "get_sports_edge_signals",
698
772
  title: "Get Ranked Sports Edge Signals",
699
773
  path: "/api/v1/sports-edge-signals",
700
- deprecatedOf: "get_pre_game_sides",
774
+ description: `Deprecated alias of get_pre_game_sides (#16310), kept live; it calls the deprecated /api/v1/sports-edge-signals path. Ranked pre-game sports and esports signals for a Pro API key. Eligibility uses recent graded whale flow; ranking uses current graded holder concentration. Returns provider market identity, backed outcome and token ID, kickoff, grade distribution, conviction, snapshot time, and availability. A signal is analytics, not an order instruction. Cached snapshots can include kickoffs that have since passed; inspect timestamps before acting. Supports category, limit (1-100, default 20), cursor, horizon_hours (1-48, default 12), and min_grade (S, A, B; default B).`,
701
775
  });
702
776
  }
703
777
  //# sourceMappingURL=read-parity.js.map