@0xinsider/mcp 3.7.0 → 3.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -1
- package/dist/catalog.generated.d.ts +56 -0
- package/dist/catalog.generated.d.ts.map +1 -1
- package/dist/catalog.generated.js +70 -0
- package/dist/catalog.generated.js.map +1 -1
- package/dist/client.d.ts +3 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js.map +1 -1
- package/dist/constants.d.ts +1 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +1 -1
- package/dist/constants.js.map +1 -1
- package/dist/product-cli/index.d.ts.map +1 -1
- package/dist/product-cli/index.js +23 -2
- package/dist/product-cli/index.js.map +1 -1
- package/dist/product-cli/operations.d.ts.map +1 -1
- package/dist/product-cli/operations.js +20 -3
- package/dist/product-cli/operations.js.map +1 -1
- package/dist/sdk/client.d.ts +211 -3
- package/dist/sdk/client.d.ts.map +1 -1
- package/dist/sdk/client.js +228 -3
- package/dist/sdk/client.js.map +1 -1
- package/dist/sdk/index.d.ts +2 -2
- package/dist/sdk/index.d.ts.map +1 -1
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/schema.d.ts +1138 -29
- package/dist/sdk/schema.d.ts.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +21 -4
- package/dist/server.js.map +1 -1
- package/dist/tools/account.d.ts +5 -0
- package/dist/tools/account.d.ts.map +1 -0
- package/dist/tools/account.js +53 -0
- package/dist/tools/account.js.map +1 -0
- package/dist/tools/category-leaderboards.d.ts +5 -0
- package/dist/tools/category-leaderboards.d.ts.map +1 -0
- package/dist/tools/category-leaderboards.js +71 -0
- package/dist/tools/category-leaderboards.js.map +1 -0
- package/dist/tools/games.d.ts +4 -0
- package/dist/tools/games.d.ts.map +1 -1
- package/dist/tools/games.js +152 -6
- package/dist/tools/games.js.map +1 -1
- package/dist/tools/get-leaderboard.d.ts.map +1 -1
- package/dist/tools/get-leaderboard.js +31 -4
- package/dist/tools/get-leaderboard.js.map +1 -1
- package/dist/tools/get-whale-trades.d.ts.map +1 -1
- package/dist/tools/get-whale-trades.js +11 -1
- package/dist/tools/get-whale-trades.js.map +1 -1
- package/dist/tools/market-reads.d.ts +2 -0
- package/dist/tools/market-reads.d.ts.map +1 -1
- package/dist/tools/market-reads.js +58 -4
- package/dist/tools/market-reads.js.map +1 -1
- package/dist/tools/pick-of-the-day.d.ts +1 -0
- package/dist/tools/pick-of-the-day.d.ts.map +1 -1
- package/dist/tools/pick-of-the-day.js +41 -11
- package/dist/tools/pick-of-the-day.js.map +1 -1
- package/dist/tools/read-parity.d.ts +1 -0
- package/dist/tools/read-parity.d.ts.map +1 -1
- package/dist/tools/read-parity.js +41 -0
- package/dist/tools/read-parity.js.map +1 -1
- package/dist/tools/search-markets.js +4 -4
- package/dist/tools/search-markets.js.map +1 -1
- package/dist/tools/sport-leaderboards.d.ts +5 -0
- package/dist/tools/sport-leaderboards.d.ts.map +1 -0
- package/dist/tools/sport-leaderboards.js +65 -0
- package/dist/tools/sport-leaderboards.js.map +1 -0
- package/dist/tools/trader-reads.js +1 -1
- package/package.json +1 -1
|
@@ -3,7 +3,7 @@ import { fail, listResult } from "./result.js";
|
|
|
3
3
|
export function registerSearchMarkets(server, client) {
|
|
4
4
|
server.registerTool("search_markets", {
|
|
5
5
|
title: "Search Markets",
|
|
6
|
-
description: `Search prediction markets by keyword. Returns matching
|
|
6
|
+
description: `Search prediction markets by keyword. Returns one market per matching Polymarket event, with status, category, platform and event_slug: the event's representative market: the market whose title is q, else a moneyline or winner market before an O/U, spread or alt line, so a game's spreads, totals and player props never appear as separate results. An event holding a market whose title is q (case-insensitive) ranks first whatever its date, so a pasted market title returns that market first. Pass a sports result's event_slug to list_game_markets for every market of that game. Use this to find condition_id values needed by get_market_flow. Supports cursor pagination: pass next_cursor from the previous page with the same q, status and category to read the next page; stop when has_more is false.
|
|
7
7
|
|
|
8
8
|
Args:
|
|
9
9
|
- q (string, required): Search query
|
|
@@ -12,10 +12,10 @@ Args:
|
|
|
12
12
|
- status (string, optional): Filter by status: "active", "closed", or "all" (default "all")
|
|
13
13
|
- category (string, optional): Filter by category
|
|
14
14
|
|
|
15
|
-
Returns: data (matching
|
|
15
|
+
Returns: data (one market per matching event, with id, condition_id, title, slug, event_slug, category, platform, status), has_more, next_cursor.`,
|
|
16
16
|
inputSchema: z.object({
|
|
17
|
-
q: z.string().min(
|
|
18
|
-
.describe("Search query (
|
|
17
|
+
q: z.string().min(2)
|
|
18
|
+
.describe("Search query (2-512 characters before whitespace trimming, with at least 2 letters or digits; a query with fewer returns 400 bad_request)"),
|
|
19
19
|
limit: z.number().int().min(1).max(100).default(20)
|
|
20
20
|
.describe("Max results per page (1-100, default 20)"),
|
|
21
21
|
cursor: z.string().optional()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-markets.js","sourceRoot":"","sources":["../../src/tools/search-markets.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,UAAU,qBAAqB,CAAC,MAAiB,EAAE,MAAiB;IACxE,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,KAAK,EAAE,gBAAgB;QACvB,WAAW,EAAE;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"search-markets.js","sourceRoot":"","sources":["../../src/tools/search-markets.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,UAAU,qBAAqB,CAAC,MAAiB,EAAE,MAAiB;IACxE,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,KAAK,EAAE,gBAAgB;QACvB,WAAW,EAAE;;;;;;;;;kJAS+H;QAC5I,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;iBACjB,QAAQ,CAAC,2IAA2I,CAAC;YACxJ,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;iBAChD,QAAQ,CAAC,0CAA0C,CAAC;YACvD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;iBAC1B,QAAQ,CAAC,0GAA0G,CAAC;YACvH,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;iBACvD,QAAQ,CAAC,yBAAyB,CAAC;YACtC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;iBAC5B,QAAQ,CAAC,oBAAoB,CAAC;SAClC,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,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,EAAE;QACpD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,wBAAwB,EAAE;gBAC9D,CAAC;gBACD,KAAK;gBACL,MAAM;gBACN,MAAM;gBACN,QAAQ;aACT,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YAE7C,gEAAgE;YAChE,gEAAgE;YAChE,kEAAkE;YAClE,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;YAEpC,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAC5E,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/server";
|
|
2
|
+
import { ApiClient } from "../client.js";
|
|
3
|
+
export declare function registerGetLeaderboardLeagues(server: McpServer, client: ApiClient): void;
|
|
4
|
+
export declare function registerGetSportLeaderboard(server: McpServer, client: ApiClient): void;
|
|
5
|
+
//# sourceMappingURL=sport-leaderboards.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sport-leaderboards.d.ts","sourceRoot":"","sources":["../../src/tools/sport-leaderboards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAEzD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAczC,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAwBxF;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAsCtF"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { fail, ok, withMeta } from "./result.js";
|
|
3
|
+
// Sport and league boards over stdio (#32157). They mirror the remote entries
|
|
4
|
+
// in backend/src/mcp/tools/contract.rs; scripts/mcp-catalog-parity.mjs proves
|
|
5
|
+
// the two tool lists match, and the description text is kept in step by hand.
|
|
6
|
+
const readAnnotations = {
|
|
7
|
+
readOnlyHint: true,
|
|
8
|
+
destructiveHint: false,
|
|
9
|
+
idempotentHint: true,
|
|
10
|
+
openWorldHint: false,
|
|
11
|
+
};
|
|
12
|
+
export function registerGetLeaderboardLeagues(server, client) {
|
|
13
|
+
server.registerTool("get_leaderboard_leagues", {
|
|
14
|
+
title: "List Leaderboard Leagues",
|
|
15
|
+
description: `List every league that has its own skill leaderboard, grouped by sport, most ranked wallets first. Each row's sport and slug are the sport and league arguments of get_sport_leaderboard. A league is listed once its edge sort ranks at least min_ranked wallets.
|
|
16
|
+
|
|
17
|
+
A ranking being rebuilt returns read_model_warming with a retry time.
|
|
18
|
+
|
|
19
|
+
Args: none
|
|
20
|
+
|
|
21
|
+
Returns: min_ranked, min_resolved, refreshed_at and leagues[] (category, sport, slug, name, ranked_traders, total_traders).`,
|
|
22
|
+
inputSchema: z.object({}),
|
|
23
|
+
annotations: readAnnotations,
|
|
24
|
+
}, async (_args, ctx) => {
|
|
25
|
+
try {
|
|
26
|
+
const response = await client.request("/api/v1/leaderboard/leagues", undefined, undefined, { signal: ctx.mcpReq.signal });
|
|
27
|
+
return ok(withMeta(response.data, response.meta));
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
return fail(error);
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
export function registerGetSportLeaderboard(server, client) {
|
|
35
|
+
server.registerTool("get_sport_leaderboard", {
|
|
36
|
+
title: "Get Sport Leaderboard",
|
|
37
|
+
description: `Get one sport's skill leaderboard, or with league one league's: the board the site's sport pages show. Wallets need min_resolved resolved markets in the sport or league. sort edge (the default) ranks edge_skill, the edge over the price paid pulled toward the board's edge_average by how much of the record is noise; a wallet without a ranked edge sorts after the ranked ones. sort pnl ranks realized P&L and win_rate the Wilson lower bound of the win rate. Boards are ranked to 100 wallets.
|
|
38
|
+
|
|
39
|
+
A sport outside sports and esports is not_found on sport; a league the sport has no board for is not_found on league (get_leaderboard_leagues lists them).
|
|
40
|
+
|
|
41
|
+
Args:
|
|
42
|
+
- sport (string, required): Sport slug, e.g. soccer, basketball, football, esports; an alias such as nba reads its sport's board
|
|
43
|
+
- league (string, optional): League slug of the sport, e.g. premier-league
|
|
44
|
+
- sort (string, optional): edge (default), pnl or win_rate
|
|
45
|
+
- limit (number, 1-100, default 20): Rows from the top of the board
|
|
46
|
+
|
|
47
|
+
Returns: sport, category, league, sort, min_resolved, limit, total_traders, edge_average, volume_scope, as_of and rows[] (rank, id, address, username, platform, grade, n_resolved, wins, losses, win_rate, win_rate_wilson_lb, price_edge, edge_hold, edge_skill, pnl, volume, cost, roi, last_category_trade_at).`,
|
|
48
|
+
inputSchema: z.object({
|
|
49
|
+
sport: z.string().trim().min(1).describe("Sport slug, e.g. soccer, basketball, football or esports; an alias such as nba reads its sport's board"),
|
|
50
|
+
league: z.string().trim().min(1).optional().describe("League slug of the sport from get_leaderboard_leagues, e.g. premier-league; omit for the sport board"),
|
|
51
|
+
sort: z.enum(["edge", "pnl", "win_rate"]).default("edge").describe("Ranking axis: edge over the price paid (default), realized P&L, or win rate"),
|
|
52
|
+
limit: z.number().int().min(1).max(100).default(20).describe("Rows from the top of the board (1-100, default 20)"),
|
|
53
|
+
}),
|
|
54
|
+
annotations: readAnnotations,
|
|
55
|
+
}, async ({ sport, league, sort, limit }, ctx) => {
|
|
56
|
+
try {
|
|
57
|
+
const response = await client.request(`/api/v1/leaderboard/sports/${encodeURIComponent(sport)}`, { league, sort, limit }, undefined, { signal: ctx.mcpReq.signal });
|
|
58
|
+
return ok(withMeta(response.data, response.meta));
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
return fail(error);
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=sport-leaderboards.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sport-leaderboards.js","sourceRoot":"","sources":["../../src/tools/sport-leaderboards.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,7 +22,7 @@ function traderPath(address, suffix) {
|
|
|
22
22
|
export function registerGetTraderContext(server, client) {
|
|
23
23
|
server.registerTool("get_trader_context", {
|
|
24
24
|
title: "Get trader context",
|
|
25
|
-
description: `One structured context object for a trader: the full get_trader profile plus position_summary (sync coverage and realized and unrealized P&L rollups with an as_of open-position clock), data_as_of and a freshness_note on what the point-in-time snapshot covers. position_summary is absent when the trader is not tracked locally or native net economics is unavailable. Its
|
|
25
|
+
description: `One structured context object for a trader: the full get_trader profile plus position_summary (sync coverage and realized and unrealized P&L rollups with an as_of open-position clock), data_as_of and a freshness_note on what the point-in-time snapshot covers. position_summary is absent when the trader is not tracked locally or native net economics is unavailable. Its open-position figures (markets_open, unrealized_mtm, cost_basis_locked) cover the wallet's sports and esports markets, each judged when read; markets_synced, markets_resolved and the resolved win figures count every stored market, which can include markets of other categories, and sync_coverage adds markets_pruned and markets_unstored, its deleted and its unstored markets of other categories, and markets_combo, its combo markets, to markets_synced; markets_total, total_realized_pnl and synced_realized_pnl cover every Polymarket market of the wallet. A wallet address with no trader yet returns sync_status "unknown" on the nested trader; a username or trader id that matches no trader is a not_found error.
|
|
26
26
|
|
|
27
27
|
Args:
|
|
28
28
|
- address (string, required): Wallet address (0x...), username, or trd_-prefixed trader id
|
package/package.json
CHANGED