@ironflowsh/mcp 0.9.0 → 0.11.1

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 CHANGED
@@ -1,37 +1,27 @@
1
1
  # @ironflowsh/mcp
2
2
 
3
- [![smithery badge](https://smithery.ai/badge/ironflow/hyperliquid)](https://smithery.ai/servers/ironflow/hyperliquid)
3
+ [![Smithery](https://img.shields.io/badge/Smithery-ironflow%2Fhyperliquid-FF5601)](https://smithery.ai/servers/ironflow/hyperliquid)
4
4
 
5
5
  MCP server for [Ironflow](https://ironflow.sh): read-only Hyperliquid market data and wallet analytics for Claude, Cursor and any MCP client. It covers native perps, HIP-3 builder markets, HIP-4 outcome markets and spot. 36 tools, all read-only, including `run_query` for read-only SQL over every Hyperliquid fill, wallet, funding and liquidation table.
6
6
 
7
- No API key needed to start: keyless calls get 10 requests per minute and 24 hours of history. A free key from [ironflow.sh/key](https://ironflow.sh/key) raises that to 60 requests per minute and 30 days.
7
+ No API key needed to start: keyless calls get 10 requests per minute, 500 per day and 24 hours of history. A free key from [ironflow.sh/key](https://ironflow.sh/key) raises that to 60 requests per minute and 30 days.
8
8
 
9
- ## Example questions
9
+ ## Install
10
10
 
11
- > "What were the largest Hyperliquid liquidations in the last 24 hours?"
11
+ The hosted server needs no install and no key: `https://mcp.ironflow.sh/mcp` (Streamable HTTP).
12
12
 
13
- > "Show funding rates for the HIP-3 markets right now."
13
+ [![Add to Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/install-mcp?name=ironflow&config=eyJ1cmwiOiJodHRwczovL21jcC5pcm9uZmxvdy5zaC9tY3AifQ%3D%3D)
14
+ [![Install in VS Code](https://img.shields.io/badge/VS_Code-Install_Ironflow-0098FF?logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect?url=vscode%3Amcp%2Finstall%3F%257B%2522name%2522%253A%2522ironflow%2522%252C%2522type%2522%253A%2522http%2522%252C%2522url%2522%253A%2522https%253A%252F%252Fmcp.ironflow.sh%252Fmcp%2522%257D)
14
15
 
15
- > "List the HIP-4 outcome markets that are live."
16
-
17
- > "Summarize this wallet's last 30 days: PnL, fees, maker share, funding paid."
18
-
19
- ## Hosted server (no install)
20
-
21
- Connect by URL: `https://mcp.ironflow.sh/mcp` (Streamable HTTP).
16
+ **Claude Code**
22
17
 
23
18
  ```bash
24
- # Claude Code
25
19
  claude mcp add --transport http ironflow https://mcp.ironflow.sh/mcp
26
-
27
- # with a free key
28
- claude mcp add --transport http ironflow https://mcp.ironflow.sh/mcp \
29
- --header "Authorization: Bearer if_your_api_key"
30
20
  ```
31
21
 
32
- Claude desktop and claude.ai: Settings → Connectors → Add custom connector, paste the URL.
22
+ **Claude (claude.ai and Claude Desktop)**: open Customize → Connectors, click Add custom connector, enter the name `Ironflow` and the URL `https://mcp.ironflow.sh/mcp`, then click Add. On Team and Enterprise plans an Owner adds it under Organization settings → Connectors → Add → Custom, and members then click Connect.
33
23
 
34
- Cursor (`~/.cursor/mcp.json` or a project's `.cursor/mcp.json`):
24
+ **Cursor**: the button above, or add this to `~/.cursor/mcp.json` (or a project's `.cursor/mcp.json`):
35
25
 
36
26
  ```json
37
27
  {
@@ -41,7 +31,24 @@ Cursor (`~/.cursor/mcp.json` or a project's `.cursor/mcp.json`):
41
31
  }
42
32
  ```
43
33
 
44
- Clients that cannot send headers can pass the key as `?key=if_your_api_key` on the URL.
34
+ **VS Code**: the button above, or
35
+
36
+ ```bash
37
+ code --add-mcp '{"name":"ironflow","type":"http","url":"https://mcp.ironflow.sh/mcp"}'
38
+ ```
39
+
40
+ **Local server (stdio)**: `npx -y @ironflowsh/mcp`, see [Local server](#local-server).
41
+
42
+ ### With a free key
43
+
44
+ Send it as `Authorization: Bearer if_your_api_key`, or as `?key=if_your_api_key` on the URL for clients that cannot set headers.
45
+
46
+ ```bash
47
+ claude mcp add --transport http ironflow https://mcp.ironflow.sh/mcp \
48
+ --header "Authorization: Bearer if_your_api_key"
49
+ ```
50
+
51
+ In Cursor, add `"headers": { "Authorization": "Bearer if_your_api_key" }` next to `url`.
45
52
 
46
53
  ## Local server
47
54
 
@@ -73,7 +80,7 @@ To host the HTTP server yourself: `npx -y -p @ironflowsh/mcp ironflow-mcp-http`
73
80
 
74
81
  **Market data:** `get_price`, `get_recent_trades`, `get_candles`, `get_funding_rates`, `get_open_interest`, `get_liquidations`, `get_liquidation_summary`, `get_fills`, `get_mark_prices`, `get_vault_operations`, `list_markets`, `get_markets_snapshot`
75
82
 
76
- **Market analytics:** `get_funding_stats`, `get_pnl_leaderboard`, `get_market_top_wallets`, `get_wallet_labels`, `get_liquidation_levels` and `get_vault_leaderboard` (these two need a Builder or Enterprise key)
83
+ **Market analytics:** `get_funding_stats`, `get_pnl_leaderboard`, `get_market_top_wallets`, `get_wallet_labels`, `get_vault_leaderboard` and `get_liquidation_levels` (needs a Builder or Enterprise key)
77
84
 
78
85
  **Signals:** `get_top_traders`, `get_market_leaders`, `get_early_movers`, `get_trader_profile`
79
86
 
@@ -83,7 +90,7 @@ To host the HTTP server yourself: `npx -y -p @ironflowsh/mcp ironflow-mcp-http`
83
90
 
84
91
  **Status:** `get_status`, `get_status_metrics`, `get_status_history`
85
92
 
86
- Fill history covers a rolling 12 months. There is no order book, order status or streaming tool.
93
+ Markets can be given as display symbols (`BTC-PERP`, `xyz:NVDA-PERP`, `HYPE/USDC`) or Hyperliquid names (`BTC`, `@107`, `xyz:NVDA`), and times as Unix ms, Unix seconds or ISO 8601. When the API reads a name, or serves a window that starts later than asked because of the key's history limit, the result starts with a `notice` saying so. Fill history covers a rolling 12 months. There is no order book, order status or streaming tool.
87
94
 
88
95
  ## Configuration
89
96
 
@@ -92,6 +99,11 @@ Fill history covers a rolling 12 months. There is no order book, order status or
92
99
  | `IRONFLOW_API_KEY` | optional; free key at [ironflow.sh/key](https://ironflow.sh/key) |
93
100
  | `IRONFLOW_API_URL` | `https://api.ironflow.sh` |
94
101
  | `PORT` (HTTP server) | `8080` |
102
+ | `MCP_LOG_SALT` (HTTP server) | random per process; keys the caller hash in the access log |
103
+
104
+ ## Usage data
105
+
106
+ Each API call carries two headers so we can see which apps and tools people use: `X-Ironflow-Client` (the MCP client's name and version, e.g. `claude-code/2.1.0`) and `X-Ironflow-Tool` (the tool name). The hosted server logs each request's method, tool arguments, client name, status, whether the tool returned an error, the API status and error code behind it, and a salted hash of the caller's IP. It never logs IPs or API keys.
95
107
 
96
108
  ## Links
97
109
 
package/build/api.d.ts CHANGED
@@ -1,13 +1,39 @@
1
+ export interface CallContext {
2
+ client?: string;
3
+ tool?: string;
4
+ }
5
+ export interface MarketsQuery {
6
+ source?: string;
7
+ marketClass?: string;
8
+ issuer?: string;
9
+ q?: string;
10
+ includeInactive?: boolean;
11
+ limit?: number;
12
+ cursor?: string;
13
+ }
14
+ export interface UpstreamCall {
15
+ status: number;
16
+ code?: string;
17
+ }
1
18
  export declare class IronflowAPI {
2
19
  private baseUrl;
3
20
  private apiKey?;
4
21
  private source;
5
22
  private userAgent;
6
23
  private forwardedFor?;
24
+ private context;
25
+ private calls;
26
+ private notices;
7
27
  constructor(baseUrl?: string, apiKey?: string, source?: string, version?: string, forwardedFor?: string);
8
28
  private headers;
29
+ hasKey(): boolean;
30
+ upstreamCalls(): UpstreamCall[];
31
+ private record;
32
+ withContext(context: CallContext): IronflowAPI;
33
+ notice(): string;
34
+ private noteHeaders;
9
35
  private apiError;
10
- get(path: string, params?: Record<string, string>): Promise<unknown>;
36
+ get(path: string, params?: Record<string, string>, keepEmpty?: readonly string[]): Promise<unknown>;
11
37
  post(path: string, body: unknown): Promise<unknown>;
12
38
  getPrice(market: string): Promise<string>;
13
39
  getRecentTrades(market: string, limit?: string): Promise<unknown>;
@@ -22,20 +48,20 @@ export declare class IronflowAPI {
22
48
  getVaultLeaderboard(limit?: string): Promise<unknown>;
23
49
  getFundingStats(market: string, interval?: string, limit?: string): Promise<unknown>;
24
50
  getUserState(address: string): Promise<unknown>;
25
- getUserFunding(address: string, market?: string, from?: number, to?: number, bucket?: string): Promise<unknown>;
26
- getUserMakerTaker(address: string, market?: string, from?: number, to?: number): Promise<unknown>;
27
- getUserLedger(address: string, from?: number, to?: number, eventTypes?: string, limit?: number): Promise<unknown>;
28
- getPnLLeaderboard(from?: number, to?: number, limit?: number, sortBy?: string): Promise<unknown>;
29
- getMarketTopWallets(market: string, from?: number, to?: number, limit?: number, sortBy?: string): Promise<unknown>;
51
+ getUserFunding(address: string, market?: string, from?: string, to?: string, bucket?: string): Promise<unknown>;
52
+ getUserMakerTaker(address: string, market?: string, from?: string, to?: string): Promise<unknown>;
53
+ getUserLedger(address: string, from?: string, to?: string, eventTypes?: string, limit?: number): Promise<unknown>;
54
+ getPnLLeaderboard(from?: string, to?: string, limit?: number, sortBy?: string): Promise<unknown>;
55
+ getMarketTopWallets(market: string, from?: string, to?: string, limit?: number, sortBy?: string): Promise<unknown>;
30
56
  getMarketsSnapshot(marketClass?: string, issuer?: string): Promise<unknown>;
31
- getUserSummary(address: string, from?: number, to?: number): Promise<unknown>;
32
- getUserPnLSeries(address: string, from?: number, to?: number, bucketMs?: number): Promise<unknown>;
57
+ getUserSummary(address: string, from?: string, to?: string): Promise<unknown>;
58
+ getUserPnLSeries(address: string, from?: string, to?: string, bucketMs?: number): Promise<unknown>;
33
59
  getWalletLabels(whaleTopN?: number, smartTopN?: number): Promise<unknown>;
34
60
  listCohorts(): Promise<unknown>;
35
61
  getCohortAddresses(name: string): Promise<unknown>;
36
62
  getStatus(): Promise<unknown>;
37
63
  getStatusMetrics(): Promise<unknown>;
38
64
  getStatusHistory(period?: string): Promise<unknown>;
39
- listMarkets(source?: string, market_class?: string, issuer?: string | undefined): Promise<unknown>;
65
+ listMarkets(query?: MarketsQuery): Promise<unknown>;
40
66
  }
41
67
  //# sourceMappingURL=api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAKA,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,YAAY,CAAC,CAAS;gBAK5B,OAAO,SAAmB,EAC1B,MAAM,CAAC,EAAE,MAAM,EACf,MAAM,SAAiB,EACvB,OAAO,SAAY,EACnB,YAAY,CAAC,EAAE,MAAM;IASvB,OAAO,CAAC,OAAO;YAcD,QAAQ;IAiBhB,GAAG,CACP,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAClC,OAAO,CAAC,OAAO,CAAC;IAyBb,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAenD,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAWzC,eAAe,CACnB,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,MAAa,GACnB,OAAO,CAAC,OAAO,CAAC;IAIb,UAAU,CACd,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,MAAa,EACvB,KAAK,GAAE,MAAa,GACnB,OAAO,CAAC,OAAO,CAAC;IAIb,eAAe,CACnB,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,MAAa,GACnB,OAAO,CAAC,OAAO,CAAC;IAIb,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIjD,eAAe,CACnB,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,MAAa,GACnB,OAAO,CAAC,OAAO,CAAC;IAIb,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,GAAE,MAAW,EAAE,KAAK,GAAE,MAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAMtF,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI/C,kBAAkB,CAAC,KAAK,GAAE,MAAW,EAAE,OAAO,GAAE,MAAW,EAAE,KAAK,GAAE,MAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IASpG,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,GAAE,MAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAInF,mBAAmB,CAAC,KAAK,GAAE,MAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAI3D,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAa,EAAE,KAAK,GAAE,MAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAM/F,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI/C,cAAc,CAClB,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,MAAW,EACnB,IAAI,GAAE,MAAU,EAChB,EAAE,GAAE,MAAU,EACd,MAAM,GAAE,MAAa,GACpB,OAAO,CAAC,OAAO,CAAC;IAQb,iBAAiB,CACrB,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,MAAW,EACnB,IAAI,GAAE,MAAU,EAChB,EAAE,GAAE,MAAU,GACb,OAAO,CAAC,OAAO,CAAC;IAQb,aAAa,CACjB,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,MAAU,EAChB,EAAE,GAAE,MAAU,EACd,UAAU,GAAE,MAAW,EACvB,KAAK,GAAE,MAAa,GACnB,OAAO,CAAC,OAAO,CAAC;IAUb,iBAAiB,CACrB,IAAI,GAAE,MAAU,EAChB,EAAE,GAAE,MAAU,EACd,KAAK,GAAE,MAAW,EAClB,MAAM,GAAE,MAAuB,GAC9B,OAAO,CAAC,OAAO,CAAC;IAUb,mBAAmB,CACvB,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,MAAU,EAChB,EAAE,GAAE,MAAU,EACd,KAAK,GAAE,MAAW,EAClB,MAAM,GAAE,MAAiB,GACxB,OAAO,CAAC,OAAO,CAAC;IAWb,kBAAkB,CACtB,WAAW,GAAE,MAAW,EACxB,MAAM,GAAE,MAAW,GAClB,OAAO,CAAC,OAAO,CAAC;IAWb,cAAc,CAClB,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,MAAU,EAChB,EAAE,GAAE,MAAU,GACb,OAAO,CAAC,OAAO,CAAC;IAOb,gBAAgB,CACpB,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,MAAU,EAChB,EAAE,GAAE,MAAU,EACd,QAAQ,GAAE,MAAU,GACnB,OAAO,CAAC,OAAO,CAAC;IAQb,eAAe,CACnB,SAAS,GAAE,MAAY,EACvB,SAAS,GAAE,MAAY,GACtB,OAAO,CAAC,OAAO,CAAC;IASb,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAI/B,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAMlD,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAI7B,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC;IAIpC,gBAAgB,CAAC,MAAM,GAAE,MAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAMvD,WAAW,CACf,MAAM,GAAE,MAAW,EACnB,YAAY,GAAE,MAAW,EACzB,MAAM,GAAE,MAAM,GAAG,SAAqB,GACrC,OAAO,CAAC,OAAO,CAAC;CAQpB"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
package/build/api.js CHANGED
@@ -1,12 +1,24 @@
1
1
  // Ironflow REST API client. Uses native fetch — no external HTTP dependencies.
2
+ import { formatNotices, readNotice } from "./notice.js";
3
+ import { sanitizeClientApp } from "./usage.js";
2
4
  const DEFAULT_BASE_URL = "https://api.ironflow.sh";
3
5
  const DEFAULT_SOURCE = "hyperliquid";
6
+ const TOOL_PATTERN = /^[a-z0-9_]{1,48}$/;
7
+ const ERROR_CODE_PATTERN = /^[A-Z0-9_]{1,48}$/;
8
+ const MAX_NOTICES = 20;
4
9
  export class IronflowAPI {
5
10
  baseUrl;
6
11
  apiKey;
7
12
  source;
8
13
  userAgent;
9
14
  forwardedFor;
15
+ context = {};
16
+ // Shared by every withContext copy, so the hosted server can read what
17
+ // the tool calls of one request did upstream.
18
+ calls = [];
19
+ // Notice headers of this copy's responses: one withContext copy per tool
20
+ // call, so a tool result carries only its own notices.
21
+ notices = [];
10
22
  // forwardedFor is set only by the hosted HTTP server: it passes the MCP
11
23
  // client's IP on so keyless rate limits apply per caller, not per server.
12
24
  constructor(baseUrl = DEFAULT_BASE_URL, apiKey, source = DEFAULT_SOURCE, version = "unknown", forwardedFor) {
@@ -27,37 +39,88 @@ export class IronflowAPI {
27
39
  if (this.forwardedFor) {
28
40
  h["X-Forwarded-For"] = this.forwardedFor;
29
41
  }
42
+ const client = sanitizeClientApp(this.context.client);
43
+ if (client)
44
+ h["X-Ironflow-Client"] = client;
45
+ if (this.context.tool && TOOL_PATTERN.test(this.context.tool)) {
46
+ h["X-Ironflow-Tool"] = this.context.tool;
47
+ }
30
48
  return h;
31
49
  }
50
+ // hasKey reports whether requests carry an API key.
51
+ hasKey() {
52
+ return Boolean(this.apiKey);
53
+ }
54
+ // upstreamCalls returns the status (and error code) of every API request
55
+ // made so far through this client or its withContext copies.
56
+ upstreamCalls() {
57
+ return [...this.calls];
58
+ }
59
+ record(status, code) {
60
+ this.calls.push(code && ERROR_CODE_PATTERN.test(code) ? { status, code } : { status });
61
+ }
62
+ // withContext returns a copy of this client that tags its requests with
63
+ // the given caller context. A copy, so concurrent tool calls on a shared
64
+ // stdio client never see each other's tool name.
65
+ withContext(context) {
66
+ const copy = Object.create(IronflowAPI.prototype);
67
+ Object.assign(copy, this);
68
+ copy.context = { ...context };
69
+ copy.notices = [];
70
+ return copy;
71
+ }
72
+ // notice returns what the API said beside the data of this client's
73
+ // responses (a resolved market name, history cut short by the tier, a
74
+ // next step), as one line for the agent; "" when it said nothing.
75
+ notice() {
76
+ return formatNotices(this.notices);
77
+ }
78
+ noteHeaders(res, requestedMarket) {
79
+ const n = readNotice(res.headers, requestedMarket);
80
+ if (n && this.notices.length < MAX_NOTICES)
81
+ this.notices.push(n);
82
+ }
83
+ // apiError keeps the API's code, message and detail: the message names the
84
+ // next step (a free key, a narrower window), which the agent passes on.
32
85
  async apiError(res) {
33
86
  const text = await res.text();
87
+ const retry = Number(res.headers.get("retry-after"));
88
+ const retryNote = Number.isFinite(retry) && retry > 0 ? ` Retry after ${retry} s.` : "";
34
89
  try {
35
90
  const parsed = JSON.parse(text);
36
91
  const code = parsed.error?.code;
37
92
  const message = parsed.error?.message;
93
+ const detail = parsed.error?.detail ? ` (${parsed.error.detail})` : "";
94
+ this.record(res.status, code);
38
95
  if (code) {
39
- return new Error(`Ironflow API error ${res.status} ${code}: ${message ?? text}`);
96
+ return new Error(`Ironflow API error ${res.status} ${code}: ${message ?? text}${detail}${retryNote}`);
40
97
  }
41
98
  }
42
99
  catch {
43
100
  // Non-JSON response — fall through to raw text.
101
+ this.record(res.status);
44
102
  }
45
- return new Error(`Ironflow API error ${res.status}: ${text}`);
103
+ return new Error(`Ironflow API error ${res.status}: ${text}${retryNote}`);
46
104
  }
47
- async get(path, params = {}) {
105
+ // get sends a GET with the given query. Empty values are left out, except
106
+ // keys named in keepEmpty, where an empty value means something (issuer=
107
+ // asks /v1/markets for native markets only).
108
+ async get(path, params = {}, keepEmpty = []) {
48
109
  // Always include source.
49
110
  if (!params.source) {
50
111
  params.source = this.source;
51
112
  }
52
113
  const url = new URL(path, this.baseUrl);
53
114
  for (const [k, v] of Object.entries(params)) {
54
- if (v)
115
+ if (v || (v === "" && keepEmpty.includes(k)))
55
116
  url.searchParams.set(k, v);
56
117
  }
57
118
  const res = await fetch(url.toString(), { headers: this.headers() });
119
+ this.noteHeaders(res, params.market || params.coin);
58
120
  if (!res.ok) {
59
121
  throw await this.apiError(res);
60
122
  }
123
+ this.record(res.status);
61
124
  const ctype = res.headers.get("content-type") ?? "";
62
125
  if (ctype.includes("application/json")) {
63
126
  return res.json();
@@ -72,9 +135,11 @@ export class IronflowAPI {
72
135
  headers: this.headers(),
73
136
  body: JSON.stringify(body),
74
137
  });
138
+ this.noteHeaders(res);
75
139
  if (!res.ok) {
76
140
  throw await this.apiError(res);
77
141
  }
142
+ this.record(res.status);
78
143
  return res.json();
79
144
  }
80
145
  // ─── Convenience methods ──────────────────────────────────────────────
@@ -132,58 +197,43 @@ export class IronflowAPI {
132
197
  async getUserState(address) {
133
198
  return this.get("/v1/analytics/user-state", { address });
134
199
  }
135
- async getUserFunding(address, market = "", from = 0, to = 0, bucket = "1d") {
200
+ async getUserFunding(address, market = "", from = "", to = "", bucket = "1d") {
136
201
  const params = { address, bucket };
137
202
  if (market)
138
203
  params.market = market;
139
- if (from > 0)
140
- params.from = String(from);
141
- if (to > 0)
142
- params.to = String(to);
204
+ setWindow(params, from, to);
143
205
  return this.get("/v1/analytics/user-funding", params);
144
206
  }
145
- async getUserMakerTaker(address, market = "", from = 0, to = 0) {
207
+ async getUserMakerTaker(address, market = "", from = "", to = "") {
146
208
  const params = { address };
147
209
  if (market)
148
210
  params.market = market;
149
- if (from > 0)
150
- params.from = String(from);
151
- if (to > 0)
152
- params.to = String(to);
211
+ setWindow(params, from, to);
153
212
  return this.get("/v1/analytics/user-maker-taker", params);
154
213
  }
155
- async getUserLedger(address, from = 0, to = 0, eventTypes = "", limit = 1000) {
214
+ async getUserLedger(address, from = "", to = "", eventTypes = "", limit = 1000) {
156
215
  const params = { address, limit: String(limit) };
157
- if (from > 0)
158
- params.from = String(from);
159
- if (to > 0)
160
- params.to = String(to);
216
+ setWindow(params, from, to);
161
217
  if (eventTypes)
162
218
  params.event_types = eventTypes;
163
219
  return this.get("/v1/analytics/user-ledger", params);
164
220
  }
165
221
  // ─── Cross-wallet ranking (v0.34+) ───────────────────────────────────
166
- async getPnLLeaderboard(from = 0, to = 0, limit = 50, sortBy = "realized_pnl") {
222
+ async getPnLLeaderboard(from = "", to = "", limit = 50, sortBy = "realized_pnl") {
167
223
  const params = {
168
224
  limit: String(limit),
169
225
  sort_by: sortBy,
170
226
  };
171
- if (from > 0)
172
- params.from = String(from);
173
- if (to > 0)
174
- params.to = String(to);
227
+ setWindow(params, from, to);
175
228
  return this.get("/v1/analytics/leaderboard-pnl", params);
176
229
  }
177
- async getMarketTopWallets(market, from = 0, to = 0, limit = 25, sortBy = "volume") {
230
+ async getMarketTopWallets(market, from = "", to = "", limit = 25, sortBy = "volume") {
178
231
  const params = {
179
232
  market,
180
233
  limit: String(limit),
181
234
  sort_by: sortBy,
182
235
  };
183
- if (from > 0)
184
- params.from = String(from);
185
- if (to > 0)
186
- params.to = String(to);
236
+ setWindow(params, from, to);
187
237
  return this.get("/v1/analytics/market-top-wallets", params);
188
238
  }
189
239
  async getMarketsSnapshot(marketClass = "", issuer = "") {
@@ -198,20 +248,14 @@ export class IronflowAPI {
198
248
  params.issuer = issuer;
199
249
  return this.get("/v1/markets/snapshot", params);
200
250
  }
201
- async getUserSummary(address, from = 0, to = 0) {
251
+ async getUserSummary(address, from = "", to = "") {
202
252
  const params = { address };
203
- if (from > 0)
204
- params.from = String(from);
205
- if (to > 0)
206
- params.to = String(to);
253
+ setWindow(params, from, to);
207
254
  return this.get("/v1/analytics/user-summary", params);
208
255
  }
209
- async getUserPnLSeries(address, from = 0, to = 0, bucketMs = 0) {
256
+ async getUserPnLSeries(address, from = "", to = "", bucketMs = 0) {
210
257
  const params = { address };
211
- if (from > 0)
212
- params.from = String(from);
213
- if (to > 0)
214
- params.to = String(to);
258
+ setWindow(params, from, to);
215
259
  if (bucketMs > 0)
216
260
  params.bucket_ms = String(bucketMs);
217
261
  return this.get("/v1/analytics/user-pnl-series", params);
@@ -242,16 +286,31 @@ export class IronflowAPI {
242
286
  params.period = period;
243
287
  return this.get("/v1/status/history", params);
244
288
  }
245
- async listMarkets(source = "", market_class = "", issuer = undefined) {
289
+ async listMarkets(query = {}) {
246
290
  const params = {};
247
- if (source)
248
- params.source = source;
249
- if (market_class)
250
- params.market_class = market_class;
251
- // issuer is tri-state: undefined = no filter, "" = native only, "flx" = flx only.
252
- if (issuer !== undefined)
253
- params.issuer = issuer;
254
- return this.get("/v1/markets", params);
291
+ if (query.source)
292
+ params.source = query.source;
293
+ if (query.marketClass)
294
+ params.market_class = query.marketClass;
295
+ if (query.issuer !== undefined)
296
+ params.issuer = query.issuer;
297
+ if (query.q)
298
+ params.q = query.q;
299
+ if (query.includeInactive)
300
+ params.include_inactive = "true";
301
+ if (query.limit)
302
+ params.limit = String(query.limit);
303
+ if (query.cursor)
304
+ params.cursor = query.cursor;
305
+ return this.get("/v1/markets", params, ["issuer"]);
255
306
  }
256
307
  }
308
+ // setWindow adds from and to when set. Both pass through as the caller gave
309
+ // them: the API reads Unix ms, Unix seconds and ISO 8601.
310
+ function setWindow(params, from, to) {
311
+ if (from)
312
+ params.from = from;
313
+ if (to)
314
+ params.to = to;
315
+ }
257
316
  //# sourceMappingURL=api.js.map
package/build/api.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
package/build/http.js CHANGED
@@ -15,11 +15,16 @@
15
15
  // FORWARD_CLIENT_IP "true" only behind a proxy that sets X-Forwarded-For
16
16
  // to the real client IP; the IP is passed to the API so
17
17
  // keyless limits apply per caller
18
+ // MCP_LOG_SALT keys the caller-IP hash in the access log; use the
19
+ // API's REQUEST_LOG_SALT so a caller hashes the same in
20
+ // both logs (random per process when unset)
21
+ import { randomBytes } from "node:crypto";
18
22
  import { createServer as createHttpServer } from "node:http";
19
23
  import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
20
24
  import { IronflowAPI } from "./api.js";
21
25
  import { clientIP, HttpError, readKey } from "./request.js";
22
26
  import { createServer, packageVersion } from "./server.js";
27
+ import { callerHash, clientFromInitialize, sanitizeClientApp, summarizeArgs, toolLogFields } from "./usage.js";
23
28
  const DEFAULT_PORT = 8080;
24
29
  const MAX_BODY_BYTES = 1024 * 1024;
25
30
  const MCP_PATH = "/mcp";
@@ -28,6 +33,7 @@ const port = Number(process.env.PORT) || DEFAULT_PORT;
28
33
  const apiUrl = process.env.IRONFLOW_API_URL || "https://api.ironflow.sh";
29
34
  const forwardClientIP = process.env.FORWARD_CLIENT_IP === "true";
30
35
  const version = packageVersion();
36
+ const logSalt = process.env.MCP_LOG_SALT || randomBytes(32).toString("hex");
31
37
  // setCors allows browser-based MCP clients (inspectors, web agents). No
32
38
  // cookies are involved, so a wildcard origin is safe.
33
39
  function setCors(res) {
@@ -61,8 +67,8 @@ async function readBody(req) {
61
67
  throw new HttpError(400, "Request body is not valid JSON");
62
68
  }
63
69
  }
64
- // describeRPC names what a request did for the access log, without keys,
65
- // IPs or arguments.
70
+ // describeRPC names what a request did for the access log, without keys or
71
+ // IPs. Tool arguments are logged separately (args).
66
72
  function describeRPC(body) {
67
73
  const msgs = Array.isArray(body) ? body : [body];
68
74
  return msgs
@@ -76,8 +82,14 @@ async function handleMCP(req, res, url) {
76
82
  const started = Date.now();
77
83
  const key = readKey(req, url);
78
84
  const body = await readBody(req);
79
- const api = new IronflowAPI(apiUrl, key, undefined, `${version}-hosted`, clientIP(req, forwardClientIP));
80
- const server = createServer(api, version);
85
+ const ip = clientIP(req, forwardClientIP);
86
+ const userAgent = sanitizeClientApp(req.headers["user-agent"]);
87
+ const api = new IronflowAPI(apiUrl, key, undefined, `${version}-hosted`, ip);
88
+ const outcomes = [];
89
+ const server = createServer(api, version, {
90
+ fallbackClient: userAgent,
91
+ onToolResult: (outcome) => outcomes.push(outcome),
92
+ });
81
93
  const transport = new StreamableHTTPServerTransport({
82
94
  sessionIdGenerator: undefined,
83
95
  enableJsonResponse: true,
@@ -85,7 +97,18 @@ async function handleMCP(req, res, url) {
85
97
  res.on("close", () => {
86
98
  void transport.close();
87
99
  void server.close();
88
- console.log(JSON.stringify({ msg: "mcp", rpc: describeRPC(body), keyed: Boolean(key), status: res.statusCode, ms: Date.now() - started }));
100
+ console.log(JSON.stringify({
101
+ msg: "mcp",
102
+ rpc: describeRPC(body),
103
+ keyed: Boolean(key),
104
+ status: res.statusCode,
105
+ ms: Date.now() - started,
106
+ client: clientFromInitialize(body) || undefined,
107
+ ua: userAgent || undefined,
108
+ caller: callerHash(ip, logSalt) || undefined,
109
+ args: summarizeArgs(body) || undefined,
110
+ ...toolLogFields(outcomes, api.upstreamCalls()),
111
+ }));
89
112
  });
90
113
  await server.connect(transport);
91
114
  await transport.handleRequest(req, res, body);
package/build/http.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
package/build/index.js CHANGED
@@ -4,8 +4,9 @@
4
4
  // Usage:
5
5
  // IRONFLOW_API_KEY=if_xxx npx -y @ironflowsh/mcp
6
6
  //
7
- // The key is optional: keyless calls get 10 requests per minute and 24 hours
8
- // of history; a free key from https://ironflow.sh/key gives 60 and 30 days.
7
+ // The key is optional: keyless calls get 10 requests per minute, 500 per day
8
+ // and 24 hours of history; a free key from https://ironflow.sh/key gives 60
9
+ // per minute and 30 days.
9
10
  // No install needed at all with the hosted server:
10
11
  // claude mcp add --transport http ironflow https://mcp.ironflow.sh/mcp
11
12
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
@@ -15,7 +16,7 @@ const apiUrl = process.env.IRONFLOW_API_URL || "https://api.ironflow.sh";
15
16
  const apiKey = process.env.IRONFLOW_API_KEY;
16
17
  if (!apiKey) {
17
18
  // stderr: stdout carries the MCP protocol.
18
- console.error("IRONFLOW_API_KEY is not set: running keyless (10 requests per minute, 24 hours of history). Free key for more: https://ironflow.sh/key");
19
+ console.error("IRONFLOW_API_KEY is not set: running keyless (10 requests per minute, 500 per day, 24 hours of history). Free key for more: https://ironflow.sh/key");
19
20
  }
20
21
  const version = packageVersion();
21
22
  const server = createServer(new IronflowAPI(apiUrl, apiKey, undefined, version), version);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,yEAAyE;AACzE,EAAE;AACF,SAAS;AACT,mDAAmD;AACnD,EAAE;AACF,6EAA6E;AAC7E,4EAA4E;AAC5E,mDAAmD;AACnD,yEAAyE;AAEzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE3D,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,yBAAyB,CAAC;AACzE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;AAE5C,IAAI,CAAC,MAAM,EAAE,CAAC;IACZ,2CAA2C;IAC3C,OAAO,CAAC,KAAK,CACX,wIAAwI,CACzI,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;AACjC,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;AAC1F,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,yEAAyE;AACzE,EAAE;AACF,SAAS;AACT,mDAAmD;AACnD,EAAE;AACF,6EAA6E;AAC7E,4EAA4E;AAC5E,0BAA0B;AAC1B,mDAAmD;AACnD,yEAAyE;AAEzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE3D,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,yBAAyB,CAAC;AACzE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;AAE5C,IAAI,CAAC,MAAM,EAAE,CAAC;IACZ,2CAA2C;IAC3C,OAAO,CAAC,KAAK,CACX,qJAAqJ,CACtJ,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;AACjC,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;AAC1F,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC"}