@0xinsider/mcp 3.4.1 → 3.6.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.
Files changed (110) hide show
  1. package/README.md +27 -4
  2. package/dist/catalog.generated.d.ts +40 -0
  3. package/dist/catalog.generated.d.ts.map +1 -1
  4. package/dist/catalog.generated.js +50 -0
  5. package/dist/catalog.generated.js.map +1 -1
  6. package/dist/client.d.ts +7 -0
  7. package/dist/client.d.ts.map +1 -1
  8. package/dist/client.js.map +1 -1
  9. package/dist/constants.d.ts +1 -1
  10. package/dist/constants.js +1 -1
  11. package/dist/prompts/index.d.ts +1 -1
  12. package/dist/prompts/index.d.ts.map +1 -1
  13. package/dist/prompts/index.js +6 -6
  14. package/dist/prompts/index.js.map +1 -1
  15. package/dist/resources/index.d.ts +1 -1
  16. package/dist/resources/index.d.ts.map +1 -1
  17. package/dist/resources/index.js +10 -10
  18. package/dist/resources/index.js.map +1 -1
  19. package/dist/sdk/index.d.ts +1 -1
  20. package/dist/sdk/index.d.ts.map +1 -1
  21. package/dist/sdk/schema.d.ts +226 -27
  22. package/dist/sdk/schema.d.ts.map +1 -1
  23. package/dist/sdk/webhooks.d.ts +30 -226
  24. package/dist/sdk/webhooks.d.ts.map +1 -1
  25. package/dist/sdk/webhooks.js.map +1 -1
  26. package/dist/server.d.ts +1 -1
  27. package/dist/server.d.ts.map +1 -1
  28. package/dist/server.js +32 -7
  29. package/dist/server.js.map +1 -1
  30. package/dist/tools/combos.d.ts +6 -0
  31. package/dist/tools/combos.d.ts.map +1 -0
  32. package/dist/tools/combos.js +133 -0
  33. package/dist/tools/combos.js.map +1 -0
  34. package/dist/tools/explore-markets.d.ts +1 -1
  35. package/dist/tools/explore-markets.d.ts.map +1 -1
  36. package/dist/tools/explore-markets.js +3 -3
  37. package/dist/tools/explore-markets.js.map +1 -1
  38. package/dist/tools/games.d.ts +1 -1
  39. package/dist/tools/games.d.ts.map +1 -1
  40. package/dist/tools/games.js +8 -8
  41. package/dist/tools/games.js.map +1 -1
  42. package/dist/tools/get-insider-radar.d.ts +1 -1
  43. package/dist/tools/get-insider-radar.d.ts.map +1 -1
  44. package/dist/tools/get-insider-radar.js +4 -3
  45. package/dist/tools/get-insider-radar.js.map +1 -1
  46. package/dist/tools/get-large-positions.d.ts +1 -1
  47. package/dist/tools/get-large-positions.d.ts.map +1 -1
  48. package/dist/tools/get-large-positions.js +3 -3
  49. package/dist/tools/get-large-positions.js.map +1 -1
  50. package/dist/tools/get-leaderboard.d.ts +1 -1
  51. package/dist/tools/get-leaderboard.d.ts.map +1 -1
  52. package/dist/tools/get-leaderboard.js +4 -4
  53. package/dist/tools/get-leaderboard.js.map +1 -1
  54. package/dist/tools/get-market-flow.d.ts +1 -1
  55. package/dist/tools/get-market-flow.d.ts.map +1 -1
  56. package/dist/tools/get-market-flow.js +4 -4
  57. package/dist/tools/get-market-flow.js.map +1 -1
  58. package/dist/tools/get-position-timeline.d.ts +1 -1
  59. package/dist/tools/get-position-timeline.d.ts.map +1 -1
  60. package/dist/tools/get-position-timeline.js +3 -3
  61. package/dist/tools/get-position-timeline.js.map +1 -1
  62. package/dist/tools/get-positions.d.ts +1 -1
  63. package/dist/tools/get-positions.d.ts.map +1 -1
  64. package/dist/tools/get-positions.js +3 -3
  65. package/dist/tools/get-positions.js.map +1 -1
  66. package/dist/tools/get-suspicious-trades.d.ts +1 -1
  67. package/dist/tools/get-suspicious-trades.d.ts.map +1 -1
  68. package/dist/tools/get-suspicious-trades.js +6 -6
  69. package/dist/tools/get-suspicious-trades.js.map +1 -1
  70. package/dist/tools/get-trader-pnl.d.ts +1 -1
  71. package/dist/tools/get-trader-pnl.d.ts.map +1 -1
  72. package/dist/tools/get-trader-pnl.js +4 -4
  73. package/dist/tools/get-trader-pnl.js.map +1 -1
  74. package/dist/tools/get-trader.d.ts +1 -1
  75. package/dist/tools/get-trader.d.ts.map +1 -1
  76. package/dist/tools/get-trader.js +9 -4
  77. package/dist/tools/get-trader.js.map +1 -1
  78. package/dist/tools/get-trending-wallets.d.ts +1 -1
  79. package/dist/tools/get-trending-wallets.d.ts.map +1 -1
  80. package/dist/tools/get-trending-wallets.js +3 -3
  81. package/dist/tools/get-trending-wallets.js.map +1 -1
  82. package/dist/tools/get-whale-trades.d.ts +1 -1
  83. package/dist/tools/get-whale-trades.d.ts.map +1 -1
  84. package/dist/tools/get-whale-trades.js +4 -4
  85. package/dist/tools/get-whale-trades.js.map +1 -1
  86. package/dist/tools/large-trade-counterparties.d.ts +5 -0
  87. package/dist/tools/large-trade-counterparties.d.ts.map +1 -0
  88. package/dist/tools/large-trade-counterparties.js +91 -0
  89. package/dist/tools/large-trade-counterparties.js.map +1 -0
  90. package/dist/tools/market-reads.d.ts +5 -0
  91. package/dist/tools/market-reads.d.ts.map +1 -0
  92. package/dist/tools/market-reads.js +100 -0
  93. package/dist/tools/market-reads.js.map +1 -0
  94. package/dist/tools/pick-of-the-day.d.ts +1 -1
  95. package/dist/tools/pick-of-the-day.d.ts.map +1 -1
  96. package/dist/tools/pick-of-the-day.js +10 -10
  97. package/dist/tools/pick-of-the-day.js.map +1 -1
  98. package/dist/tools/read-parity.d.ts +1 -1
  99. package/dist/tools/read-parity.d.ts.map +1 -1
  100. package/dist/tools/read-parity.js +85 -81
  101. package/dist/tools/read-parity.js.map +1 -1
  102. package/dist/tools/search-markets.d.ts +1 -1
  103. package/dist/tools/search-markets.d.ts.map +1 -1
  104. package/dist/tools/search-markets.js +4 -4
  105. package/dist/tools/search-markets.js.map +1 -1
  106. package/dist/tools/trader-reads.d.ts +6 -0
  107. package/dist/tools/trader-reads.d.ts.map +1 -0
  108. package/dist/tools/trader-reads.js +99 -0
  109. package/dist/tools/trader-reads.js.map +1 -0
  110. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"get-suspicious-trades.d.ts","sourceRoot":"","sources":["../../src/tools/get-suspicious-trades.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAUzC,kEAAkE;AAClE,eAAO,MAAM,2BAA2B;aACtC,KAAK;aAEL,MAAM;aASN,aAAa;aAEb,QAAQ;;;;aAER,IAAI;;;;CAEI,CAAC;AAEX;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B;aACrC,EAAE;CACM,CAAC;AAEX,eAAO,MAAM,6BAA6B,mhCAeoC,CAAC;AAE/E,eAAO,MAAM,4BAA4B,4RAK0C,CAAC;AAEpF,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAwBtF;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAoBrF"}
