@cueai/omni-reader-mcp 1.2.0 → 1.2.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
@@ -23,9 +23,10 @@ summarization, Q&A, field extraction — rather than stopping at "parse done".
23
23
  ## Requirements
24
24
 
25
25
  - Node.js 20.12 or newer.
26
- - Cue API Key: <https://cuecue.cn/api-key>.
27
- - New accounts receive free credits to try; the current grant and daily allowance follow
28
- the server-side onboarding policy and the `doctor` output.
26
+ - Cue API Key: <https://cuecue.cn/hub/api-key>.
27
+ - New accounts can try Omni without paying; see [Free credits](#free-credits) below. The
28
+ server-side onboarding policy and the `doctor` output are the live authority for current
29
+ allowances.
29
30
  - Configure `CUE_API_KEY` in the agent's secret store or local environment.
30
31
  **Never paste the API Key into a conversation.**
31
32
 
@@ -38,12 +39,28 @@ Bridge reads only these product configuration variables at runtime:
38
39
  authorizes; colon-separated on macOS/Linux, semicolon-separated on Windows. The current
39
40
  agent workspace remains the default allowed scope.
40
41
 
42
+ ## Free credits
43
+
44
+ As of 2026-08-14:
45
+
46
+ - every account receives 10 free credits daily — roughly 150 pages of ordinary documents,
47
+ 75 pages of scanned images or charts, 30 minutes of audio, or 4 minutes of video;
48
+ - new accounts receive a one-time 50-credit gift when obtaining `CUE_API_KEY` (60 credits
49
+ available on day one, including the daily grant);
50
+ - inviting a new user who registers gives both the inviter and the invitee 50 credits, with
51
+ no invite limit; when an invited user subscribes, the inviter additionally receives 10% of
52
+ the invitee's first-month credit quota as a bonus.
53
+
54
+ When available, the `doctor` output reports the live first-registration gift and daily grant;
55
+ referral rules and conversion ratios follow the server-side onboarding policy. If live values
56
+ differ from the numbers above, report the live values.
57
+
41
58
  ## Installation and configuration
42
59
 
43
60
  Always use an audited exact version, never an implicit `latest`:
44
61
 
45
62
  ```sh
46
- npx -y @cueai/omni-reader-mcp@1.2.0 setup
63
+ npx -y @cueai/omni-reader-mcp@1.2.1 setup
47
64
  ```
48
65
 
49
66
  The interactive setup supports Hermes, Cursor, Claude Desktop, and generic stdio
@@ -51,9 +68,9 @@ configuration. Non-interactive installation uses the same argument parsing and w
51
68
  logic:
52
69
 
53
70
  ```sh
54
- npx -y @cueai/omni-reader-mcp@1.2.0 setup --client hermes --allowed-root /absolute/minimum/root --yes --json
55
- npx -y @cueai/omni-reader-mcp@1.2.0 setup --client cursor --add-root /absolute/minimum/root --yes --json
56
- npx -y @cueai/omni-reader-mcp@1.2.0 setup --client claude-desktop --allowed-root /absolute/minimum/root --yes --json
71
+ npx -y @cueai/omni-reader-mcp@1.2.1 setup --client hermes --allowed-root /absolute/minimum/root --yes --json
72
+ npx -y @cueai/omni-reader-mcp@1.2.1 setup --client cursor --add-root /absolute/minimum/root --yes --json
73
+ npx -y @cueai/omni-reader-mcp@1.2.1 setup --client claude-desktop --allowed-root /absolute/minimum/root --yes --json
57
74
  ```
58
75
 
59
76
  When an agent or script runs under a pty (stdin is still a TTY), declare non-interactive
@@ -61,7 +78,7 @@ mode explicitly with `--headless` (alias `--non-interactive`): no `--yes` is req
61
78
  stdin is never read:
62
79
 
63
80
  ```sh
64
- npx -y @cueai/omni-reader-mcp@1.2.0 setup --client cursor --allowed-root /absolute/minimum/root --headless --json
81
+ npx -y @cueai/omni-reader-mcp@1.2.1 setup --client cursor --allowed-root /absolute/minimum/root --headless --json
65
82
  ```
66
83
 
67
84
  ## Cache and journal isolation
@@ -181,16 +198,16 @@ new source that satisfies the constraints.
181
198
  ## Commands
182
199
 
183
200
  ```sh
184
- npx -y @cueai/omni-reader-mcp@1.2.0 doctor
185
- npx -y @cueai/omni-reader-mcp@1.2.0 doctor --json
186
- npx -y @cueai/omni-reader-mcp@1.2.0 clean
187
- npx -y @cueai/omni-reader-mcp@1.2.0 uninstall --yes --json
201
+ npx -y @cueai/omni-reader-mcp@1.2.1 doctor
202
+ npx -y @cueai/omni-reader-mcp@1.2.1 doctor --json
203
+ npx -y @cueai/omni-reader-mcp@1.2.1 clean
204
+ npx -y @cueai/omni-reader-mcp@1.2.1 uninstall --yes --json
188
205
  ```
189
206
 
190
207
  Running the pinned version without a command starts the stdio MCP server:
191
208
 
192
209
  ```sh
193
- npx -y @cueai/omni-reader-mcp@1.2.0
210
+ npx -y @cueai/omni-reader-mcp@1.2.1
194
211
  ```
195
212
 
196
213
  `doctor --json` returns package/npm/client adapter, Key present/absent, allowed-root
@@ -199,7 +216,7 @@ status; it never prints the Key, private source paths, or content.
199
216
 
200
217
  ## Uninstall and rollback
201
218
 
202
- `uninstall --yes --json` removes only the currently trusted 1.2.0 Bridge entry; when a
219
+ `uninstall --yes --json` removes only the currently trusted 1.2.1 Bridge entry; when a
203
220
  matching trusted backup exists, it restores the original URL-only `omni-reader` entry.
204
221
  Uninstall never deletes user source files and never silently removes unexpired local
205
222
  results.
@@ -6,7 +6,7 @@ export declare const CUBE_GRANT_PROTOCOL_VERSION = "omni.parse_grant.v1";
6
6
  export declare const GRANTED_STREAM_PROTOCOL_VERSION = "omni.granted_parse_stream.v1";
7
7
  export declare const DEFAULT_CUBE_BASE_URL = "https://mcp.cuecue.cn";
8
8
  export declare const DEFAULT_IIIS_GRANTED_BASE_URL = "https://cubefile.ai.iiis.co:9443/omni/granted/";
9
- export declare const BRIDGE_RELEASE_VERSION = "1.2.0";
9
+ export declare const BRIDGE_RELEASE_VERSION = "1.2.1";
10
10
  export declare const REMOTE_OMNI_MCP_URL = "https://mcp.cuecue.cn/api/omni-reader/mcp/";
11
11
  export declare const FOREGROUND_BUDGET_MS = 15000;
12
12
  export declare const STATUS_LONG_POLL_MAX_MS = 20000;
package/dist/constants.js CHANGED
@@ -6,7 +6,7 @@ export const CUBE_GRANT_PROTOCOL_VERSION = "omni.parse_grant.v1";
6
6
  export const GRANTED_STREAM_PROTOCOL_VERSION = "omni.granted_parse_stream.v1";
7
7
  export const DEFAULT_CUBE_BASE_URL = "https://mcp.cuecue.cn";
8
8
  export const DEFAULT_IIIS_GRANTED_BASE_URL = "https://cubefile.ai.iiis.co:9443/omni/granted/";
9
- export const BRIDGE_RELEASE_VERSION = "1.2.0";
9
+ export const BRIDGE_RELEASE_VERSION = "1.2.1";
10
10
  export const REMOTE_OMNI_MCP_URL = "https://mcp.cuecue.cn/api/omni-reader/mcp/";
11
11
  export const FOREGROUND_BUDGET_MS = 15_000;
12
12
  export const STATUS_LONG_POLL_MAX_MS = 20_000;
@@ -1,10 +1,13 @@
1
1
  export declare const ONBOARDING_POLICY_URL = "https://cuecue.cn/api/v1/billing/public/onboarding-policy";
2
- export declare const API_KEY_URL = "https://cuecue.cn/api-key";
2
+ export declare const API_KEY_URL = "https://cuecue.cn/hub/api-key";
3
+ export declare const LEGACY_API_KEY_URL = "https://cuecue.cn/api-key";
4
+ type ApiKeyUrl = typeof API_KEY_URL | typeof LEGACY_API_KEY_URL;
3
5
  export interface OnboardingPolicy {
4
- readonly apiKeyUrl: typeof API_KEY_URL;
6
+ readonly apiKeyUrl: ApiKeyUrl;
5
7
  readonly firstRegistrationCredits: number;
6
8
  readonly freeDailyCredits: number;
7
9
  }
8
10
  export declare function getOnboardingPolicy(fetchImpl: typeof fetch, signal: AbortSignal): Promise<OnboardingPolicy | undefined>;
9
11
  export declare function onboardingGuidance(policy: OnboardingPolicy | undefined): string;
10
12
  export declare function getOnboardingPolicyWithTimeout(fetchImpl: typeof fetch, timeoutMs?: number): Promise<OnboardingPolicy | undefined>;
13
+ export {};
@@ -1,5 +1,6 @@
1
1
  export const ONBOARDING_POLICY_URL = "https://cuecue.cn/api/v1/billing/public/onboarding-policy";
2
- export const API_KEY_URL = "https://cuecue.cn/api-key";
2
+ export const API_KEY_URL = "https://cuecue.cn/hub/api-key";
3
+ export const LEGACY_API_KEY_URL = "https://cuecue.cn/api-key";
3
4
  function isRecord(value) {
4
5
  return value !== null && typeof value === "object" && !Array.isArray(value);
5
6
  }
@@ -9,12 +10,16 @@ function boundedCredits(value) {
9
10
  function normalizeOnboardingPolicy(value) {
10
11
  if (!isRecord(value))
11
12
  return undefined;
12
- if (value.api_key_url !== API_KEY_URL ||
13
+ const apiKeyUrl = value.api_key_url;
14
+ const accepted = apiKeyUrl === API_KEY_URL || apiKeyUrl === LEGACY_API_KEY_URL;
15
+ if (!accepted ||
13
16
  !boundedCredits(value.first_registration) ||
14
17
  !boundedCredits(value.free_daily))
15
18
  return undefined;
16
19
  return {
17
- apiKeyUrl: API_KEY_URL,
20
+ // Preserve the server's actual accepted URL so a legacy-serving backend
21
+ // keeps working until it flips to the Hub path.
22
+ apiKeyUrl: apiKeyUrl,
18
23
  firstRegistrationCredits: value.first_registration,
19
24
  freeDailyCredits: value.free_daily,
20
25
  };
@@ -1,6 +1,7 @@
1
1
  import { LATEST_PROTOCOL_VERSION } from "@modelcontextprotocol/sdk/types.js";
2
2
  import { parseReaderCapabilities, selectUrlProfile, } from "./capabilities.js";
3
3
  import { BRIDGE_RELEASE_VERSION, REMOTE_CAPABILITIES_CUSTOM_FIELD, REMOTE_OMNI_MCP_URL, } from "./constants.js";
4
+ import { API_KEY_URL } from "./onboarding-policy.js";
4
5
  import { OmniBridgeError } from "./errors.js";
5
6
  import { parseResultSchema } from "./result-contract.js";
6
7
  import { classifySource } from "./source.js";
@@ -206,7 +207,7 @@ export class HttpRemoteOmniClient {
206
207
  code: "API_KEY_REQUIRED",
207
208
  message: "A Cue API Key is required for Omni parsing.",
208
209
  failureScope: "authentication",
209
- userAction: "Create or configure an API Key at https://cuecue.cn/api-key without pasting it into chat.",
210
+ userAction: `Create or configure an API Key at ${API_KEY_URL} without pasting it into chat.`,
210
211
  operationCreated: false,
211
212
  retryable: false,
212
213
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cueai/omni-reader-mcp",
3
- "version": "1.2.0",
3
+ "version": "1.2.1",
4
4
  "description": "Local stdio MCP bridge for direct Omni document parsing",
5
5
  "type": "module",
6
6
  "license": "UNLICENSED",