@0xinsider/mcp 1.0.0 → 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.
Files changed (54) hide show
  1. package/README.md +67 -7
  2. package/dist/cli-lib.d.ts +15 -0
  3. package/dist/cli-lib.d.ts.map +1 -1
  4. package/dist/cli-lib.js +231 -53
  5. package/dist/cli-lib.js.map +1 -1
  6. package/dist/client.d.ts +5 -0
  7. package/dist/client.d.ts.map +1 -1
  8. package/dist/client.js +30 -4
  9. package/dist/client.js.map +1 -1
  10. package/dist/constants.d.ts +2 -1
  11. package/dist/constants.d.ts.map +1 -1
  12. package/dist/constants.js +25 -1
  13. package/dist/constants.js.map +1 -1
  14. package/dist/prompts/index.js +3 -3
  15. package/dist/prompts/index.js.map +1 -1
  16. package/dist/server.d.ts.map +1 -1
  17. package/dist/server.js +32 -2
  18. package/dist/server.js.map +1 -1
  19. package/dist/tools/explore-markets.d.ts +36 -0
  20. package/dist/tools/explore-markets.d.ts.map +1 -0
  21. package/dist/tools/explore-markets.js +77 -0
  22. package/dist/tools/explore-markets.js.map +1 -0
  23. package/dist/tools/get-insider-radar.js +1 -1
  24. package/dist/tools/get-large-positions.d.ts +21 -0
  25. package/dist/tools/get-large-positions.d.ts.map +1 -0
  26. package/dist/tools/get-large-positions.js +68 -0
  27. package/dist/tools/get-large-positions.js.map +1 -0
  28. package/dist/tools/get-position-timeline.d.ts +24 -0
  29. package/dist/tools/get-position-timeline.d.ts.map +1 -0
  30. package/dist/tools/get-position-timeline.js +79 -0
  31. package/dist/tools/get-position-timeline.js.map +1 -0
  32. package/dist/tools/get-positions.d.ts +21 -0
  33. package/dist/tools/get-positions.d.ts.map +1 -0
  34. package/dist/tools/get-positions.js +68 -0
  35. package/dist/tools/get-positions.js.map +1 -0
  36. package/dist/tools/get-trader-pnl.d.ts +6 -0
  37. package/dist/tools/get-trader-pnl.d.ts.map +1 -0
  38. package/dist/tools/get-trader-pnl.js +39 -0
  39. package/dist/tools/get-trader-pnl.js.map +1 -0
  40. package/dist/tools/get-trader.d.ts +2 -0
  41. package/dist/tools/get-trader.d.ts.map +1 -1
  42. package/dist/tools/get-trader.js +13 -11
  43. package/dist/tools/get-trader.js.map +1 -1
  44. package/dist/tools/get-trending-wallets.d.ts +15 -0
  45. package/dist/tools/get-trending-wallets.d.ts.map +1 -0
  46. package/dist/tools/get-trending-wallets.js +56 -0
  47. package/dist/tools/get-trending-wallets.js.map +1 -0
  48. package/dist/tools/get-whale-trades.js +1 -1
  49. package/dist/tools/get-whale-trades.js.map +1 -1
  50. package/dist/tools/read-parity.d.ts +20 -0
  51. package/dist/tools/read-parity.d.ts.map +1 -0
  52. package/dist/tools/read-parity.js +493 -0
  53. package/dist/tools/read-parity.js.map +1 -0
  54. package/package.json +3 -1
package/README.md CHANGED
@@ -2,7 +2,14 @@
2
2
 
