@0xinsider/mcp 1.0.2 → 1.0.9
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 +44 -7
- package/dist/cli-lib.d.ts +9 -0
- package/dist/cli-lib.d.ts.map +1 -1
- package/dist/cli-lib.js +210 -68
- package/dist/cli-lib.js.map +1 -1
- package/dist/client.d.ts +5 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +30 -4
- package/dist/client.js.map +1 -1
- package/dist/constants.d.ts +2 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +25 -1
- package/dist/constants.js.map +1 -1
- package/dist/prompts/index.js +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +32 -2
- package/dist/server.js.map +1 -1
- package/dist/tools/explore-markets.d.ts +36 -0
- package/dist/tools/explore-markets.d.ts.map +1 -0
- package/dist/tools/explore-markets.js +77 -0
- package/dist/tools/explore-markets.js.map +1 -0
- package/dist/tools/get-insider-radar.js +1 -1
- package/dist/tools/get-large-positions.d.ts +21 -0
- package/dist/tools/get-large-positions.d.ts.map +1 -0
- package/dist/tools/get-large-positions.js +68 -0
- package/dist/tools/get-large-positions.js.map +1 -0
- package/dist/tools/get-position-timeline.d.ts +24 -0
- package/dist/tools/get-position-timeline.d.ts.map +1 -0
- package/dist/tools/get-position-timeline.js +79 -0
- package/dist/tools/get-position-timeline.js.map +1 -0
- package/dist/tools/get-positions.d.ts +21 -0
- package/dist/tools/get-positions.d.ts.map +1 -0
- package/dist/tools/get-positions.js +68 -0
- package/dist/tools/get-positions.js.map +1 -0
- package/dist/tools/get-trader-pnl.d.ts +6 -0
- package/dist/tools/get-trader-pnl.d.ts.map +1 -0
- package/dist/tools/get-trader-pnl.js +39 -0
- package/dist/tools/get-trader-pnl.js.map +1 -0
- package/dist/tools/get-trader.d.ts.map +1 -1
- package/dist/tools/get-trader.js +4 -3
- package/dist/tools/get-trader.js.map +1 -1
- package/dist/tools/get-trending-wallets.d.ts +15 -0
- package/dist/tools/get-trending-wallets.d.ts.map +1 -0
- package/dist/tools/get-trending-wallets.js +56 -0
- package/dist/tools/get-trending-wallets.js.map +1 -0
- package/dist/tools/get-whale-trades.js +1 -1
- package/dist/tools/get-whale-trades.js.map +1 -1
- package/dist/tools/read-parity.d.ts +20 -0
- package/dist/tools/read-parity.d.ts.map +1 -0
- package/dist/tools/read-parity.js +493 -0
- package/dist/tools/read-parity.js.map +1 -0
- package/package.json +3 -1
package/dist/constants.d.ts
CHANGED
|
@@ -2,11 +2,12 @@ export declare const API_BASE_URL = "https://api.0xinsider.com";
|
|
|
2
2
|
export declare const SITE_URL = "https://0xinsider.com";
|
|
3
3
|
export declare const DEVELOPERS_URL = "https://0xinsider.com/developers";
|
|
4
4
|
export declare const PRICING_URL = "https://0xinsider.com/pricing";
|
|
5
|
-
export declare const VERSION = "1.0.
|
|
5
|
+
export declare const VERSION = "1.0.9";
|
|
6
6
|
export declare const PACKAGE_NAME = "@0xinsider/mcp";
|
|
7
7
|
export declare const SERVER_NAME = "0xinsider";
|
|
8
8
|
export declare const API_KEY_ENV_VAR = "OXINSIDER_API_KEY";
|
|
9
9
|
export declare const API_URL_ENV_VAR = "OXINSIDER_API_URL";
|
|
10
10
|
export declare const MCP_NPX_COMMAND = "npx";
|
|
11
11
|
export declare const MCP_NPX_ARGS: readonly ["-y", "@0xinsider/mcp"];
|
|
12
|
+
export declare const MAX_BATCH_ITEMS = 25;
|
|
12
13
|
//# sourceMappingURL=constants.d.ts.map
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,8BAA8B,CAAC;AACxD,eAAO,MAAM,QAAQ,0BAA0B,CAAC;AAChD,eAAO,MAAM,cAAc,qCAA2B,CAAC;AACvD,eAAO,MAAM,WAAW,kCAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,8BAA8B,CAAC;AACxD,eAAO,MAAM,QAAQ,0BAA0B,CAAC;AAChD,eAAO,MAAM,cAAc,qCAA2B,CAAC;AACvD,eAAO,MAAM,WAAW,kCAAwB,CAAC;AAcjD,eAAO,MAAM,OAAO,UAAU,CAAC;AAE/B,eAAO,MAAM,YAAY,mBAAmB,CAAC;AAC7C,eAAO,MAAM,WAAW,cAAc,CAAC;AACvC,eAAO,MAAM,eAAe,sBAAsB,CAAC;AACnD,eAAO,MAAM,eAAe,sBAAsB,CAAC;AACnD,eAAO,MAAM,eAAe,QAAQ,CAAC;AACrC,eAAO,MAAM,YAAY,mCAAgC,CAAC;AAU1D,eAAO,MAAM,eAAe,KAAK,CAAC"}
|
package/dist/constants.js
CHANGED
|
@@ -2,11 +2,35 @@ export const API_BASE_URL = "https://api.0xinsider.com";
|
|
|
2
2
|
export const SITE_URL = "https://0xinsider.com";
|
|
3
3
|
export const DEVELOPERS_URL = `${SITE_URL}/developers`;
|
|
4
4
|
export const PRICING_URL = `${SITE_URL}/pricing`;
|
|
5
|
-
|
|
5
|
+
// Version reported to MCP clients.
|
|
6
|
+
//
|
|
7
|
+
// GENERATED from this package's own `package.json` by `scripts/generate-version.mjs`,
|
|
8
|
+
// which `prebuild` runs, so any `npm run build` refreshes it (#8103). `prepublishOnly`
|
|
9
|
+
// also runs `build`, but only for a DIRECTORY publish; the release workflow publishes a
|
|
10
|
+
// tarball and runs its own explicit `npm run build` before packing (#8395).
|
|
11
|
+
// A hand-maintained copy drifted to 1.0.3 while the package published 1.0.5, and this
|
|
12
|
+
// constant is what `server.ts` reports as `serverInfo.version` and what `client.ts` puts
|
|
13
|
+
// in the `User-Agent`. Do not hand-edit inside the markers: bump `package.json` and
|
|
14
|
+
// build. The generator lives in this package rather than in `web/` because the publish
|
|
15
|
+
// flow runs `cd mcp && npm ci` from a clean checkout, where `web/node_modules` need not
|
|
16
|
+
// exist.
|
|
17
|
+
// generated-package-version:start
|
|
18
|
+
export const VERSION = "1.0.9";
|
|
19
|
+
// generated-package-version:end
|
|
6
20
|
export const PACKAGE_NAME = "@0xinsider/mcp";
|
|
7
21
|
export const SERVER_NAME = "0xinsider";
|
|
8
22
|
export const API_KEY_ENV_VAR = "OXINSIDER_API_KEY";
|
|
9
23
|
export const API_URL_ENV_VAR = "OXINSIDER_API_URL";
|
|
10
24
|
export const MCP_NPX_COMMAND = "npx";
|
|
11
25
|
export const MCP_NPX_ARGS = ["-y", PACKAGE_NAME];
|
|
26
|
+
// Maximum items a single batch tool call may carry.
|
|
27
|
+
//
|
|
28
|
+
// GENERATED from `MAX_BATCH_ITEMS` in `backend/src/api_v1/handlers/batch.rs` by
|
|
29
|
+
// `web/scripts/generate-api-policy.ts` (#8103). This package is published separately and
|
|
30
|
+
// cannot import the owner module at `web/src/lib/rate-limit-facts.ts`, so the number is
|
|
31
|
+
// written here instead of restated by hand. Do not hand-edit inside the markers; run
|
|
32
|
+
// `cd web && npm run generate:api-policy` after changing the Rust constant.
|
|
33
|
+
// generated-batch-item-cap:start
|
|
34
|
+
export const MAX_BATCH_ITEMS = 25;
|
|
35
|
+
// generated-batch-item-cap:end
|
|
12
36
|
//# sourceMappingURL=constants.js.map
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,2BAA2B,CAAC;AACxD,MAAM,CAAC,MAAM,QAAQ,GAAG,uBAAuB,CAAC;AAChD,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,QAAQ,aAAa,CAAC;AACvD,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,QAAQ,UAAU,CAAC;AACjD,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAC/B,MAAM,CAAC,MAAM,YAAY,GAAG,gBAAgB,CAAC;AAC7C,MAAM,CAAC,MAAM,WAAW,GAAG,WAAW,CAAC;AACvC,MAAM,CAAC,MAAM,eAAe,GAAG,mBAAmB,CAAC;AACnD,MAAM,CAAC,MAAM,eAAe,GAAG,mBAAmB,CAAC;AACnD,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC;AACrC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,YAAY,CAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,2BAA2B,CAAC;AACxD,MAAM,CAAC,MAAM,QAAQ,GAAG,uBAAuB,CAAC;AAChD,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,QAAQ,aAAa,CAAC;AACvD,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,QAAQ,UAAU,CAAC;AACjD,mCAAmC;AACnC,EAAE;AACF,sFAAsF;AACtF,uFAAuF;AACvF,wFAAwF;AACxF,4EAA4E;AAC5E,sFAAsF;AACtF,yFAAyF;AACzF,oFAAoF;AACpF,uFAAuF;AACvF,wFAAwF;AACxF,SAAS;AACT,kCAAkC;AAClC,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAC/B,gCAAgC;AAChC,MAAM,CAAC,MAAM,YAAY,GAAG,gBAAgB,CAAC;AAC7C,MAAM,CAAC,MAAM,WAAW,GAAG,WAAW,CAAC;AACvC,MAAM,CAAC,MAAM,eAAe,GAAG,mBAAmB,CAAC;AACnD,MAAM,CAAC,MAAM,eAAe,GAAG,mBAAmB,CAAC;AACnD,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC;AACrC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,YAAY,CAAU,CAAC;AAE1D,oDAAoD;AACpD,EAAE;AACF,gFAAgF;AAChF,yFAAyF;AACzF,wFAAwF;AACxF,qFAAqF;AACrF,4EAA4E;AAC5E,iCAAiC;AACjC,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAC;AAClC,+BAA+B"}
|
package/dist/prompts/index.js
CHANGED
|
@@ -17,7 +17,7 @@ Provide:
|
|
|
17
17
|
1. **Overview** — Grade, score, rank, and what tier they fall in
|
|
18
18
|
2. **P&L Analysis** — Total, realized vs unrealized, recent trends (7d/30d)
|
|
19
19
|
3. **Strategy** — What type of trader they are and how they operate
|
|
20
|
-
4. **Risk Profile** —
|
|
20
|
+
4. **Risk Profile** — copy_score and smart_score (0-100), Sharpe (7d/30d), profit_factor, and edge_consistency interpretation
|
|
21
21
|
5. **Category Strengths** — Where they perform best/worst
|
|
22
22
|
6. **Key Takeaway** — One-paragraph summary of whether this trader is worth following and why`,
|
|
23
23
|
},
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA4DpE,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CA0CvF;AAED,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAY/C"}
|
package/dist/server.js
CHANGED
|
@@ -7,6 +7,13 @@ import { registerGetLeaderboard } from "./tools/get-leaderboard.js";
|
|
|
7
7
|
import { registerSearchMarkets } from "./tools/search-markets.js";
|
|
8
8
|
import { registerGetMarketIntel } from "./tools/get-market-intel.js";
|
|
9
9
|
import { registerGetInsiderRadar } from "./tools/get-insider-radar.js";
|
|
10
|
+
import { registerGetPositions } from "./tools/get-positions.js";
|
|
11
|
+
import { registerGetPositionTimeline } from "./tools/get-position-timeline.js";
|
|
12
|
+
import { registerGetLargePositions } from "./tools/get-large-positions.js";
|
|
13
|
+
import { registerGetTrendingWallets } from "./tools/get-trending-wallets.js";
|
|
14
|
+
import { registerGetTraderPnl } from "./tools/get-trader-pnl.js";
|
|
15
|
+
import { registerExploreMarkets } from "./tools/explore-markets.js";
|
|
16
|
+
import { registerBatchGetMarketIntel, registerBatchGetTraders, registerGetDailyReportSnapshot, registerGetEventReplaySince, registerGetInsiderRadarFlag, registerGetMarketSnapshot, registerGetMonthlyReportSnapshot, registerGetPlatforms, registerGetPositionTimelineById, registerGetSharpMoneyFlows, registerGetSmartMoneyFlows, registerGetTraderExportSnapshot, registerGetWebhook, registerGetWeeklyReportSnapshot, registerGetWhaleTrade, registerGetWhaleTradesHistory, registerListWebhooks, } from "./tools/read-parity.js";
|
|
10
17
|
import { registerResources } from "./resources/index.js";
|
|
11
18
|
import { registerPrompts } from "./prompts/index.js";
|
|
12
19
|
import { API_KEY_ENV_VAR, API_URL_ENV_VAR, DEVELOPERS_URL, SERVER_NAME, SITE_URL, VERSION, } from "./constants.js";
|
|
@@ -29,12 +36,35 @@ export async function createServer(apiKey, baseUrl) {
|
|
|
29
36
|
const client = new ApiClient(apiKey, baseUrl);
|
|
30
37
|
const instructions = await fetchInstructions();
|
|
31
38
|
const server = new McpServer({ name: SERVER_NAME, version: VERSION }, { instructions });
|
|
39
|
+
registerGetLeaderboard(server, client);
|
|
32
40
|
registerGetTrader(server, client);
|
|
41
|
+
registerBatchGetTraders(server, client);
|
|
33
42
|
registerGetWhaleTrades(server, client);
|
|
34
|
-
|
|
35
|
-
|
|
43
|
+
registerGetWhaleTrade(server, client);
|
|
44
|
+
registerGetWhaleTradesHistory(server, client);
|
|
36
45
|
registerGetMarketIntel(server, client);
|
|
46
|
+
registerBatchGetMarketIntel(server, client);
|
|
47
|
+
registerGetSmartMoneyFlows(server, client);
|
|
48
|
+
registerGetSharpMoneyFlows(server, client);
|
|
49
|
+
registerGetMarketSnapshot(server, client);
|
|
37
50
|
registerGetInsiderRadar(server, client);
|
|
51
|
+
registerGetInsiderRadarFlag(server, client);
|
|
52
|
+
registerGetPositions(server, client);
|
|
53
|
+
registerGetPositionTimeline(server, client);
|
|
54
|
+
registerGetPositionTimelineById(server, client);
|
|
55
|
+
registerGetLargePositions(server, client);
|
|
56
|
+
registerGetTrendingWallets(server, client);
|
|
57
|
+
registerGetTraderPnl(server, client);
|
|
58
|
+
registerSearchMarkets(server, client);
|
|
59
|
+
registerExploreMarkets(server, client);
|
|
60
|
+
registerGetEventReplaySince(server, client);
|
|
61
|
+
registerListWebhooks(server, client);
|
|
62
|
+
registerGetWebhook(server, client);
|
|
63
|
+
registerGetDailyReportSnapshot(server, client);
|
|
64
|
+
registerGetWeeklyReportSnapshot(server, client);
|
|
65
|
+
registerGetMonthlyReportSnapshot(server, client);
|
|
66
|
+
registerGetTraderExportSnapshot(server, client);
|
|
67
|
+
registerGetPlatforms(server, client);
|
|
38
68
|
registerResources(server, client);
|
|
39
69
|
registerPrompts(server);
|
|
40
70
|
return server;
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EACL,eAAe,EACf,eAAe,EACf,cAAc,EACd,WAAW,EACX,QAAQ,EACR,OAAO,GACR,MAAM,gBAAgB,CAAC;AAExB,KAAK,UAAU,iBAAiB;IAC9B,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,YAAY,CAAC,CAAC;QACtD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CAAC,0CAA0C,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YAC3E,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,uEAAuE;QACvE,OAAO,CAAC,KAAK,CAAC,oDAAoD,QAAQ,aAAa,EAAE,KAAK,CAAC,CAAC;QAChG,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAc,EAAE,OAAgB;IACjE,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9C,MAAM,YAAY,GAAG,MAAM,iBAAiB,EAAE,CAAC;IAE/C,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,EACvC,EAAE,YAAY,EAAE,CACjB,CAAC;IAEF,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { ApiClient } from "../client.js";
|
|
4
|
+
export declare const exploreMarketsParamsSchema: {
|
|
5
|
+
limit: z.ZodDefault<z.ZodNumber>;
|
|
6
|
+
cursor: z.ZodOptional<z.ZodString>;
|
|
7
|
+
category: z.ZodOptional<z.ZodString>;
|
|
8
|
+
status: z.ZodDefault<z.ZodEnum<["active", "closed", "all"]>>;
|
|
9
|
+
platform: z.ZodDefault<z.ZodEnum<["polymarket", "kalshi", "all"]>>;
|
|
10
|
+
sort: z.ZodDefault<z.ZodEnum<["trending", "hot", "expiring", "whales", "volume", "newest"]>>;
|
|
11
|
+
q: z.ZodOptional<z.ZodString>;
|
|
12
|
+
};
|
|
13
|
+
export declare function buildExploreMarketsParams(args: {
|
|
14
|
+
limit?: number;
|
|
15
|
+
cursor?: string;
|
|
16
|
+
category?: string;
|
|
17
|
+
status?: "active" | "closed" | "all";
|
|
18
|
+
platform?: "polymarket" | "kalshi" | "all";
|
|
19
|
+
sort?: "trending" | "hot" | "expiring" | "whales" | "volume" | "newest";
|
|
20
|
+
q?: string;
|
|
21
|
+
}): Record<string, string | number | undefined>;
|
|
22
|
+
export declare function buildExploreMarketsResult(response: {
|
|
23
|
+
data: unknown;
|
|
24
|
+
has_more?: boolean;
|
|
25
|
+
next_cursor?: string | null;
|
|
26
|
+
total?: number | null;
|
|
27
|
+
facets?: unknown;
|
|
28
|
+
}): {
|
|
29
|
+
data: unknown;
|
|
30
|
+
has_more?: boolean;
|
|
31
|
+
next_cursor?: string | null;
|
|
32
|
+
total?: number | null;
|
|
33
|
+
facets?: unknown;
|
|
34
|
+
};
|
|
35
|
+
export declare function registerExploreMarkets(server: McpServer, client: ApiClient): void;
|
|
36
|
+
//# sourceMappingURL=explore-markets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"explore-markets.d.ts","sourceRoot":"","sources":["../../src/tools/explore-markets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAY,MAAM,cAAc,CAAC;AAEnD,eAAO,MAAM,0BAA0B;;;;;;;;CAetC,CAAC;AAEF,wBAAgB,yBAAyB,CAAC,IAAI,EAAE;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;IACrC,QAAQ,CAAC,EAAE,YAAY,GAAG,QAAQ,GAAG,KAAK,CAAC;IAC3C,IAAI,CAAC,EAAE,UAAU,GAAG,KAAK,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACxE,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,CAU9C;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE;IAClD,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GAAG;IACF,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAQA;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CA6CjF"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { ApiError } from "../client.js";
|
|
3
|
+
export const exploreMarketsParamsSchema = {
|
|
4
|
+
limit: z.number().int().min(1).max(48).default(24)
|
|
5
|
+
.describe("Max discovery entries (1-48, default 24)"),
|
|
6
|
+
cursor: z.string().optional()
|
|
7
|
+
.describe("Pagination cursor from previous response"),
|
|
8
|
+
category: z.string().optional()
|
|
9
|
+
.describe("Filter by provider-native market category"),
|
|
10
|
+
status: z.enum(["active", "closed", "all"]).default("all")
|
|
11
|
+
.describe("Filter by market status"),
|
|
12
|
+
platform: z.enum(["polymarket", "kalshi", "all"]).default("all")
|
|
13
|
+
.describe("Filter by platform"),
|
|
14
|
+
sort: z.enum(["trending", "hot", "expiring", "whales", "volume", "newest"]).default("trending")
|
|
15
|
+
.describe("Discovery sort order"),
|
|
16
|
+
q: z.string().optional()
|
|
17
|
+
.describe("Keyword search against market titles"),
|
|
18
|
+
};
|
|
19
|
+
export function buildExploreMarketsParams(args) {
|
|
20
|
+
return {
|
|
21
|
+
limit: args.limit,
|
|
22
|
+
cursor: args.cursor,
|
|
23
|
+
category: args.category,
|
|
24
|
+
status: args.status,
|
|
25
|
+
platform: args.platform,
|
|
26
|
+
sort: args.sort,
|
|
27
|
+
q: args.q,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export function buildExploreMarketsResult(response) {
|
|
31
|
+
return {
|
|
32
|
+
data: response.data,
|
|
33
|
+
has_more: response.has_more,
|
|
34
|
+
next_cursor: response.next_cursor,
|
|
35
|
+
total: response.total,
|
|
36
|
+
facets: response.facets,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
export function registerExploreMarkets(server, client) {
|
|
40
|
+
server.registerTool("explore_markets", {
|
|
41
|
+
title: "Explore Markets",
|
|
42
|
+
description: `Browse whale-active titled markets for discovery surfaces. Returns grouped event clusters or standalone markets plus live facets. Cursor-paginated over visible discovery entries.
|
|
43
|
+
|
|
44
|
+
Args:
|
|
45
|
+
- limit (number, 1-48, default 24): Max discovery entries per page
|
|
46
|
+
- cursor (string, optional): Pagination cursor from previous response
|
|
47
|
+
- category (string, optional): Filter by provider-native market category
|
|
48
|
+
- status (string, optional): Filter by status: "active", "closed", or "all"
|
|
49
|
+
- platform (string, optional): Filter by platform: "polymarket", "kalshi", or "all"
|
|
50
|
+
- sort (string, optional): Sort by "trending", "hot", "expiring", "whales", "volume", or "newest"
|
|
51
|
+
- q (string, optional): Keyword search against market titles
|
|
52
|
+
|
|
53
|
+
Returns: Market discovery entries, facets, and pagination metadata.`,
|
|
54
|
+
inputSchema: exploreMarketsParamsSchema,
|
|
55
|
+
annotations: {
|
|
56
|
+
readOnlyHint: true,
|
|
57
|
+
destructiveHint: false,
|
|
58
|
+
idempotentHint: true,
|
|
59
|
+
openWorldHint: false,
|
|
60
|
+
},
|
|
61
|
+
}, async (args) => {
|
|
62
|
+
try {
|
|
63
|
+
const response = await client.request("/api/v1/markets/explore", buildExploreMarketsParams(args));
|
|
64
|
+
const result = buildExploreMarketsResult(response);
|
|
65
|
+
return {
|
|
66
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
return {
|
|
71
|
+
isError: true,
|
|
72
|
+
content: [{ type: "text", text: error instanceof ApiError ? error.message : `Unexpected error: ${error}` }],
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=explore-markets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"explore-markets.js","sourceRoot":"","sources":["../../src/tools/explore-markets.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { ApiError } from "../client.js";
|
|
|
3
3
|
export function registerGetInsiderRadar(server, client) {
|
|
4
4
|
server.registerTool("get_insider_radar", {
|
|
5
5
|
title: "Get Insider Radar Flags",
|
|
6
|
-
description: `Suspicious trading pattern
|
|
6
|
+
description: `Suspicious trading pattern flags — pre-resolution accumulation and coordinated wallets. Each flag carries recorded per-signal component scores; they are nullable and historical. Cursor-paginated by suspicion score (highest first).
|
|
7
7
|
|
|
8
8
|
Each flag includes:
|
|
9
9
|
- suspicion_score (0-100)
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { ApiClient } from "../client.js";
|
|
4
|
+
export declare const largePositionsParamsSchema: {
|
|
5
|
+
limit: z.ZodDefault<z.ZodNumber>;
|
|
6
|
+
cursor: z.ZodOptional<z.ZodString>;
|
|
7
|
+
min_size: z.ZodOptional<z.ZodNumber>;
|
|
8
|
+
category: z.ZodOptional<z.ZodString>;
|
|
9
|
+
min_grade: z.ZodOptional<z.ZodEnum<["S", "A", "B", "C", "D", "F"]>>;
|
|
10
|
+
condition_id: z.ZodOptional<z.ZodString>;
|
|
11
|
+
};
|
|
12
|
+
export declare function buildLargePositionsParams(args: {
|
|
13
|
+
limit?: number;
|
|
14
|
+
cursor?: string;
|
|
15
|
+
min_size?: number;
|
|
16
|
+
category?: string;
|
|
17
|
+
min_grade?: "S" | "A" | "B" | "C" | "D" | "F";
|
|
18
|
+
condition_id?: string;
|
|
19
|
+
}): Record<string, string | number | undefined>;
|
|
20
|
+
export declare function registerGetLargePositions(server: McpServer, client: ApiClient): void;
|
|
21
|
+
//# sourceMappingURL=get-large-positions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-large-positions.d.ts","sourceRoot":"","sources":["../../src/tools/get-large-positions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAY,MAAM,cAAc,CAAC;AAEnD,eAAO,MAAM,0BAA0B;;;;;;;CAatC,CAAC;AAEF,wBAAgB,yBAAyB,CAAC,IAAI,EAAE;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,CAS9C;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAgDpF"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { ApiError } from "../client.js";
|
|
3
|
+
export const largePositionsParamsSchema = {
|
|
4
|
+
limit: z.number().int().min(1).max(100).default(20)
|
|
5
|
+
.describe("Max results (1-100, default 20)"),
|
|
6
|
+
cursor: z.string().optional()
|
|
7
|
+
.describe("Pagination cursor from previous response"),
|
|
8
|
+
min_size: z.number().min(0).optional()
|
|
9
|
+
.describe("Minimum current position value in USD"),
|
|
10
|
+
category: z.string().optional()
|
|
11
|
+
.describe("Filter by provider-backed market category"),
|
|
12
|
+
min_grade: z.enum(["S", "A", "B", "C", "D", "F"]).optional()
|
|
13
|
+
.describe("Minimum trader grade"),
|
|
14
|
+
condition_id: z.string().optional()
|
|
15
|
+
.describe("Scope to one market: raw provider condition_id or mkt_-prefixed market id"),
|
|
16
|
+
};
|
|
17
|
+
export function buildLargePositionsParams(args) {
|
|
18
|
+
return {
|
|
19
|
+
limit: args.limit,
|
|
20
|
+
cursor: args.cursor,
|
|
21
|
+
min_size: args.min_size,
|
|
22
|
+
category: args.category,
|
|
23
|
+
min_grade: args.min_grade,
|
|
24
|
+
condition_id: args.condition_id,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export function registerGetLargePositions(server, client) {
|
|
28
|
+
server.registerTool("get_large_positions", {
|
|
29
|
+
title: "List Large Positions",
|
|
30
|
+
description: `List the largest current open positions from graded traders, value-descending, with cursor pagination. Polymarket-only by design: the scanner filters platform = 'polymarket', so a Kalshi or unknown condition_id returns an empty list (never fabricated rows).
|
|
31
|
+
|
|
32
|
+
Args:
|
|
33
|
+
- limit (number, 1-100, default 20): Max results per page
|
|
34
|
+
- cursor (string, optional): Pagination cursor from previous response
|
|
35
|
+
- min_size (number, optional): Minimum current position value in USD
|
|
36
|
+
- category (string, optional): Filter by provider-backed market category
|
|
37
|
+
- min_grade (string, optional): Minimum trader grade (S, A, B, C, D, F)
|
|
38
|
+
- condition_id (string, optional): Scope to one market by raw condition_id or mkt_-prefixed market id
|
|
39
|
+
|
|
40
|
+
Returns: List of large positions with trader, market, value, P&L, and freshness context plus pagination metadata.`,
|
|
41
|
+
inputSchema: largePositionsParamsSchema,
|
|
42
|
+
annotations: {
|
|
43
|
+
readOnlyHint: true,
|
|
44
|
+
destructiveHint: false,
|
|
45
|
+
idempotentHint: true,
|
|
46
|
+
openWorldHint: false,
|
|
47
|
+
},
|
|
48
|
+
}, async (args) => {
|
|
49
|
+
try {
|
|
50
|
+
const response = await client.request("/api/v1/large-positions", buildLargePositionsParams(args));
|
|
51
|
+
const result = {
|
|
52
|
+
data: response.data,
|
|
53
|
+
has_more: response.has_more,
|
|
54
|
+
next_cursor: response.next_cursor,
|
|
55
|
+
};
|
|
56
|
+
return {
|
|
57
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
return {
|
|
62
|
+
isError: true,
|
|
63
|
+
content: [{ type: "text", text: error instanceof ApiError ? error.message : `Unexpected error: ${error}` }],
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=get-large-positions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-large-positions.js","sourceRoot":"","sources":["../../src/tools/get-large-positions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAa,QAAQ,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,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,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;SACnC,QAAQ,CAAC,uCAAuC,CAAC;IACpD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC5B,QAAQ,CAAC,2CAA2C,CAAC;IACxD,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE;SACzD,QAAQ,CAAC,sBAAsB,CAAC;IACnC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAChC,QAAQ,CAAC,2EAA2E,CAAC;CACzF,CAAC;AAEF,MAAM,UAAU,yBAAyB,CAAC,IAOzC;IACC,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,YAAY,EAAE,IAAI,CAAC,YAAY;KAChC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,MAAiB,EAAE,MAAiB;IAC5E,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;QACE,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EAAE;;;;;;;;;;kHAU+F;QAC5G,WAAW,EAAE,0BAA0B;QACvC,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,EAAE;QACb,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CACnC,yBAAyB,EACzB,yBAAyB,CAAC,IAAI,CAAC,CAChC,CAAC;YAEF,MAAM,MAAM,GAAG;gBACb,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,WAAW,EAAE,QAAQ,CAAC,WAAW;aAClC,CAAC;YAEF,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;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,YAAY,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,KAAK,EAAE,EAAE,CAAC;aACrH,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { ApiClient } from "../client.js";
|
|
4
|
+
type PositionTimelineArgs = {
|
|
5
|
+
condition_id: string;
|
|
6
|
+
address?: string;
|
|
7
|
+
trader_id?: number;
|
|
8
|
+
limit?: number;
|
|
9
|
+
cursor?: string;
|
|
10
|
+
};
|
|
11
|
+
export declare const positionTimelineParamsSchema: {
|
|
12
|
+
condition_id: z.ZodString;
|
|
13
|
+
address: z.ZodOptional<z.ZodString>;
|
|
14
|
+
trader_id: z.ZodOptional<z.ZodNumber>;
|
|
15
|
+
limit: z.ZodDefault<z.ZodNumber>;
|
|
16
|
+
cursor: z.ZodOptional<z.ZodString>;
|
|
17
|
+
};
|
|
18
|
+
export declare function buildPositionTimelineRequest(args: PositionTimelineArgs): {
|
|
19
|
+
path: string;
|
|
20
|
+
params: Record<string, string | number | undefined>;
|
|
21
|
+
};
|
|
22
|
+
export declare function registerGetPositionTimeline(server: McpServer, client: ApiClient): void;
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=get-position-timeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-position-timeline.d.ts","sourceRoot":"","sources":["../../src/tools/get-position-timeline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAY,MAAM,cAAc,CAAC;AAEnD,KAAK,oBAAoB,GAAG;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,4BAA4B;;;;;;CAWxC,CAAC;AAEF,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,oBAAoB,GAAG;IACxE,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,CAAC;CACrD,CA0BA;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CA6CtF"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { ApiError } from "../client.js";
|
|
3
|
+
export const positionTimelineParamsSchema = {
|
|
4
|
+
condition_id: z.string().trim().min(1)
|
|
5
|
+
.describe("Market condition ID"),
|
|
6
|
+
address: z.string().trim().min(1).max(100).optional()
|
|
7
|
+
.describe("Trader identity: 0x... wallet, username, trd_-prefixed id, or bare integer traders.id"),
|
|
8
|
+
trader_id: z.number().int().positive().optional()
|
|
9
|
+
.describe("Internal traders.id alias"),
|
|
10
|
+
limit: z.number().int().min(1).max(100).default(20)
|
|
11
|
+
.describe("Max events (1-100, default 20)"),
|
|
12
|
+
cursor: z.string().optional()
|
|
13
|
+
.describe("Pagination cursor from previous response"),
|
|
14
|
+
};
|
|
15
|
+
export function buildPositionTimelineRequest(args) {
|
|
16
|
+
const conditionId = args.condition_id.trim();
|
|
17
|
+
if (!conditionId) {
|
|
18
|
+
throw new Error("condition_id is required");
|
|
19
|
+
}
|
|
20
|
+
const address = args.address?.trim();
|
|
21
|
+
const hasAddress = Boolean(address);
|
|
22
|
+
const hasTraderId = args.trader_id !== undefined;
|
|
23
|
+
if (hasAddress === hasTraderId) {
|
|
24
|
+
throw new Error("Provide exactly one of address or trader_id");
|
|
25
|
+
}
|
|
26
|
+
const path = hasTraderId
|
|
27
|
+
? `/api/v1/traders/${args.trader_id}/position-timeline`
|
|
28
|
+
: `/api/v1/trader/${encodeURIComponent(address ?? "")}/position-timeline`;
|
|
29
|
+
return {
|
|
30
|
+
path,
|
|
31
|
+
params: {
|
|
32
|
+
condition_id: conditionId,
|
|
33
|
+
limit: args.limit,
|
|
34
|
+
cursor: args.cursor,
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
export function registerGetPositionTimeline(server, client) {
|
|
39
|
+
server.registerTool("get_position_timeline", {
|
|
40
|
+
title: "Get Position Timeline",
|
|
41
|
+
description: `Get stored Polymarket fills available for one tracked trader in one market, newest first, with server-computed running_amount and running_avg_price. Only HOT and WARM tier traders are tracked.
|
|
42
|
+
|
|
43
|
+
Args:
|
|
44
|
+
- condition_id (string, required): Market condition ID
|
|
45
|
+
- address (string, optional): Trader identity: 0x... wallet, username, trd_-prefixed id, or bare integer traders.id
|
|
46
|
+
- trader_id (number, optional): Internal traders.id alias; provide exactly one of address or trader_id
|
|
47
|
+
- limit (number, 1-100, default 20): Max events per page
|
|
48
|
+
- cursor (string, optional): Pagination cursor from previous response
|
|
49
|
+
|
|
50
|
+
Returns: List of position timeline events with pagination metadata.`,
|
|
51
|
+
inputSchema: positionTimelineParamsSchema,
|
|
52
|
+
annotations: {
|
|
53
|
+
readOnlyHint: true,
|
|
54
|
+
destructiveHint: false,
|
|
55
|
+
idempotentHint: true,
|
|
56
|
+
openWorldHint: false,
|
|
57
|
+
},
|
|
58
|
+
}, async (args) => {
|
|
59
|
+
try {
|
|
60
|
+
const request = buildPositionTimelineRequest(args);
|
|
61
|
+
const response = await client.request(request.path, request.params);
|
|
62
|
+
const result = {
|
|
63
|
+
data: response.data,
|
|
64
|
+
has_more: response.has_more,
|
|
65
|
+
next_cursor: response.next_cursor,
|
|
66
|
+
};
|
|
67
|
+
return {
|
|
68
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
return {
|
|
73
|
+
isError: true,
|
|
74
|
+
content: [{ type: "text", text: error instanceof ApiError ? error.message : `Unexpected error: ${error}` }],
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=get-position-timeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-position-timeline.js","sourceRoot":"","sources":["../../src/tools/get-position-timeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { ApiClient } from "../client.js";
|
|
4
|
+
export declare const positionsParamsSchema: {
|
|
5
|
+
limit: z.ZodDefault<z.ZodNumber>;
|
|
6
|
+
cursor: z.ZodOptional<z.ZodString>;
|
|
7
|
+
min_size: z.ZodDefault<z.ZodNumber>;
|
|
8
|
+
category: z.ZodOptional<z.ZodString>;
|
|
9
|
+
min_grade: z.ZodOptional<z.ZodEnum<["S", "A", "B", "C", "D", "F"]>>;
|
|
10
|
+
side: z.ZodOptional<z.ZodEnum<["yes", "no"]>>;
|
|
11
|
+
};
|
|
12
|
+
export declare function buildPositionsParams(args: {
|
|
13
|
+
limit?: number;
|
|
14
|
+
cursor?: string;
|
|
15
|
+
min_size?: number;
|
|
16
|
+
category?: string;
|
|
17
|
+
min_grade?: "S" | "A" | "B" | "C" | "D" | "F";
|
|
18
|
+
side?: "yes" | "no";
|
|
19
|
+
}): Record<string, string | number | undefined>;
|
|
20
|
+
export declare function registerGetPositions(server: McpServer, client: ApiClient): void;
|
|
21
|
+
//# sourceMappingURL=get-positions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-positions.d.ts","sourceRoot":"","sources":["../../src/tools/get-positions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAY,MAAM,cAAc,CAAC;AAEnD,eAAO,MAAM,qBAAqB;;;;;;;CAajC,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC9C,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,CAS9C;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAgD/E"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { ApiError } from "../client.js";
|
|
3
|
+
export const positionsParamsSchema = {
|
|
4
|
+
limit: z.number().int().min(1).max(100).default(20)
|
|
5
|
+
.describe("Max results (1-100, default 20)"),
|
|
6
|
+
cursor: z.string().optional()
|
|
7
|
+
.describe("Pagination cursor from previous response"),
|
|
8
|
+
min_size: z.number().min(0).default(100)
|
|
9
|
+
.describe("Minimum current position value in USD"),
|
|
10
|
+
category: z.string().optional()
|
|
11
|
+
.describe("Filter by provider-backed market category"),
|
|
12
|
+
min_grade: z.enum(["S", "A", "B", "C", "D", "F"]).optional()
|
|
13
|
+
.describe("Minimum trader grade"),
|
|
14
|
+
side: z.enum(["yes", "no"]).optional()
|
|
15
|
+
.describe("Filter by binary outcome side"),
|
|
16
|
+
};
|
|
17
|
+
export function buildPositionsParams(args) {
|
|
18
|
+
return {
|
|
19
|
+
limit: args.limit,
|
|
20
|
+
cursor: args.cursor,
|
|
21
|
+
min_size: args.min_size,
|
|
22
|
+
category: args.category,
|
|
23
|
+
min_grade: args.min_grade,
|
|
24
|
+
side: args.side,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export function registerGetPositions(server, client) {
|
|
28
|
+
server.registerTool("get_positions", {
|
|
29
|
+
title: "List Current Positions",
|
|
30
|
+
description: `List current prediction-market positions from the public positions-board feed. Returns trader, market, value, side, share, P&L, and freshness context. Cursor-paginated by current value descending.
|
|
31
|
+
|
|
32
|
+
Args:
|
|
33
|
+
- limit (number, 1-100, default 20): Max results per page
|
|
34
|
+
- cursor (string, optional): Pagination cursor from previous response
|
|
35
|
+
- min_size (number, default 100): Minimum current value in USD
|
|
36
|
+
- category (string, optional): Filter by provider-backed market category
|
|
37
|
+
- min_grade (string, optional): Minimum trader grade (S, A, B, C, D, F)
|
|
38
|
+
- side (string, optional): Filter by binary side: "yes" or "no"
|
|
39
|
+
|
|
40
|
+
Returns: List of current positions with pagination metadata.`,
|
|
41
|
+
inputSchema: positionsParamsSchema,
|
|
42
|
+
annotations: {
|
|
43
|
+
readOnlyHint: true,
|
|
44
|
+
destructiveHint: false,
|
|
45
|
+
idempotentHint: true,
|
|
46
|
+
openWorldHint: false,
|
|
47
|
+
},
|
|
48
|
+
}, async (args) => {
|
|
49
|
+
try {
|
|
50
|
+
const response = await client.request("/api/v1/positions", buildPositionsParams(args));
|
|
51
|
+
const result = {
|
|
52
|
+
data: response.data,
|
|
53
|
+
has_more: response.has_more,
|
|
54
|
+
next_cursor: response.next_cursor,
|
|
55
|
+
};
|
|
56
|
+
return {
|
|
57
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
return {
|
|
62
|
+
isError: true,
|
|
63
|
+
content: [{ type: "text", text: error instanceof ApiError ? error.message : `Unexpected error: ${error}` }],
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=get-positions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-positions.js","sourceRoot":"","sources":["../../src/tools/get-positions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAa,QAAQ,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,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,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;SACrC,QAAQ,CAAC,uCAAuC,CAAC;IACpD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC5B,QAAQ,CAAC,2CAA2C,CAAC;IACxD,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE;SACzD,QAAQ,CAAC,sBAAsB,CAAC;IACnC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE;SACnC,QAAQ,CAAC,+BAA+B,CAAC;CAC7C,CAAC;AAEF,MAAM,UAAU,oBAAoB,CAAC,IAOpC;IACC,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,IAAI,EAAE,IAAI,CAAC,IAAI;KAChB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAiB,EAAE,MAAiB;IACvE,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,KAAK,EAAE,wBAAwB;QAC/B,WAAW,EAAE;;;;;;;;;;6DAU0C;QACvD,WAAW,EAAE,qBAAqB;QAClC,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,EAAE;QACb,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CACnC,mBAAmB,EACnB,oBAAoB,CAAC,IAAI,CAAC,CAC3B,CAAC;YAEF,MAAM,MAAM,GAAG;gBACb,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,WAAW,EAAE,QAAQ,CAAC,WAAW;aAClC,CAAC;YAEF,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;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,YAAY,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,KAAK,EAAE,EAAE,CAAC;aACrH,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { ApiClient } from "../client.js";
|
|
4
|
+
export declare const traderPnlLookupSchema: z.ZodString;
|
|
5
|
+
export declare function registerGetTraderPnl(server: McpServer, client: ApiClient): void;
|
|
6
|
+
//# sourceMappingURL=get-trader-pnl.d.ts.map
|
|
@@ -0,0 +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,EAAY,MAAM,cAAc,CAAC;AAEnD,eAAO,MAAM,qBAAqB,aAAoC,CAAC;AAEvE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAwC/E"}
|