@ironflowsh/mcp 0.8.3 → 0.11.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/build/shape.d.ts CHANGED
@@ -1,16 +1,27 @@
1
1
  type Row = Record<string, unknown>;
2
2
  export declare const DEFAULT_MARKETS_LIMIT = 100;
3
+ export declare const MAX_MARKETS_LIMIT = 100;
3
4
  export declare const DEFAULT_FUNDING_ROWS = 200;
4
- export declare function shapeMarkets(resp: {
5
+ type MarketsPage = {
5
6
  data?: Row[];
6
- }, opts: {
7
+ pagination?: {
8
+ next_cursor?: string | null;
9
+ has_more?: boolean;
10
+ total?: number;
11
+ };
12
+ };
13
+ export declare function shapeMarkets(resp: MarketsPage, opts: {
7
14
  search?: string;
8
15
  limit?: number;
9
16
  }): {
10
- total_markets: number;
11
17
  matched: number;
12
18
  returned: number;
13
19
  data: Row[];
20
+ pagination: {
21
+ next_cursor: string | null;
22
+ has_more: boolean;
23
+ total: number | undefined;
24
+ };
14
25
  };
15
26
  export declare function shapeWalletLabels(resp: {
16
27
  counts?: unknown;
@@ -1 +1 @@
1
- {"version":3,"file":"shape.d.ts","sourceRoot":"","sources":["../src/shape.ts"],"names":[],"mappings":"AAKA,KAAK,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEnC,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAqBxC,wBAAgB,YAAY,CAAC,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;CAAE,EAAE,IAAI,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE;;;;;EAU7F;AAOD,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;CAAE,GAAG,GAAG,EAChE,IAAI,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE;;;;;;EAc/B;AAGD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;CAAE,GAAG,GAAG,EAAE,KAAK,SAAuB;;;;EAI1F"}
1
+ {"version":3,"file":"shape.d.ts","sourceRoot":"","sources":["../src/shape.ts"],"names":[],"mappings":"AAKA,KAAK,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEnC,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAIzC,eAAO,MAAM,iBAAiB,MAAM,CAAC;AACrC,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAmBxC,KAAK,WAAW,GAAG;IACjB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACb,UAAU,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAClF,CAAC;AAMF,wBAAgB,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE;;;;;;;;;EAoBxF;AAOD,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;CAAE,GAAG,GAAG,EAChE,IAAI,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE;;;;;;EAc/B;AAGD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;CAAE,GAAG,GAAG,EAAE,KAAK,SAAuB;;;;EAI1F"}
package/build/shape.js CHANGED
@@ -1,8 +1,12 @@
1
1
  // Reshaping for tools whose raw API responses are far larger than an MCP
2
- // client accepts in one result: the market registry (about 9M characters with
3
- // HIP-4 metadata), wallet labels (every vault address) and per-bucket wallet
2
+ // client accepts in one result: market registry pages (HIP-4 metadata blobs),
3
+ // wallet labels (every vault address) and per-bucket wallet
4
4
  // funding. Each keeps what an agent asks for and reports what it left out.
5
5
  export const DEFAULT_MARKETS_LIMIT = 100;
6
+ // A page of 100 shaped markets stays under the 40k-character result budget
7
+ // even with long HIP-4 names (about 330 characters a row at most). A larger
8
+ // page would be trimmed, and its next_cursor would then skip the trimmed rows.
9
+ export const MAX_MARKETS_LIMIT = 100;
6
10
  export const DEFAULT_FUNDING_ROWS = 200;
7
11
  const MARKET_FIELDS = [
8
12
  "market_id",
@@ -15,19 +19,31 @@ const MARKET_FIELDS = [
15
19
  "hl_coin",
16
20
  "max_leverage",
17
21
  "active_from_ms",
22
+ "active_to_ms",
18
23
  ];
19
24
  const pick = (row, keys) => Object.fromEntries(keys.filter((k) => k in row).map((k) => [k, row[k]]));
20
- // shapeMarkets filters the registry by a case-insensitive search over the
21
- // symbol, base asset and Hyperliquid coin, drops the per-market metadata blob
22
- // and keeps the first `limit` rows.
25
+ // shapeMarkets drops the per-market metadata blob (HIP-4 outcomes carry a
26
+ // large one) from a page of /v1/markets. The API searches and pages; an API
27
+ // that predates q and limit returns the whole registry without pagination,
28
+ // and then the search and limit are applied here.
23
29
  export function shapeMarkets(resp, opts) {
24
- const rows = resp.data ?? [];
25
- const q = opts.search?.trim().toLowerCase();
26
- const matched = q
27
- ? rows.filter((r) => [r.display_symbol, r.base_asset, r.hl_coin].some((v) => String(v ?? "").toLowerCase().includes(q)))
28
- : rows;
29
- const data = matched.slice(0, opts.limit ?? DEFAULT_MARKETS_LIMIT).map((r) => pick(r, MARKET_FIELDS));
30
- return { total_markets: rows.length, matched: matched.length, returned: data.length, data };
30
+ const limit = opts.limit ?? DEFAULT_MARKETS_LIMIT;
31
+ let rows = resp.data ?? [];
32
+ let pagination = resp.pagination;
33
+ if (!pagination) {
34
+ const q = opts.search?.trim().toLowerCase();
35
+ if (q) {
36
+ rows = rows.filter((r) => [r.display_symbol, r.base_asset, r.hl_coin, r.issuer].some((v) => String(v ?? "").toLowerCase().includes(q)));
37
+ }
38
+ pagination = { next_cursor: null, has_more: rows.length > limit, total: rows.length };
39
+ }
40
+ const data = rows.slice(0, limit).map((r) => pick(r, MARKET_FIELDS));
41
+ return {
42
+ matched: pagination.total ?? data.length,
43
+ returned: data.length,
44
+ data,
45
+ pagination: { next_cursor: pagination.next_cursor ?? null, has_more: Boolean(pagination.has_more), total: pagination.total },
46
+ };
31
47
  }
32
48
  const LISTED_KINDS = new Set(["whale", "smart_money"]);
33
49
  // shapeWalletLabels returns labels for the requested addresses, or, without
@@ -1 +1 @@
1
- {"version":3,"file":"shape.js","sourceRoot":"","sources":["../src/shape.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shape.js","sourceRoot":"","sources":["../src/shape.ts"],"names":[],"mappings":"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"}
package/build/tools.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { IronflowAPI } from "./api.js";
2
2
  export interface ToolDef {
3
3
  name: string;
4
+ title: string;
4
5
  description: string;
5
6
  inputSchema: {
6
7
  type: "object";
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAMvC,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC,CAAC;QACnF,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;IACF,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAC/E;AAiCD,eAAO,MAAM,KAAK,EAAE,OAAO,EAgsB1B,CAAC"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAkBvC,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC,CAAC;QACnF,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;IACF,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAC/E;AAkED,eAAO,MAAM,KAAK,EAAE,OAAO,EAg0B1B,CAAC"}