3
3
  MCP server for [0xinsider](https://0xinsider.com) — prediction market intelligence for AI agents.
4
4
 
5
- Gives your AI agent access to trader grades, whale trades, smart money signals, market intelligence, and insider detection across prediction markets.
5
+ Gives your AI agent access to trader grades, whale trades, smart money signals, market intelligence, and insider-radar flags across prediction markets.
6
+
7
+ ## Two ways to connect
8
+
9
+ - **Remote HTTP (no install)** — `POST https://api.0xinsider.com/api/v1/mcp` with `Authorization: Bearer oxi_sk_live_...`. Implements the MCP Streamable HTTP transport (protocolVersion `2025-11-25`). Works with MCP clients that speak HTTP and can send headers. `?token=` remains a legacy URL-only compatibility path, but prefer headers because URL secrets can leak through shell history, browser history, proxy logs, and crash reports. 31 read-only public V1 tools -- the 29 the stdio server exposes plus the remote-only `get_report` and `search_content` -- same rate limits, same billing.
10
+ - **Stdio (this npm package)** — run `npx -y @0xinsider/mcp` locally for Claude Code / Cursor / Codex / Gemini CLI. Best when the client can launch a child process and you prefer to keep the API key out of URLs.
11
+
12
+ The stdio server exposes these 29 read-only tools (the remote HTTP endpoint additionally exposes the remote-only `get_report` and `search_content`, 31 total): `get_leaderboard`, `get_trader`, `batch_get_traders`, `get_whale_trades`, `get_whale_trade`, `get_whale_trades_history`, `get_market_intel`, `batch_get_market_intel`, `get_smart_money_flows`, `get_sharp_money_flows`, `get_market_snapshot`, `get_insider_radar`, `get_insider_radar_flag`, `get_positions`, `get_position_timeline`, `get_position_timeline_by_id`, `search_markets`, `explore_markets`, `get_event_replay_since`, `list_webhooks`, `get_webhook`, `get_daily_report_snapshot`, `get_weekly_report_snapshot`, `get_monthly_report_snapshot`, `get_trader_export_snapshot`, `get_platforms`, `get_large_positions`, `get_trending_wallets`, `get_trader_pnl`.
6
13
 
7
14
  ## Quick Start
8
15
 
@@ -12,6 +19,8 @@ Gives your AI agent access to trader grades, whale trades, smart money signals,
12
19
  npx -y @0xinsider/mcp init
13
20
  ```
14
21
 
22
+ `init` reads the key without echoing it. For non-interactive setup, set `OXINSIDER_API_KEY` in the process environment or pipe the key on stdin. Do not pass the key as a command-line argument.
23
+
15
24
  Or manually add to `~/.claude/settings.json`:
16
25
 
17
26
  ```json
@@ -30,6 +39,8 @@ Or manually add to `~/.claude/settings.json`:
30
39
 
31
40
  ### Cursor
32
41
 
42
+ `npx -y @0xinsider/mcp init` can also configure Cursor automatically when its local config directory is present.
43
+
33
44
  Add to `~/.cursor/mcp.json`:
34
45
 
35
46
  ```json
@@ -61,13 +72,31 @@ args = ["-y", "@0xinsider/mcp"]
61
72
  OXINSIDER_API_KEY = "oxi_sk_live_..."
62
73
  ```
63
74
 
75
+ ### Gemini CLI
76
+
77
+ `npx -y @0xinsider/mcp init` detects Gemini CLI when the `gemini` command is installed and prints a manual config template.
78
+
79
+ Or add to `~/.gemini/settings.json`:
80
+
81
+ ```json
82
+ {
83
+ "mcpServers": {
84
+ "0xinsider": {
85
+ "command": "npx",
86
+ "args": ["-y", "@0xinsider/mcp"],
87
+ "env": {
88
+ "OXINSIDER_API_KEY": "oxi_sk_live_..."
89
+ }
90
+ }
91
+ }
92
+ }
93
+ ```
94
+
64
95
  ### Other MCP Clients
65
96
 
66
97
  Any client that supports stdio transport:
67
98
 
68
- ```bash
69
- OXINSIDER_API_KEY=oxi_sk_live_... npx -y @0xinsider/mcp
70
- ```
99
+ Set `OXINSIDER_API_KEY` in the process environment before starting the stdio server. Do not pass the key as a command-line argument.
71
100
 
72
101
  Need the command list? Run:
73
102
 
@@ -77,18 +106,48 @@ npx -y @0xinsider/mcp --help
77
106
 
78
107
  ## API Key
79
108
 
80
- Get your API key at [0xinsider.com/developers](https://0xinsider.com/developers). Requires an Insider subscription.
109
+ Get your API key at [0xinsider.com/developers](https://0xinsider.com/developers). Requires a Pro subscription.
110
+
111
+ ## Security
112
+
113
+ `init` never prints the API key. If an older version wrote the key to recorded terminal output, rotate the key before you use the new configuration.
81
114
 
82
115
  ## Tools
83
116
 
117
+ <!-- The `batch_get_traders` and `batch_get_market_intel` rows below are GENERATED: they
118
+ publish the batch item cap, which is owned by `MAX_BATCH_ITEMS` in
119
+ `backend/src/api_v1/handlers/batch.rs` (#8103). Do not hand-edit those two rows; a
120
+ `cd web && npm run generate:api-policy` run rewrites them. Every other row is written by
121
+ hand. Markers are not used here because an HTML comment inside a table breaks it. -->
122
+
84
123
  | Tool | Description |
85
124
  |------|-------------|
86
- | `get_trader` | Look up a trader by wallet address — grade, P&L, win rate, strategy, quant metrics |
125
+ | `get_trader` | Look up a trader by wallet address or username — grade, P&L, win rate, strategy, quant metrics |
126
+ | `batch_get_traders` | Look up 1-25 traders in one call with per-item results and batch-item quota |
87
127
  | `get_whale_trades` | Recent large trades with signal scoring, filterable by size/category/grade |
128
+ | `get_whale_trade` | Read one whale trade by wt_ ID or raw whale_alerts.id |
129
+ | `get_whale_trades_history` | Replay historical whale trades with cursor, market, trader, category, grade, platform, and time filters |
88
130
  | `get_leaderboard` | Top-ranked traders (S/A/B grades) with optional category/strategy filters |
89
131
  | `search_markets` | Search prediction markets by keyword |
132
+ | `explore_markets` | Browse whale-active markets with facets and grouped discovery entries |
90
133
  | `get_market_intel` | Smart money flow analysis for a specific market |
91
- | `get_insider_radar` | Suspicious trading pattern detection |
134
+ | `batch_get_market_intel` | Fetch market intelligence for 1-25 condition IDs in one call |
135
+ | `get_smart_money_flows` | Deprecated alias of `get_sharp_money_flows` (byte-identical); kept for backward compatibility |
136
+ | `get_sharp_money_flows` | Ranked sharp-money flow discovery across markets (timeframe, category, platform, min-grade, direction filters) |
137
+ | `get_market_snapshot` | Live market-card snapshot with outcomes, liquidity, sports context, and freshness state |
138
+ | `get_positions` | Current positions with trader, market, value, side, P&L, and freshness context |
139
+ | `get_position_timeline` | Per-market trader fills with running amount and average entry price |
140
+ | `get_position_timeline_by_id` | Per-market trader fills using an internal trader ID alias |
141
+ | `get_insider_radar` | Suspicious trading pattern flags |
142
+ | `get_insider_radar_flag` | Read one insider-radar flag by rf_ ID or raw radar_flags.id |
143
+ | `get_event_replay_since` | Durable public event replay after an opaque cursor |
144
+ | `list_webhooks` | Read webhook endpoints owned by the authenticated API-key user |
145
+ | `get_webhook` | Read one webhook endpoint by ID |
146
+ | `get_daily_report_snapshot` | Read a dated daily whale-activity report snapshot |
147
+ | `get_weekly_report_snapshot` | Read a weekly whale-activity report snapshot by week token or date range |
148
+ | `get_monthly_report_snapshot` | Read a monthly whale-activity report snapshot |
149
+ | `get_trader_export_snapshot` | Read trader export metadata without starting an export job |
150
+ | `get_platforms` | Provider capability matrix: which platforms support grade, P&L, strategy, timeline, whale signal, insider radar, and market snapshot |
92
151
 
93
152
  ## Resources
94
153
 
@@ -114,6 +173,7 @@ Once configured, ask your AI agent:
114
173
  - "Who are the top prediction market traders right now?"
115
174
  - "What are whales buying in crypto markets?"
116
175
  - "Analyze trader 0x1234... — is their strategy worth following?"
176
+ - "Analyze trader swisstony — is their strategy worth following?"
117
177
  - "Are there any suspicious trading patterns on the Trump election market?"
118
178
  - "Generate a smart money report for AI markets"
119
179
 
package/dist/cli-lib.d.ts CHANGED
@@ -1,4 +1,12 @@
1
1
  export type CliCommand = "serve" | "init" | "help";
2
+ export type EnvironmentType = "claude-code" | "cursor" | "codex" | "gemini-cli";
3
+ export type Environment = {
4
+ type: EnvironmentType;
5
+ configPath: string;
6
+ };
7
+ type JsonValue = string | number | boolean | null | JsonValue[] | {
8
+ [key: string]: JsonValue;
9
+ };
2
10
  type McpConfig = {
3
11
  command: string;
4
12
  args: string[];
@@ -6,7 +14,14 @@ type McpConfig = {
6
14
  };
7
15
  export declare function buildMcpConfig(apiKey: string): McpConfig;
8
16
  export declare function formatCodexToml(apiKey: string): string;
17
+ export declare function buildMcpConfigTemplate(): McpConfig;
18
+ export declare function formatCodexTomlTemplate(): string;
9
19
  export declare function resolveCliCommand(args: readonly string[]): CliCommand;
20
+ export declare function detectEnvironments(home?: string): Environment[];
21
+ export declare function readJsonFile(path: string): Record<string, JsonValue>;
22
+ export declare function writeJsonFile(path: string, data: Record<string, JsonValue>): void;
23
+ export declare function addJsonMcpServer(configPath: string, apiKey: string): void;
24
+ export declare function addCodexMcpServer(configPath: string, apiKey: string): void;
10
25
  export declare function runCli(args: readonly string[]): Promise<void>;
11
26
  export {};
12
27
  //# sourceMappingURL=cli-lib.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli-lib.d.ts","sourceRoot":"","sources":["../src/cli-lib.ts"],"names":[],"mappings":"AAcA,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAUnD,KAAK,SAAS,GAAG;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7B,CAAC;AAEF,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAQxD;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAQtD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,CAarE;AA4LD,wBAAsB,MAAM,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBnE"}
1
+ {"version":3,"file":"cli-lib.d.ts","sourceRoot":"","sources":["../src/cli-lib.ts"],"names":[],"mappings":"AAoBA,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AACnD,MAAM,MAAM,eAAe,GAAG,aAAa,GAAG,QAAQ,GAAG,OAAO,GAAG,YAAY,CAAC;AAEhF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,eAAe,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,KAAK,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,EAAE,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAE/F,KAAK,SAAS,GAAG;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7B,CAAC;AASF,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAQxD;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAQtD;AAED,wBAAgB,sBAAsB,IAAI,SAAS,CAElD;AAED,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD;AAOD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,CAarE;AAuLD,wBAAgB,kBAAkB,CAChC,IAAI,SAAoD,GACvD,WAAW,EAAE,CAwBf;AAiCD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAYpE;AAWD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI,CAEjF;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CASzE;AA2CD,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAM1E;AA6CD,wBAAsB,MAAM,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBnE"}
package/dist/cli-lib.js CHANGED
@@ -1,9 +1,14 @@
1
1
  import { spawnSync } from "node:child_process";
2
- import { readFileSync, writeFileSync, existsSync, mkdirSync } from "node:fs";
2
+ import { chmodSync, existsSync, mkdirSync, readFileSync, writeFileSync, } from "node:fs";
3
3
  import { dirname, join } from "node:path";
4
4
  import { createInterface } from "node:readline";
5
5
  import { API_KEY_ENV_VAR, DEVELOPERS_URL, MCP_NPX_ARGS, MCP_NPX_COMMAND, PACKAGE_NAME, SERVER_NAME, } from "./constants.js";
6
6
  import { runServer } from "./server.js";
7
+ const API_KEY_PREFIX = "oxi_sk_live_";
8
+ const API_KEY_CONFIG_PLACEHOLDER = "<YOUR_OXINSIDER_API_KEY>";
9
+ function asError(error) {
10
+ return error instanceof Error ? error : new Error(String(error));
11
+ }
7
12
  export function buildMcpConfig(apiKey) {
8
13
  return {
9
14
  command: MCP_NPX_COMMAND,
@@ -22,6 +27,16 @@ args = [${MCP_NPX_ARGS.map((arg) => JSON.stringify(arg)).join(", ")}]
22
27
  ${API_KEY_ENV_VAR} = ${JSON.stringify(apiKey)}
23
28
  `;
24
29
  }
30
+ export function buildMcpConfigTemplate() {
31
+ return buildMcpConfig(API_KEY_CONFIG_PLACEHOLDER);
32
+ }
33
+ export function formatCodexTomlTemplate() {
34
+ return formatCodexToml(API_KEY_CONFIG_PLACEHOLDER);
35
+ }
36
+ function commandExists(command, args = ["--version"]) {
37
+ const result = spawnSync(command, args, { stdio: "ignore" });
38
+ return !result.error && result.status === 0;
39
+ }
25
40
  export function resolveCliCommand(args) {
26
41
  const command = args[0];
27
42
  if (!command || command === "serve") {
@@ -40,15 +55,21 @@ function printHelp() {
40
55
 
41
56
  Usage:
42
57
  npx -y ${PACKAGE_NAME} init
43
- ${API_KEY_ENV_VAR}=oxi_sk_live_... npx -y ${PACKAGE_NAME}
58
+ npx -y ${PACKAGE_NAME}
44
59
 
45
60
  Commands:
46
- init Detect Claude Code, Cursor, or Codex and write MCP config
61
+ init Detect Claude Code, Cursor, Codex, or Gemini CLI and write MCP config
47
62
  serve Start the stdio MCP server (default)
48
63
  help Show this message
64
+
65
+ Environment:
66
+ ${API_KEY_ENV_VAR} API key for the stdio server or non-interactive init
49
67
  `);
50
68
  }
51
69
  function ask(question) {
70
+ if (!process.stdin.isTTY) {
71
+ return Promise.reject(new Error("Interactive input requires a TTY."));
72
+ }
52
73
  const rl = createInterface({ input: process.stdin, output: process.stdout });
53
74
  return new Promise((resolve) => {
54
75
  rl.question(question, (answer) => {
@@ -57,8 +78,144 @@ function ask(question) {
57
78
  });
58
79
  });
59
80
  }
60
- function detectEnvironments() {
61
- const home = process.env.HOME ?? process.env.USERPROFILE ?? "";
81
+ function askSecret(question) {
82
+ if (!process.stdin.isTTY || typeof process.stdin.setRawMode !== "function") {
83
+ return Promise.reject(new Error("Hidden API key input requires a TTY."));
84
+ }
85
+ const previousRawMode = process.stdin.isRaw;
86
+ return new Promise((resolve, reject) => {
87
+ let value = "";
88
+ let settled = false;
89
+ let rawModeChanged = false;
90
+ const onData = (chunk) => {
91
+ for (const character of String(chunk)) {
92
+ if (character === "\r" || character === "\n") {
93
+ finish();
94
+ return;
95
+ }
96
+ if (character === "\u0003") {
97
+ finish(new Error("API key input interrupted by SIGINT."));
98
+ return;
99
+ }
100
+ if (character === "\u0004") {
101
+ finish(new Error("API key input ended before completion."));
102
+ return;
103
+ }
104
+ if (character === "\b" || character === "\u007f") {
105
+ value = value.slice(0, -1);
106
+ continue;
107
+ }
108
+ if (character === "\u0015") {
109
+ value = "";
110
+ continue;
111
+ }
112
+ if (character >= " " && character !== "\u007f") {
113
+ value += character;
114
+ }
115
+ }
116
+ };
117
+ const onError = (error) => finish(error);
118
+ const onEnd = () => finish(new Error("API key input ended before completion."));
119
+ const onSigint = () => finish(new Error("API key input interrupted by SIGINT."));
120
+ const onSigterm = () => finish(new Error("API key input interrupted by SIGTERM."));
121
+ const restore = () => {
122
+ process.stdin.removeListener("data", onData);
123
+ process.stdin.removeListener("error", onError);
124
+ process.stdin.removeListener("end", onEnd);
125
+ process.removeListener("SIGINT", onSigint);
126
+ process.removeListener("SIGTERM", onSigterm);
127
+ let restoreError;
128
+ if (rawModeChanged) {
129
+ try {
130
+ process.stdin.setRawMode(previousRawMode);
131
+ rawModeChanged = false;
132
+ }
133
+ catch (error) {
134
+ restoreError = error;
135
+ }
136
+ }
137
+ try {
138
+ process.stdin.pause();
139
+ }
140
+ catch (error) {
141
+ restoreError ??= error;
142
+ }
143
+ try {
144
+ process.stdout.write("\n");
145
+ }
146
+ catch (error) {
147
+ restoreError ??= error;
148
+ }
149
+ if (restoreError) {
150
+ throw asError(restoreError);
151
+ }
152
+ };
153
+ function finish(error) {
154
+ if (settled)
155
+ return;
156
+ settled = true;
157
+ try {
158
+ restore();
159
+ }
160
+ catch (restoreError) {
161
+ reject(asError(restoreError));
162
+ return;
163
+ }
164
+ if (error) {
165
+ reject(error);
166
+ }
167
+ else {
168
+ resolve(value.trim());
169
+ }
170
+ }
171
+ try {
172
+ process.stdin.setRawMode(true);
173
+ rawModeChanged = true;
174
+ process.stdin.on("data", onData);
175
+ process.stdin.on("error", onError);
176
+ process.stdin.once("end", onEnd);
177
+ process.once("SIGINT", onSigint);
178
+ process.once("SIGTERM", onSigterm);
179
+ process.stdin.resume();
180
+ process.stdout.write(question);
181
+ }
182
+ catch (error) {
183
+ finish(asError(error));
184
+ }
185
+ });
186
+ }
187
+ async function readPipedApiKey() {
188
+ const chunks = [];
189
+ for await (const chunk of process.stdin) {
190
+ chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(String(chunk)));
191
+ }
192
+ return Buffer.concat(chunks).toString("utf8").trim();
193
+ }
194
+ async function readApiKey() {
195
+ const configured = process.env[API_KEY_ENV_VAR]?.trim();
196
+ if (configured)
197
+ return configured;
198
+ if (process.stdin.isTTY && typeof process.stdin.setRawMode === "function") {
199
+ return askSecret("Enter your 0xinsider API key (input hidden): ");
200
+ }
201
+ if (!process.stdin.isTTY) {
202
+ const piped = await readPipedApiKey();
203
+ if (piped)
204
+ return piped;
205
+ }
206
+ throw new Error(`API key input needs a TTY. Set ${API_KEY_ENV_VAR} or pipe the key on stdin. Do not pass the key as a command-line argument. Get a key at ${DEVELOPERS_URL}.`);
207
+ }
208
+ function validateApiKey(apiKey) {
209
+ const normalized = apiKey.trim();
210
+ if (!normalized) {
211
+ throw new Error(`API key is required. Get one at ${DEVELOPERS_URL}.`);
212
+ }
213
+ if (!normalized.startsWith(API_KEY_PREFIX) || /\s/.test(normalized)) {
214
+ throw new Error(`Invalid API key format. Keys start with ${API_KEY_PREFIX}`);
215
+ }
216
+ return normalized;
217
+ }
218
+ export function detectEnvironments(home = process.env.HOME ?? process.env.USERPROFILE ?? "") {
62
219
  const environments = [];
63
220
  const claudeDir = join(home, ".claude");
64
221
  if (existsSync(claudeDir)) {
@@ -68,9 +225,13 @@ function detectEnvironments() {
68
225
  if (existsSync(cursorDir)) {
69
226
  environments.push({ type: "cursor", configPath: join(cursorDir, "mcp.json") });
70
227
  }
71
- const codexDir = join(home, ".codex");
72
- if (existsSync(codexDir)) {
73
- environments.push({ type: "codex", configPath: join(codexDir, "config.toml") });
228
+ const codexConfigPath = join(home, ".codex", "config.toml");
229
+ if (existsSync(join(home, ".codex")) || commandExists("codex")) {
230
+ environments.push({ type: "codex", configPath: codexConfigPath });
231
+ }
232
+ const geminiConfigPath = join(home, ".gemini", "settings.json");
233
+ if (existsSync(join(home, ".gemini")) || commandExists("gemini")) {
234
+ environments.push({ type: "gemini-cli", configPath: geminiConfigPath });
74
235
  }
75
236
  return environments;
76
237
  }
@@ -79,7 +240,9 @@ function environmentLabel(type) {
79
240
  return "Claude Code";
80
241
  if (type === "cursor")
81
242
  return "Cursor";
82
- return "Codex";
243
+ if (type === "codex")
244
+ return "Codex";
245
+ return "Gemini CLI";
83
246
  }
84
247
  async function chooseEnvironment(environments) {
85
248
  if (environments.length === 0)
@@ -102,30 +265,33 @@ async function chooseEnvironment(environments) {
102
265
  function isJsonRecord(value) {
103
266
  return typeof value === "object" && value !== null && !Array.isArray(value);
104
267
  }
105
- function readJsonFile(path) {
268
+ export function readJsonFile(path) {
106
269
  if (!existsSync(path))
107
270
  return {};
108
271
  try {
109
272
  const parsed = JSON.parse(readFileSync(path, "utf-8"));
110
273
  if (!isJsonRecord(parsed)) {
111
- console.error(`Warning: ${path} does not contain a JSON object, treating as empty`);
112
- return {};
274
+ throw new Error(`${path} does not contain a JSON object`);
113
275
  }
114
276
  return parsed;
115
277
  }
116
278
  catch (error) {
117
- console.error(`Warning: failed to parse ${path}:`, error);
118
- return {};
279
+ const message = error instanceof Error ? error.message : String(error);
280
+ throw new Error(`Refusing to update malformed MCP config ${path}: ${message}`);
119
281
  }
120
282
  }
121
- function writeJsonFile(path, data) {
283
+ function writeTextFileRestricted(path, data) {
122
284
  const dir = dirname(path);
123
285
  if (!existsSync(dir)) {
124
286
  mkdirSync(dir, { recursive: true });
125
287
  }
126
- writeFileSync(path, JSON.stringify(data, null, 2) + "\n");
288
+ writeFileSync(path, data, { mode: 0o600 });
289
+ chmodSync(path, 0o600);
290
+ }
291
+ export function writeJsonFile(path, data) {
292
+ writeTextFileRestricted(path, JSON.stringify(data, null, 2) + "\n");
127
293
  }
128
- function addJsonMcpServer(configPath, apiKey) {
294
+ export function addJsonMcpServer(configPath, apiKey) {
129
295
  const config = readJsonFile(configPath);
130
296
  const existing = config.mcpServers;
131
297
  const mcpServers = isJsonRecord(existing) ? existing : {};
@@ -134,60 +300,72 @@ function addJsonMcpServer(configPath, apiKey) {
134
300
  writeJsonFile(configPath, config);
135
301
  console.log(`\nAdded ${SERVER_NAME} MCP server to ${configPath}`);
136
302
  }
137
- function printManualInstructions(apiKey) {
138
- console.log("\nClaude Code / Cursor JSON:\n");
139
- console.log(JSON.stringify({ mcpServers: { [SERVER_NAME]: buildMcpConfig(apiKey) } }, null, 2));
303
+ function printManualInstructions() {
304
+ console.log("\nClaude Code / Cursor / Gemini CLI JSON:\n");
305
+ console.log(JSON.stringify({ mcpServers: { [SERVER_NAME]: buildMcpConfigTemplate() } }, null, 2));
140
306
  console.log("\nCodex TOML (~/.codex/config.toml):\n");
141
- console.log(formatCodexToml(apiKey));
307
+ console.log(formatCodexTomlTemplate());
308
+ console.log("Replace the placeholder with your API key in the config file. Do not paste the key into a command or terminal output.");
142
309
  }
143
- function addCodexMcpServer(apiKey) {
144
- spawnSync("codex", ["mcp", "remove", SERVER_NAME], {
145
- stdio: "ignore",
146
- });
147
- const result = spawnSync("codex", [
148
- "mcp",
149
- "add",
150
- SERVER_NAME,
151
- "--env",
152
- `${API_KEY_ENV_VAR}=${apiKey}`,
153
- "--",
154
- MCP_NPX_COMMAND,
155
- ...MCP_NPX_ARGS,
156
- ], {
157
- stdio: "inherit",
158
- });
159
- if (result.error) {
160
- throw result.error;
161
- }
162
- if (result.status !== 0) {
163
- throw new Error(`codex mcp add failed with exit code ${result.status ?? "unknown"}`);
310
+ function stripCodexServerBlocks(source) {
311
+ const serverHeaders = new Set([
312
+ `[mcp_servers.${SERVER_NAME}]`,
313
+ `[mcp_servers."${SERVER_NAME}"]`,
314
+ ]);
315
+ const envHeaders = new Set([
316
+ `[mcp_servers.${SERVER_NAME}.env]`,
317
+ `[mcp_servers."${SERVER_NAME}".env]`,
318
+ ]);
319
+ const output = [];
320
+ let skipping = false;
321
+ for (const line of source.split(/\r?\n/)) {
322
+ const trimmed = line.trim();
323
+ if (serverHeaders.has(trimmed) || envHeaders.has(trimmed)) {
324
+ skipping = true;
325
+ continue;
326
+ }
327
+ if (skipping && /^\[.+\]$/.test(trimmed)) {
328
+ skipping = false;
329
+ }
330
+ if (!skipping) {
331
+ output.push(line);
332
+ }
164
333
  }
334
+ return output.join("\n").trimEnd();
335
+ }
336
+ export function addCodexMcpServer(configPath, apiKey) {
337
+ const existing = existsSync(configPath) ? readFileSync(configPath, "utf-8") : "";
338
+ const withoutExistingServer = stripCodexServerBlocks(existing);
339
+ const nextConfig = `${withoutExistingServer}${withoutExistingServer ? "\n\n" : ""}${formatCodexToml(apiKey)}`;
340
+ writeTextFileRestricted(configPath, nextConfig);
341
+ }
342
+ function printGeminiManualInstructions() {
343
+ console.log("\nGemini CLI auto-setup is not run because its MCP helper requires passing env values through process arguments.");
344
+ printManualInstructions();
165
345
  }
166
346
  async function runSetup() {
167
347
  console.log(`${SERVER_NAME} MCP Server Setup\n`);
168
- const apiKey = await ask(`Enter your 0xinsider API key (oxi_sk_live_...): `);
169
- if (!apiKey) {
170
- throw new Error(`API key is required. Get one at ${DEVELOPERS_URL}`);
171
- }
172
- if (!apiKey.startsWith("oxi_sk_live_")) {
173
- throw new Error("Invalid API key format. Keys start with oxi_sk_live_");
174
- }
348
+ const apiKey = validateApiKey(await readApiKey());
175
349
  const env = await chooseEnvironment(detectEnvironments());
176
350
  if (!env) {
177
- console.log("\nCould not detect Claude Code, Cursor, or Codex. Here are manual instructions:");
178
- printManualInstructions(apiKey);
351
+ console.log("\nCould not detect Claude Code, Cursor, Codex, or Gemini CLI. Here are manual instructions:");
352
+ printManualInstructions();
179
353
  return;
180
354
  }
181
355
  const confirm = await ask(`Detected ${environmentLabel(env.type)}. Add ${SERVER_NAME} MCP server? (Y/n): `);
182
356
  if (confirm.toLowerCase() === "n") {
183
- printManualInstructions(apiKey);
357
+ printManualInstructions();
184
358
  return;
185
359
  }
186
360
  if (env.type === "codex") {
187
- addCodexMcpServer(apiKey);
361
+ addCodexMcpServer(env.configPath, apiKey);
188
362
  console.log(`\nAdded ${SERVER_NAME} MCP server to ${env.configPath}`);
189
363
  return;
190
364
  }
365
+ if (env.type === "gemini-cli") {
366
+ printGeminiManualInstructions();
367
+ return;
368
+ }
191
369
  addJsonMcpServer(env.configPath, apiKey);
192
370
  }
193
371
  export async function runCli(args) {
@@ -1 +1 @@
1
- {"version":3,"file":"cli-lib.js","sourceRoot":"","sources":["../src/cli-lib.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli-lib.js","sourceRoot":"","sources":["../src/cli-lib.ts"],"names":[],"mappings":"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"}
package/dist/client.d.ts CHANGED
@@ -9,11 +9,14 @@ interface ApiResponse {
9
9
  has_more?: boolean;
10
10
  next_cursor?: string | null;
11
11
  total?: number | null;
12
+ facets?: unknown;
12
13
  error?: {
13
14
  code: string;
14
15
  message: string;
15
16
  doc_url?: string;
16
17
  param?: string;
18
+ reason?: string;
19
+ retry_at?: string;
17
20
  };
18
21
  }
19
22
  export declare class ApiClient {
@@ -21,6 +24,8 @@ export declare class ApiClient {
21
24
  private readonly baseUrl;
22
25
  constructor(apiKey: string, baseUrl?: string);
23
26
  request(path: string, params?: Record<string, string | number | undefined>, repeatedParams?: Record<string, string[]>): Promise<ApiResponse>;
27
+ post(path: string, body: unknown): Promise<ApiResponse>;
28
+ private decodeResponse;
24
29
  }
25
30
  export declare class ApiError extends Error {
26
31
  readonly status: number;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAEA,UAAU,WAAW;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAEpE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEtB,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7E;AAMD,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;IAKtC,OAAO,CACX,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,EACpD,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GACxC,OAAO,CAAC,WAAW,CAAC;CAqDxB;AAED,qBAAa,QAAS,SAAQ,KAAK;aAEf,MAAM,EAAE,MAAM;aACd,IAAI,EAAE,MAAM;gBADZ,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EAC5B,OAAO,EAAE,MAAM;CAKlB"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAEA,UAAU,WAAW;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAEpE,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;IAEjB,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QAGf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAMD,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;IAKtC,OAAO,CACX,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,EACpD,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GACxC,OAAO,CAAC,WAAW,CAAC;IA6BjB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC;YAgB/C,cAAc;CAsC7B;AAED,qBAAa,QAAS,SAAQ,KAAK;aAEf,MAAM,EAAE,MAAM;aACd,IAAI,EAAE,MAAM;gBADZ,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EAC5B,OAAO,EAAE,MAAM;CAKlB"}