1
+ {"version":3,"file":"get-suspicious-trades.d.ts","sourceRoot":"","sources":["../../src/tools/get-suspicious-trades.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAUzC,kEAAkE;AAClE,eAAO,MAAM,2BAA2B;aACtC,KAAK;aAEL,MAAM;aASN,aAAa;aAEb,QAAQ;;;;aAER,IAAI;;;;CAEI,CAAC;AAEX;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B;aACrC,EAAE;CACM,CAAC;AAEX,eAAO,MAAM,6BAA6B,mhCAeoC,CAAC;AAE/E,eAAO,MAAM,4BAA4B,4RAK0C,CAAC;AAEpF,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAwBtF;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAoBrF"}
@@ -67,9 +67,9 @@ export function registerGetSuspiciousTrades(server, client) {
67
67
  server.registerTool("get_suspicious_trades", {
68
68
  title: "Get suspicious trades",
69
69
  description: SUSPICIOUS_TRADES_DESCRIPTION,
70
- inputSchema: suspiciousTradesInputSchema,
70
+ inputSchema: z.object(suspiciousTradesInputSchema),
71
71
  annotations: readAnnotations,
72
- }, async ({ limit, cursor, min_suspicion, severity, mode }, extra) => {
72
+ }, async ({ limit, cursor, min_suspicion, severity, mode }, ctx) => {
73
73
  try {
74
74
  const response = await client.request("/api/v1/suspicious-trades", {
75
75
  limit,
@@ -77,7 +77,7 @@ export function registerGetSuspiciousTrades(server, client) {
77
77
  min_suspicion,
78
78
  severity,
79
79
  mode,
80
- }, undefined, { signal: extra.signal });
80
+ }, undefined, { signal: ctx.mcpReq.signal });
81
81
  return ok(listResult(response));
82
82
  }
83
83
  catch (error) {
@@ -89,11 +89,11 @@ export function registerGetSuspiciousTrade(server, client) {
89
89
  server.registerTool("get_suspicious_trade", {
90
90
  title: "Get suspicious trade",
91
91
  description: SUSPICIOUS_TRADE_DESCRIPTION,
92
- inputSchema: suspiciousTradeInputSchema,
92
+ inputSchema: z.object(suspiciousTradeInputSchema),
93
93
  annotations: readAnnotations,
94
- }, async ({ id }, extra) => {
94
+ }, async ({ id }, ctx) => {
95
95
  try {
96
- const response = await client.request(`/api/v1/suspicious-trades/${encodeURIComponent(id)}`, undefined, undefined, { signal: extra.signal });
96
+ const response = await client.request(`/api/v1/suspicious-trades/${encodeURIComponent(id)}`, undefined, undefined, { signal: ctx.mcpReq.signal });
97
97
  return ok(withMeta(response.data, response.meta));
98
98
  }
99
99
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"get-suspicious-trades.js","sourceRoot":"","sources":["../../src/tools/get-suspicious-trades.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,8EAA8E;AAC9E,sEAAsE;AACtE,sEAAsE;AACtE,oEAAoE;AAGpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE7D,MAAM,eAAe,GAAG;IACtB,YAAY,EAAE,IAAI;IAClB,eAAe,EAAE,KAAK;IACtB,cAAc,EAAE,IAAI;IACpB,aAAa,EAAE,KAAK;CACZ,CAAC;AAEX,kEAAkE;AAClE,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;SAChD,QAAQ,CAAC,iCAAiC,CAAC;IAC9C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC1B,QAAQ,CAAC,0CAA0C,CAAC;IACvD,qEAAqE;IACrE,4EAA4E;IAC5E,8EAA8E;IAC9E,uDAAuD;IACvD,4EAA4E;IAC5E,uEAAuE;IACvE,wCAAwC;IACxC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;SACjD,QAAQ,CAAC,oEAAoE,CAAC;IACjF,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE;SAC3C,QAAQ,CAAC,oFAAoF,CAAC;IACjG,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;SAC7C,QAAQ,CAAC,gGAAgG,CAAC;CACrG,CAAC;AAEX;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,2CAA2C,CAAC;CAC1E,CAAC;AAEX,MAAM,CAAC,MAAM,6BAA6B,GAAG;;;;;;;;;;;;;;;8EAeiC,CAAC;AAE/E,MAAM,CAAC,MAAM,4BAA4B,GAAG;;;;;mFAKuC,CAAC;AAEpF,MAAM,UAAU,2BAA2B,CAAC,MAAiB,EAAE,MAAiB;IAC9E,MAAM,CAAC,YAAY,CACjB,uBAAuB,EACvB;QACE,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EAAE,6BAA6B;QAC1C,WAAW,EAAE,2BAA2B;QACxC,WAAW,EAAE,eAAe;KAC7B,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE;QAChE,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,2BAA2B,EAAE;gBACjE,KAAK;gBACL,MAAM;gBACN,aAAa;gBACb,QAAQ;gBACR,IAAI;aACL,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;YACxC,OAAO,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,MAAiB,EAAE,MAAiB;IAC7E,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EAAE,4BAA4B;QACzC,WAAW,EAAE,0BAA0B;QACvC,WAAW,EAAE,eAAe;KAC7B,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;QACtB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CACnC,6BAA6B,kBAAkB,CAAC,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CACtG,CAAC;YACF,OAAO,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"get-suspicious-trades.js","sourceRoot":"","sources":["../../src/tools/get-suspicious-trades.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
1
+ import { McpServer } from "@modelcontextprotocol/server";
2
2
  import { z } from "zod";
3
3
  import { ApiClient } from "../client.js";
4
4
  export declare const traderPnlLookupSchema: z.ZodString;
@@ -1 +1 @@
1
- {"version":3,"file":"get-trader-pnl.d.ts","sourceRoot":"","sources":["../../src/tools/get-trader-pnl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzC,eAAO,MAAM,qBAAqB,aAAoC,CAAC;AAEvE,iGAAiG;AACjG,eAAO,MAAM,YAAY,YAAI,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,CAAU,CAAC;AAEhG,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CA0D/E"}
1
+ {"version":3,"file":"get-trader-pnl.d.ts","sourceRoot":"","sources":["../../src/tools/get-trader-pnl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzC,eAAO,MAAM,qBAAqB,aAAoC,CAAC;AAEvE,iGAAiG;AACjG,eAAO,MAAM,YAAY,YAAI,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,CAAU,CAAC;AAEhG,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CA0D/E"}
@@ -16,7 +16,7 @@ Args:
16
16
  - sections (string[], optional): Which sections to return: "entries", "stats", "monthly", "year_totals", "drawdown"; omit for all five. A section left out is absent, and an unrecognized name is an error, never ignored
17
17
 
18
18
  Returns: Structured trader P&L object (entries, stats, monthly, year_totals, drawdown). A request that sent from, to or sections also carries view: the bounds applied, the sections present, entries_total, entries_in_window and the pre-window anchor.`,
19
- inputSchema: {
19
+ inputSchema: z.object({
20
20
  address: traderPnlLookupSchema
21
21
  .describe("Wallet address (0x...), username, or trd_-prefixed trader id"),
22
22
  // The three view parameters the route takes (#16158), missing from
@@ -29,14 +29,14 @@ Returns: Structured trader P&L object (entries, stats, monthly, year_totals, dra
29
29
  .describe("Inclusive UTC calendar-date upper bound (YYYY-MM-DD) for the daily series (entries and drawdown); omit for the whole stored history. Must not be before from"),
30
30
  sections: z.array(z.enum(PNL_SECTIONS)).optional()
31
31
  .describe("Which sections of the object to return; omit for all five. A section left out is absent from the result, never null or empty"),
32
- },
32
+ }),
33
33
  annotations: {
34
34
  readOnlyHint: true,
35
35
  destructiveHint: false,
36
36
  idempotentHint: true,
37
37
  openWorldHint: false,
38
38
  },
39
- }, async ({ address, from, to, sections }, extra) => {
39
+ }, async ({ address, from, to, sections }, ctx) => {
40
40
  try {
41
41
  const traderLookup = address.trim();
42
42
  // `sections` is a repeated query key (`sections=a&sections=b`), the
@@ -44,7 +44,7 @@ Returns: Structured trader P&L object (entries, stats, monthly, year_totals, dra
44
44
  const repeatedParams = sections && sections.length > 0
45
45
  ? { sections: [...sections] }
46
46
  : undefined;
47
- const response = await client.request(`/api/v1/trader/${encodeURIComponent(traderLookup)}/pnl`, { from, to }, repeatedParams, { signal: extra.signal });
47
+ const response = await client.request(`/api/v1/trader/${encodeURIComponent(traderLookup)}/pnl`, { from, to }, repeatedParams, { signal: ctx.mcpReq.signal });
48
48
  return {
49
49
  content: [{ type: "text", text: JSON.stringify(withMeta(response.data, response.meta), null, 2) }],
50
50
  };
@@ -1 +1 @@
1
- {"version":3,"file":"get-trader-pnl.js","sourceRoot":"","sources":["../../src/tools/get-trader-pnl.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEvE,iGAAiG;AACjG,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,CAAU,CAAC;AAEhG,MAAM,UAAU,oBAAoB,CAAC,MAAiB,EAAE,MAAiB;IACvE,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,KAAK,EAAE,4BAA4B;QACnC,WAAW,EAAE;;;;;;;;;0PASuO;QACpP,WAAW,EAAE;YACX,OAAO,EAAE,qBAAqB;iBAC3B,QAAQ,CAAC,8DAA8D,CAAC;YAC3E,mEAAmE;YACnE,mEAAmE;YACnE,+DAA+D;YAC/D,wCAAwC;YACxC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,QAAQ,EAAE;iBACrD,QAAQ,CAAC,oLAAoL,CAAC;YACjM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,QAAQ,EAAE;iBACnD,QAAQ,CAAC,8JAA8J,CAAC;YAC3K,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,EAAE;iBAC/C,QAAQ,CAAC,8HAA8H,CAAC;SAC5I;QACD,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE;QAC/C,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;YACpC,oEAAoE;YACpE,8DAA8D;YAC9D,MAAM,cAAc,GAAG,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;gBACpD,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC,EAAE;gBAC7B,CAAC,CAAC,SAAS,CAAC;YACd,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CACnC,kBAAkB,kBAAkB,CAAC,YAAY,CAAC,MAAM,EACxD,EAAE,IAAI,EAAE,EAAE,EAAE,EACZ,cAAc,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CACzC,CAAC;YAEF,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAC5G,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"get-trader-pnl.js","sourceRoot":"","sources":["../../src/tools/get-trader-pnl.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEvE,iGAAiG;AACjG,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,CAAU,CAAC;AAEhG,MAAM,UAAU,oBAAoB,CAAC,MAAiB,EAAE,MAAiB;IACvE,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,KAAK,EAAE,4BAA4B;QACnC,WAAW,EAAE;;;;;;;;;0PASuO;QACpP,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,OAAO,EAAE,qBAAqB;iBAC3B,QAAQ,CAAC,8DAA8D,CAAC;YAC3E,mEAAmE;YACnE,mEAAmE;YACnE,+DAA+D;YAC/D,wCAAwC;YACxC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,QAAQ,EAAE;iBACrD,QAAQ,CAAC,oLAAoL,CAAC;YACjM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,QAAQ,EAAE;iBACnD,QAAQ,CAAC,8JAA8J,CAAC;YAC3K,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,EAAE;iBAC/C,QAAQ,CAAC,8HAA8H,CAAC;SAC5I,CAAC;QACF,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,EAAE;QAC7C,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;YACpC,oEAAoE;YACpE,8DAA8D;YAC9D,MAAM,cAAc,GAAG,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;gBACpD,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC,EAAE;gBAC7B,CAAC,CAAC,SAAS,CAAC;YACd,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CACnC,kBAAkB,kBAAkB,CAAC,YAAY,CAAC,MAAM,EACxD,EAAE,IAAI,EAAE,EAAE,EAAE,EACZ,cAAc,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAC9C,CAAC;YAEF,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAC5G,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1,4 +1,4 @@
1
- import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
1
+ import { McpServer } from "@modelcontextprotocol/server";
2
2
  import { z } from "zod";
3
3
  import { ApiClient } from "../client.js";
4
4
  export declare const traderLookupSchema: z.ZodString;
@@ -1 +1 @@
1
- {"version":3,"file":"get-trader.d.ts","sourceRoot":"","sources":["../../src/tools/get-trader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzC,eAAO,MAAM,kBAAkB,aAAoC,CAAC;AAEpE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAuD5E"}
1
+ {"version":3,"file":"get-trader.d.ts","sourceRoot":"","sources":["../../src/tools/get-trader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzC,eAAO,MAAM,kBAAkB,aAAoC,CAAC;AAEpE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CA4D5E"}
@@ -17,28 +17,33 @@ A wallet address with no trader yet returns sync_status "unknown" (not an error)
17
17
  Args:
18
18
  - address (string, required): Ethereum wallet address (0x...) or trader username
19
19
  - expand (string[], optional): Heavy fields to include: "strategy", "categories", "quant_metrics", "trust"
20
+ - max_age_s (integer, optional, 0 or more): Freshness ceiling in seconds. The call answers only when data_quality.status is fresh and data_quality.as_of is no older than this; otherwise it fails with reason freshness_ceiling_unsatisfied (HTTP 409). Nothing is refreshed to meet it
20
21
 
21
22
  Returns: Trader profile with grade, P&L, stats, and optional expanded fields. The trader carries data_quality: status, as_of (the oldest clock the body 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.`,
22
- inputSchema: {
23
+ inputSchema: z.object({
23
24
  address: traderLookupSchema
24
25
  .describe("Ethereum wallet address (0x...) or trader username"),
25
26
  expand: z.array(z.enum(["strategy", "categories", "quant_metrics", "trust"]))
26
27
  .optional()
27
28
  .describe("Optional heavy fields to include"),
28
- },
29
+ // The route's whole-response freshness ceiling (#24738): REST took it
30
+ // and neither transport's tool could send it.
31
+ max_age_s: z.number().int().min(0).optional()
32
+ .describe("Freshness ceiling in seconds: answer only when data_quality.status is fresh and data_quality.as_of is no older than this, otherwise fail with freshness_ceiling_unsatisfied"),
33
+ }),
29
34
  annotations: {
30
35
  readOnlyHint: true,
31
36
  destructiveHint: false,
32
37
  idempotentHint: true,
33
38
  openWorldHint: false,
34
39
  },
35
- }, async ({ address, expand }, extra) => {
40
+ }, async ({ address, expand, max_age_s }, ctx) => {
36
41
  try {
37
42
  const traderLookup = address.trim();
38
43
  const repeatedParams = expand && expand.length > 0
39
44
  ? { expand }
40
45
  : undefined;
41
- const response = await client.request(`/api/v1/trader/${encodeURIComponent(traderLookup)}`, undefined, repeatedParams, { signal: extra.signal });
46
+ const response = await client.request(`/api/v1/trader/${encodeURIComponent(traderLookup)}`, { max_age_s }, repeatedParams, { signal: ctx.mcpReq.signal });
42
47
  return {
43
48
  content: [{ type: "text", text: JSON.stringify(withMeta(response.data, response.meta), null, 2) }],
44
49
  };
@@ -1 +1 @@
1
- {"version":3,"file":"get-trader.js","sourceRoot":"","sources":["../../src/tools/get-trader.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEpE,MAAM,UAAU,iBAAiB,CAAC,MAAiB,EAAE,MAAiB;IACpE,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;QACE,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE;;;;;;;;;;;;;;kVAc+T;QAC5U,WAAW,EAAE;YACX,OAAO,EAAE,kBAAkB;iBACxB,QAAQ,CAAC,oDAAoD,CAAC;YACjE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;iBAC1E,QAAQ,EAAE;iBACV,QAAQ,CAAC,kCAAkC,CAAC;SAChD;QACD,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE;QACnC,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;YACpC,MAAM,cAAc,GAAG,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;gBAChD,CAAC,CAAC,EAAE,MAAM,EAAE;gBACZ,CAAC,CAAC,SAAS,CAAC;YAEd,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CACnC,kBAAkB,kBAAkB,CAAC,YAAY,CAAC,EAAE,EACpD,SAAS,EACT,cAAc,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CACzC,CAAC;YAEF,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAC5G,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"get-trader.js","sourceRoot":"","sources":["../../src/tools/get-trader.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEpE,MAAM,UAAU,iBAAiB,CAAC,MAAiB,EAAE,MAAiB;IACpE,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;QACE,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE;;;;;;;;;;;;;;;kVAe+T;QAC5U,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,OAAO,EAAE,kBAAkB;iBACxB,QAAQ,CAAC,oDAAoD,CAAC;YACjE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;iBAC1E,QAAQ,EAAE;iBACV,QAAQ,CAAC,kCAAkC,CAAC;YAC/C,sEAAsE;YACtE,8CAA8C;YAC9C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;iBAC1C,QAAQ,CAAC,6KAA6K,CAAC;SAC3L,CAAC;QACF,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,EAAE;QAC5C,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;YACpC,MAAM,cAAc,GAAG,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;gBAChD,CAAC,CAAC,EAAE,MAAM,EAAE;gBACZ,CAAC,CAAC,SAAS,CAAC;YAEd,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CACnC,kBAAkB,kBAAkB,CAAC,YAAY,CAAC,EAAE,EACpD,EAAE,SAAS,EAAE,EACb,cAAc,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAC9C,CAAC;YAEF,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAC5G,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1,4 +1,4 @@
1
- import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
1
+ import { McpServer } from "@modelcontextprotocol/server";
2
2
  import { z } from "zod";
3
3
  import { ApiClient } from "../client.js";
4
4
  export declare const trendingWalletsParamsSchema: {
@@ -1 +1 @@
1
- {"version":3,"file":"get-trending-wallets.d.ts","sourceRoot":"","sources":["../../src/tools/get-trending-wallets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzC,eAAO,MAAM,2BAA2B;IACtC,KAAK;IAEL,MAAM;IAEN,MAAM;;;;CAEP,CAAC;AAEF,wBAAgB,0BAA0B,CAAC,IAAI,EAAE;IAC/C,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,CAAC,EAAE,IAAI,GAAG,KAAK,GAAG,SAAS,CAAC;CACnC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,CAM9C;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAsCrF"}
1
+ {"version":3,"file":"get-trending-wallets.d.ts","sourceRoot":"","sources":["../../src/tools/get-trending-wallets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzC,eAAO,MAAM,2BAA2B;IACtC,KAAK;IAEL,MAAM;IAEN,MAAM;;;;CAEP,CAAC;AAEF,wBAAgB,0BAA0B,CAAC,IAAI,EAAE;IAC/C,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,CAAC,EAAE,IAAI,GAAG,KAAK,GAAG,SAAS,CAAC;CACnC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,CAM9C;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAsCrF"}
@@ -28,16 +28,16 @@ Args:
28
28
  - window (string, optional): Trailing window: "7d" (default) or "30d"
29
29
 
30
30
  Returns: Ranked trending wallets with window stats and pagination metadata.`,
31
- inputSchema: trendingWalletsParamsSchema,
31
+ inputSchema: z.object(trendingWalletsParamsSchema),
32
32
  annotations: {
33
33
  readOnlyHint: true,
34
34
  destructiveHint: false,
35
35
  idempotentHint: true,
36
36
  openWorldHint: false,
37
37
  },
38
- }, async (args, extra) => {
38
+ }, async (args, ctx) => {
39
39
  try {
40
- const response = await client.request("/api/v1/leaderboard/trending", buildTrendingWalletsParams(args), undefined, { signal: extra.signal });
40
+ const response = await client.request("/api/v1/leaderboard/trending", buildTrendingWalletsParams(args), undefined, { signal: ctx.mcpReq.signal });
41
41
  const result = listResult(response);
42
42
  return ok(result);
43
43
  }
@@ -1 +1 @@
1
- {"version":3,"file":"get-trending-wallets.js","sourceRoot":"","sources":["../../src/tools/get-trending-wallets.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEnD,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;SAC/C,QAAQ,CAAC,8EAA8E,CAAC;IAC3F,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC1B,QAAQ,CAAC,iDAAiD,CAAC;IAC9D,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;SACxC,QAAQ,CAAC,8BAA8B,CAAC;CAC5C,CAAC;AAEF,MAAM,UAAU,0BAA0B,CAAC,IAI1C;IACC,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,MAAM,EAAE,IAAI,CAAC,MAAM;KACpB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,MAAiB,EAAE,MAAiB;IAC7E,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EAAE;;;;;;;;;4EASyD;QACtE,WAAW,EAAE,2BAA2B;QACxC,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CACnC,8BAA8B,EAC9B,0BAA0B,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CACtE,CAAC;YAEF,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;YAEpC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"get-trending-wallets.js","sourceRoot":"","sources":["../../src/tools/get-trending-wallets.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEnD,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;SAC/C,QAAQ,CAAC,8EAA8E,CAAC;IAC3F,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC1B,QAAQ,CAAC,iDAAiD,CAAC;IAC9D,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;SACxC,QAAQ,CAAC,8BAA8B,CAAC;CAC5C,CAAC;AAEF,MAAM,UAAU,0BAA0B,CAAC,IAI1C;IACC,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,MAAM,EAAE,IAAI,CAAC,MAAM;KACpB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,MAAiB,EAAE,MAAiB;IAC7E,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EAAE;;;;;;;;;4EASyD;QACtE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,2BAA2B,CAAC;QAClD,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;QAClB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CACnC,8BAA8B,EAC9B,0BAA0B,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAC3E,CAAC;YAEF,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;YAEpC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1,4 +1,4 @@
1
- import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
1
+ import { McpServer } from "@modelcontextprotocol/server";
2
2
  import { ApiClient } from "../client.js";
3
3
  export declare function registerGetLargeTrades(server: McpServer, client: ApiClient): void;
4
4
  /** Deprecated spelling of get_large_trades (#16304). */
@@ -1 +1 @@
1
- {"version":3,"file":"get-whale-trades.d.ts","sourceRoot":"","sources":["../../src/tools/get-whale-trades.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AA8FzC,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAOjF;AAED,wDAAwD;AACxD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAOjF"}
1
+ {"version":3,"file":"get-whale-trades.d.ts","sourceRoot":"","sources":["../../src/tools/get-whale-trades.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAEzD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AA8FzC,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAOjF;AAED,wDAAwD;AACxD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAOjF"}
@@ -4,7 +4,7 @@ function registerTradeList(server, client, tool) {
4
4
  server.registerTool(tool.name, {
5
5
  title: tool.title,
6
6
  description: tool.description,
7
- inputSchema: {
7
+ inputSchema: z.object({
8
8
  limit: z.number().int().min(1).max(100).default(20)
9
9
  .describe("Max results (1-100, default 20)"),
10
10
  cursor: z.string().optional()
@@ -23,14 +23,14 @@ function registerTradeList(server, client, tool) {
23
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"),
24
24
  since: z.string().optional()
25
25
  .describe("wt_ id of a trade a previous call returned: answer only the trades recorded after it, in commit order, so a trade recorded late still arrives and none is skipped. Poll with the first trade of the last answer that had trades and deduplicate on id. Recent order only"),
26
- },
26
+ }),
27
27
  annotations: {
28
28
  readOnlyHint: true,
29
29
  destructiveHint: false,
30
30
  idempotentHint: true,
31
31
  openWorldHint: false,
32
32
  },
33
- }, async ({ limit, cursor, min_size, category, min_grade, suspicious_only, min_market_volume_share, sort, since }, extra) => {
33
+ }, async ({ limit, cursor, min_size, category, min_grade, suspicious_only, min_market_volume_share, sort, since }, ctx) => {
34
34
  try {
35
35
  const response = await client.request(tool.path, {
36
36
  limit,
@@ -42,7 +42,7 @@ function registerTradeList(server, client, tool) {
42
42
  min_market_volume_share,
43
43
  sort,
44
44
  since,
45
- }, undefined, { signal: extra.signal });
45
+ }, undefined, { signal: ctx.mcpReq.signal });
46
46
  const result = listResult(response);
47
47
  return ok(result);
48
48
  }
@@ -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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"}
@@ -0,0 +1,5 @@
1
+ import { McpServer } from "@modelcontextprotocol/server";
2
+ import { ApiClient } from "../client.js";
3
+ export declare function registerGetLargeTradeCounterpartyExecutions(server: McpServer, client: ApiClient): void;
4
+ export declare function registerGetLargeTradeCounterpartyMakers(server: McpServer, client: ApiClient): void;
5
+ //# sourceMappingURL=large-trade-counterparties.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"large-trade-counterparties.d.ts","sourceRoot":"","sources":["../../src/tools/large-trade-counterparties.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAEzD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAyBzC,wBAAgB,2CAA2C,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAgCtG;AAED,wBAAgB,uCAAuC,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAwClG"}
@@ -0,0 +1,91 @@
1
+ // The counterparty pages of one large trade (#24738). get_large_trade embeds
2
+ // the first executions page, and each execution its first makers page; these
3
+ // two tools page past them on the same immutable snapshot.
4
+ //
5
+ // Descriptions and schemas mirror `backend/src/mcp/tools/contract.rs` and
6
+ // `backend/src/mcp/tools/schema.rs`; `scripts/check-mcp-stdio-contract-parity.mjs`
7
+ // fails a drift between the two transports.
8
+ import { z } from "zod";
9
+ import { fail, ok, withMeta } from "./result.js";
10
+ const readAnnotations = {
11
+ readOnlyHint: true,
12
+ destructiveHint: false,
13
+ idempotentHint: true,
14
+ openWorldHint: false,
15
+ };
16
+ /** `counterparty_page_properties` in `schema.rs`: the arguments both pages share. */
17
+ const largeTradeId = z.string().trim().min(1)
18
+ .describe("Large trade ID such as wt_123 or 123");
19
+ const snapshotId = z.string().min(1)
20
+ .describe("counterparty_analysis.snapshot_id from get_large_trade");
21
+ function pageLimit(rows) {
22
+ return z.number().int().min(1).max(100).default(100)
23
+ .describe(`Max ${rows} per page (1-100, default 100)`);
24
+ }
25
+ function executionsPath(id) {
26
+ return `/api/v1/large-trades/${encodeURIComponent(id)}/counterparties/executions`;
27
+ }
28
+ export function registerGetLargeTradeCounterpartyExecutions(server, client) {
29
+ server.registerTool("get_large_trade_counterparty_executions", {
30
+ title: "Get large trade counterparty executions",
31
+ description: `Page the counterparty executions of one large trade past the first page get_large_trade embeds in counterparty_analysis. Reads the immutable snapshot that response names; a stale or changed snapshot fails with reason cursor_expired, so read get_large_trade again and restart.
32
+
33
+ Args:
34
+ - id (string, required): Large trade ID such as wt_123 or 123
35
+ - snapshot_id (string, required): counterparty_analysis.snapshot_id from get_large_trade
36
+ - cursor (string, optional): executions_next_cursor from get_large_trade or from the previous page
37
+ - limit (number, 1-100, default 100): Executions per page
38
+
39
+ Returns: executions (each with its first makers page and makers_next_cursor), executions_next_cursor, execution counts, status and meta.`,
40
+ inputSchema: z.object({
41
+ id: largeTradeId,
42
+ snapshot_id: snapshotId,
43
+ cursor: z.string().optional()
44
+ .describe("executions_next_cursor from get_large_trade or from the previous page"),
45
+ limit: pageLimit("executions"),
46
+ }),
47
+ annotations: readAnnotations,
48
+ }, async ({ id, ...query }, ctx) => {
49
+ try {
50
+ const response = await client.request(executionsPath(id), query, undefined, { signal: ctx.mcpReq.signal });
51
+ return ok(withMeta(response.data, response.meta));
52
+ }
53
+ catch (error) {
54
+ return fail(error);
55
+ }
56
+ });
57
+ }
58
+ export function registerGetLargeTradeCounterpartyMakers(server, client) {
59
+ server.registerTool("get_large_trade_counterparty_makers", {
60
+ title: "Get large trade counterparty makers",
61
+ description: `Page the maker wallets of one counterparty execution past the first page its execution embeds. Percentages keep the whole execution as their denominator across pages.
62
+
63
+ Args:
64
+ - id (string, required): Large trade ID such as wt_123 or 123
65
+ - execution_id (string, required): execution_id of the execution
66
+ - snapshot_id (string, required): counterparty_analysis.snapshot_id from get_large_trade
67
+ - cursor (string, optional): makers_next_cursor from the execution or next_cursor from the previous page
68
+ - limit (number, 1-100, default 100): Makers per page
69
+
70
+ Returns: items (makers), next_cursor, execution_id, snapshot_id and meta.`,
71
+ inputSchema: z.object({
72
+ id: largeTradeId,
73
+ execution_id: z.string().trim().min(1)
74
+ .describe("execution_id of one counterparty execution"),
75
+ snapshot_id: snapshotId,
76
+ cursor: z.string().optional()
77
+ .describe("makers_next_cursor from the execution, or next_cursor from the previous page"),
78
+ limit: pageLimit("makers"),
79
+ }),
80
+ annotations: readAnnotations,
81
+ }, async ({ id, execution_id, ...query }, ctx) => {
82
+ try {
83
+ const response = await client.request(`${executionsPath(id)}/${encodeURIComponent(execution_id)}/makers`, query, undefined, { signal: ctx.mcpReq.signal });
84
+ return ok(withMeta(response.data, response.meta));
85
+ }
86
+ catch (error) {
87
+ return fail(error);
88
+ }
89
+ });
90
+ }
91
+ //# sourceMappingURL=large-trade-counterparties.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"large-trade-counterparties.js","sourceRoot":"","sources":["../../src/tools/large-trade-counterparties.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { McpServer } from "@modelcontextprotocol/server";
2
+ import { ApiClient } from "../client.js";
3
+ export declare function registerGetMarketHolders(server: McpServer, client: ApiClient): void;
4
+ export declare function registerGetMarketCandles(server: McpServer, client: ApiClient): void;
5
+ //# sourceMappingURL=market-reads.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"market-reads.d.ts","sourceRoot":"","sources":["../../src/tools/market-reads.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAEzD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAkBzC,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAmDnF;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAoCnF"}
@@ -0,0 +1,100 @@
1
+ // Market reads that were REST-only until #24738: the graded holder roster and
2
+ // the stored price candles.
3
+ //
4
+ // Descriptions and schemas mirror `backend/src/mcp/tools/contract.rs` and
5
+ // `backend/src/mcp/tools/schema.rs`; `scripts/check-mcp-stdio-contract-parity.mjs`
6
+ // fails a drift between the two transports.
7
+ import { z } from "zod";
8
+ import { fail, ok, withMeta } from "./result.js";
9
+ const readAnnotations = {
10
+ readOnlyHint: true,
11
+ destructiveHint: false,
12
+ idempotentHint: true,
13
+ openWorldHint: false,
14
+ };
15
+ /** `market_condition_id_property` in `schema.rs`. */
16
+ const marketConditionId = z.string().trim().min(1)
17
+ .describe("Raw provider condition_id or the mkt_-prefixed market id");
18
+ function marketPath(conditionId, suffix) {
19
+ return `/api/v1/market/${encodeURIComponent(conditionId)}/${suffix}`;
20
+ }
21
+ export function registerGetMarketHolders(server, client) {
22
+ server.registerTool("get_market_holders", {
23
+ title: "Get market holders",
24
+ description: `The S, A and B graded wallets holding one Polymarket market, from a complete provider holder scan: shares, Polymarket's currentValue for the leg, grade, win record in the market's category, and badges. A wallet holding both outcomes is listed once on its net side. Ordered by current value. The roster is at most 60 seconds old over a provider walk at most 180 seconds old; scan.fetched_at is its only timestamp. An incomplete scan is an error with a retry time, never a shorter list. C, D, F and ungraded wallets are never listed and are counted only in scan.wallet_count. Counts differ from get_positions by design: a live scan, the graded cohort, and no 100 USD size floor.
25
+
26
+ Args:
27
+ - condition_id (string, required): Raw provider condition_id or the mkt_-prefixed market id
28
+ - outcome (string, optional): yes, no, or all (default)
29
+ - min_grade (string, optional): S keeps S, A keeps S and A, B (default) keeps S, A and B
30
+ - limit (number, 1-100, default 20): Holders per page
31
+ - cursor (string, optional): next_cursor from the previous page, bound to the same market and filters
32
+
33
+ Returns: data (holders), has_more, next_cursor, total, market, scan, totals and meta.`,
34
+ inputSchema: z.object({
35
+ condition_id: marketConditionId,
36
+ outcome: z.enum(["yes", "no", "all"]).optional()
37
+ .describe("Keep holders netting one side; all (the default) lists both"),
38
+ min_grade: z.enum(["S", "A", "B"]).optional()
39
+ .describe("Narrow the graded cohort: S keeps S, A keeps S and A, B (the default) keeps S, A and B"),
40
+ limit: z.number().int().min(1).max(100).default(20)
41
+ .describe("Max holders per page (1-100, default 20)"),
42
+ cursor: z.string().optional()
43
+ .describe("next_cursor from the previous page; it is bound to the same market and filters"),
44
+ }),
45
+ annotations: readAnnotations,
46
+ }, async ({ condition_id, ...query }, ctx) => {
47
+ try {
48
+ const response = await client.request(marketPath(condition_id, "holders"), query, undefined, { signal: ctx.mcpReq.signal });
49
+ // `ListMetadata::MarketHolders` in `response.rs`: the page and its
50
+ // cursor pair, with the market, the scan and the roster totals beside
51
+ // it. An absent field stays absent; none is invented.
52
+ return ok({
53
+ data: response.data,
54
+ has_more: response.has_more ?? false,
55
+ next_cursor: response.next_cursor ?? null,
56
+ ...(response.total === undefined ? {} : { total: response.total }),
57
+ ...(response.market === undefined ? {} : { market: response.market }),
58
+ ...(response.scan === undefined ? {} : { scan: response.scan }),
59
+ ...(response.totals === undefined ? {} : { totals: response.totals }),
60
+ ...(response.meta === undefined ? {} : { meta: response.meta }),
61
+ });
62
+ }
63
+ catch (error) {
64
+ return fail(error);
65
+ }
66
+ });
67
+ }
68
+ export function registerGetMarketCandles(server, client) {
69
+ server.registerTool("get_market_candles", {
70
+ title: "Get market price candles",
71
+ description: `OHLC price candles for a market's outcome tokens from the stored Polymarket CLOB price history, the series the market chart draws, for open and resolved markets. The stored series is daily: a 1d candle usually holds one point, so its open, high, low and close are that day's close, and 1w aggregates the daily closes. No intraday detail is invented.
72
+
73
+ Args:
74
+ - condition_id (string, required): Raw provider condition_id or the mkt_-prefixed market id
75
+ - resolution (string, optional): 1d (default, UTC day) or 1w (ISO week from Monday 00:00 UTC)
76
+ - from (integer, optional): Exclusive lower bound, unix seconds
77
+ - to (integer, optional): Inclusive upper bound, unix seconds; from must not be after to
78
+
79
+ Returns: condition_id, resolution, and outcomes, each with its token_id and candles, plus meta.`,
80
+ inputSchema: z.object({
81
+ condition_id: marketConditionId,
82
+ resolution: z.enum(["1d", "1w"]).optional()
83
+ .describe("1d (the default) buckets by UTC day, 1w by ISO week from Monday 00:00 UTC"),
84
+ from: z.number().int().optional()
85
+ .describe("Exclusive lower bound in unix seconds"),
86
+ to: z.number().int().optional()
87
+ .describe("Inclusive upper bound in unix seconds; from must not be after to"),
88
+ }),
89
+ annotations: readAnnotations,
90
+ }, async ({ condition_id, ...query }, ctx) => {
91
+ try {
92
+ const response = await client.request(marketPath(condition_id, "candles"), query, undefined, { signal: ctx.mcpReq.signal });
93
+ return ok(withMeta(response.data, response.meta));
94
+ }
95
+ catch (error) {
96
+ return fail(error);
97
+ }
98
+ });
99
+ }
100
+ //# sourceMappingURL=market-reads.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"market-reads.js","sourceRoot":"","sources":["../../src/tools/market-reads.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
1
+ import { McpServer } from "@modelcontextprotocol/server";
2
2
  import { ApiClient } from "../client.js";
3
3
  export declare function registerGetPickOfTheDay(server: McpServer, client: ApiClient): void;
4
4
  export declare function registerGetPickOfTheDayArchive(server: McpServer, client: ApiClient): void;
@@ -1 +1 @@
1
- {"version":3,"file":"pick-of-the-day.d.ts","sourceRoot":"","sources":["../../src/tools/pick-of-the-day.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAmBzC,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAwBlF;AAED,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAsBzF;AAED,wBAAgB,kCAAkC,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAoB7F"}
1
+ {"version":3,"file":"pick-of-the-day.d.ts","sourceRoot":"","sources":["../../src/tools/pick-of-the-day.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAmBzC,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAwBlF;AAED,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAsBzF;AAED,wBAAgB,kCAAkC,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAoB7F"}
@@ -24,11 +24,11 @@ When no active pick is available, including after cancelled pending recommendati
24
24
  Args: none
25
25
 
26
26
  Returns: The published pick set for the current product day (America/New_York), or a pick_not_released error with retry_at.`,
27
- inputSchema: {},
27
+ inputSchema: z.object({}),
28
28
  annotations: readAnnotations,
29
- }, async (_args, extra) => {
29
+ }, async (_args, ctx) => {
30
30
  try {
31
- const response = await client.request("/api/v1/pick-of-the-day", undefined, undefined, { signal: extra.signal });
31
+ const response = await client.request("/api/v1/pick-of-the-day", undefined, undefined, { signal: ctx.mcpReq.signal });
32
32
  return ok(withMeta(response.data, response.meta));
33
33
  }
34
34
  catch (error) {
@@ -44,11 +44,11 @@ export function registerGetPickOfTheDayArchive(server, client) {
44
44
  Args: none
45
45
 
46
46
  Returns: picks[] newest first with outcome and CLV fields, plus the aggregate record (hit_rate, decided, wins, losses, voids, profit, roi, total risked).`,
47
- inputSchema: {},
47
+ inputSchema: z.object({}),
48
48
  annotations: readAnnotations,
49
- }, async (_args, extra) => {
49
+ }, async (_args, ctx) => {
50
50
  try {
51
- const response = await client.request("/api/v1/pick-of-the-day/archive", undefined, undefined, { signal: extra.signal });
51
+ const response = await client.request("/api/v1/pick-of-the-day/archive", undefined, undefined, { signal: ctx.mcpReq.signal });
52
52
  return ok(withMeta(response.data, response.meta));
53
53
  }
54
54
  catch (error) {
@@ -60,13 +60,13 @@ export function registerGetPickOfTheDayLedgerEntry(server, client) {
60
60
  server.registerTool("get_pick_of_the_day_ledger_entry", {
61
61
  title: "Get Pick of the Day Proof",
62
62
  description: "Read one published pick's sealed, opened or uncommitted ledger entry by its stable decimal-string pick_id. commitment_version explicitly selects version 1 legacy proofs or version 2 rank-free proofs. Never infer a proof format from dates or reorder canonical bytes. Pending proofs withhold the backed side and nonce. This tool requires the usual authenticated MCP tools/call transport; the corresponding REST read is public.",
63
- inputSchema: {
63
+ inputSchema: z.object({
64
64
  pick_id: z.string().regex(/^[1-9][0-9]*$/).describe("Stable positive database row id as decimal text"),
65
- },
65
+ }),
66
66
  annotations: readAnnotations,
67
- }, async ({ pick_id }, extra) => {
67
+ }, async ({ pick_id }, ctx) => {
68
68
  try {
69
- const response = await client.request(`/api/v1/pick-of-the-day/ledger/${encodeURIComponent(pick_id)}`, undefined, undefined, { signal: extra.signal });
69
+ const response = await client.request(`/api/v1/pick-of-the-day/ledger/${encodeURIComponent(pick_id)}`, undefined, undefined, { signal: ctx.mcpReq.signal });
70
70
  return ok(withMeta(response.data, response.meta));
71
71
  }
72
72
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"pick-of-the-day.js","sourceRoot":"","sources":["../../src/tools/pick-of-the-day.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pick-of-the-day.js","sourceRoot":"","sources":["../../src/tools/pick-of-the-day.ts"],"names":[],"mappings":"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"}