@rvry/mcp 0.11.0 → 0.11.2

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
@@ -7,7 +7,7 @@ RVRY is an MCP server that improves AI reliability by forcing your model to fini
7
7
  ## Quick Start
8
8
 
9
9
  ```bash
10
- npx @rvry/mcp@latest setup
10
+ npx --yes --package @rvry/mcp@latest rvry-mcp setup
11
11
  ```
12
12
 
13
13
  The wizard will:
@@ -27,7 +27,7 @@ For any MCP client that supports **stdio transport** (runs a local process), add
27
27
  {
28
28
  "rvry": {
29
29
  "command": "npx",
30
- "args": ["@rvry/mcp"],
30
+ "args": ["--yes", "--package", "@rvry/mcp", "rvry-mcp"],
31
31
  "env": {
32
32
  "RVRY_TOKEN": "your_rvry_token"
33
33
  }
@@ -51,7 +51,7 @@ RVRY supports both **stdio** and **HTTP** transports:
51
51
 
52
52
  | Transport | Client | Setup |
53
53
  |-----------|--------|-------|
54
- | stdio | Claude Code, Claude Desktop, Cursor, Gemini CLI, Codex, Anti-Gravity | `npx @rvry/mcp@latest setup` |
54
+ | stdio | Claude Code, Claude Desktop, Cursor, Gemini CLI, Codex, Anti-Gravity | `npx --yes --package @rvry/mcp@latest rvry-mcp setup` |
55
55
  | stdio | Any client with `command` + `args` config | Manual JSON config (see above) |
56
56
  | HTTP | ChatGPT (custom GPTs), Perplexity, any HTTP MCP client | URL: `https://engine.rvry.ai/mcp` |
57
57
 
@@ -60,6 +60,7 @@ RVRY supports both **stdio** and **HTTP** transports:
60
60
  | Tool | What it does | Tier |
61
61
  |------|-------------|------|
62
62
  | **`RVRY_deepthink`** | Extended multi-round analysis. Catches assumptions, tests them, and doesn't let your AI wrap up until it's dealt with what it found. | All |
63
+ | **`RVRY_think`** | Lighter single-session analysis for questions that need structure but not the full deepthink loop. | All |
63
64
  | **`RVRY_problem_solve`** | Structured decision-making. Forces orientation, anticipation, and evaluation before committing to a recommendation. | Pro+ |
64
65
  | **`RVRY_challenge`** | Adversarial stress-testing. Finds weaknesses, tests assumptions, and surfaces failure modes in a proposal before you commit. | Pro+ |
65
66
  | **`RVRY_meta`** | Sustained metacognitive observation. Examines how your AI is thinking, not just what it's thinking. | Max |
@@ -78,7 +79,7 @@ All tools accept:
78
79
 
79
80
  ## Slash Commands (Claude Code)
80
81
 
81
- When you run `npx @rvry/mcp@latest setup` and select Claude Code, the wizard installs 4 slash commands:
82
+ When you run `npx --yes --package @rvry/mcp@latest rvry-mcp setup` and select Claude Code, the wizard installs 4 slash commands:
82
83
 
83
84
  | Command | Tool | What it does |
84
85
  |---------|------|-------------|
@@ -89,6 +90,8 @@ When you run `npx @rvry/mcp@latest setup` and select Claude Code, the wizard ins
89
90
 
90
91
  Usage: type `/deepthink [your question]` in Claude Code. Each command routes directly to the corresponding RVRY MCP tool.
91
92
 
93
+ `RVRY_think` is available as a tool, but the setup wizard does not install a `/think` slash command. Use it from clients that show the full MCP tool list or invoke it manually.
94
+
92
95
  Commands are installed to `~/.claude/commands/`. Existing files are never overwritten — re-running setup is safe.
93
96
 
94
97
  ## How it Works
package/dist/client.d.ts CHANGED
@@ -39,4 +39,4 @@ export interface ThinkResponse {
39
39
  * Call the RVRY engine /api/v1/think endpoint with a specific tool.
40
40
  * Start a new session by omitting sessionId, or continue by providing one.
41
41
  */
42
- export declare function callTool(tool: RvryTool, input: string, token: string, sessionId?: string, skipScoping?: boolean, userConstraints?: string[]): Promise<ThinkResponse>;
42
+ export declare function callTool(tool: RvryTool, input: string, token: string, sessionId?: string, skipScoping?: boolean, userConstraints?: string[], requiresCurrentData?: boolean): Promise<ThinkResponse>;
package/dist/client.js CHANGED
@@ -7,7 +7,7 @@ const DEFAULT_ENGINE_URL = 'https://engine.rvry.ai';
7
7
  * Call the RVRY engine /api/v1/think endpoint with a specific tool.
8
8
  * Start a new session by omitting sessionId, or continue by providing one.
9
9
  */
10
- export async function callTool(tool, input, token, sessionId, skipScoping, userConstraints) {
10
+ export async function callTool(tool, input, token, sessionId, skipScoping, userConstraints, requiresCurrentData) {
11
11
  const baseUrl = process.env.RVRY_ENGINE_URL ?? DEFAULT_ENGINE_URL;
12
12
  const body = { input, tool };
13
13
  if (sessionId) {
@@ -19,6 +19,9 @@ export async function callTool(tool, input, token, sessionId, skipScoping, userC
19
19
  if (userConstraints && userConstraints.length > 0) {
20
20
  body.userConstraints = userConstraints;
21
21
  }
22
+ if (requiresCurrentData) {
23
+ body.requiresCurrentData = true;
24
+ }
22
25
  const res = await fetch(`${baseUrl}/api/v1/think`, {
23
26
  method: 'POST',
24
27
  headers: {
package/dist/index.d.ts CHANGED
@@ -7,7 +7,7 @@
7
7
  *
8
8
  * Exposes 5 tools (RVRY_deepthink, RVRY_problem_solve, RVRY_think, RVRY_challenge, RVRY_meta) + backward-compat aliases + 5 MCP Prompts.
9
9
  *
10
- * Also supports `npx @rvry/mcp setup` to install Claude Code commands.
10
+ * Also supports `npx --yes --package @rvry/mcp rvry-mcp setup` to install Claude Code commands.
11
11
  */
12
12
  import { type Tool } from '@modelcontextprotocol/sdk/types.js';
13
13
  import { type RvryTool, type ThinkResponse } from './client.js';
package/dist/index.js CHANGED
@@ -7,7 +7,7 @@
7
7
  *
8
8
  * Exposes 5 tools (RVRY_deepthink, RVRY_problem_solve, RVRY_think, RVRY_challenge, RVRY_meta) + backward-compat aliases + 5 MCP Prompts.
9
9
  *
10
- * Also supports `npx @rvry/mcp setup` to install Claude Code commands.
10
+ * Also supports `npx --yes --package @rvry/mcp rvry-mcp setup` to install Claude Code commands.
11
11
  */
12
12
  import { Server } from '@modelcontextprotocol/sdk/server/index.js';
13
13
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
@@ -67,6 +67,10 @@ const TOOL_DEFS = [
67
67
  items: { type: 'string' },
68
68
  description: 'User-stated directives or requirements to track throughout the session.',
69
69
  },
70
+ requiresCurrentData: {
71
+ type: 'boolean',
72
+ description: 'Set to true when the question depends on facts, policies, prices, regulations, or events that may have changed.',
73
+ },
70
74
  },
71
75
  required: ['input'],
72
76
  },
@@ -101,6 +105,10 @@ const TOOL_DEFS = [
101
105
  items: { type: 'string' },
102
106
  description: 'User-stated directives or requirements to track throughout the session.',
103
107
  },
108
+ requiresCurrentData: {
109
+ type: 'boolean',
110
+ description: 'Set to true when the question depends on facts, policies, prices, regulations, or events that may have changed.',
111
+ },
104
112
  },
105
113
  required: ['input'],
106
114
  },
@@ -134,6 +142,10 @@ const TOOL_DEFS = [
134
142
  items: { type: 'string' },
135
143
  description: 'User-stated directives or requirements to track throughout the session.',
136
144
  },
145
+ requiresCurrentData: {
146
+ type: 'boolean',
147
+ description: 'Set to true when the question depends on facts, policies, prices, regulations, or events that may have changed.',
148
+ },
137
149
  },
138
150
  required: ['input'],
139
151
  },
@@ -167,6 +179,10 @@ const TOOL_DEFS = [
167
179
  items: { type: 'string' },
168
180
  description: 'User-stated directives or requirements to track throughout the session.',
169
181
  },
182
+ requiresCurrentData: {
183
+ type: 'boolean',
184
+ description: 'Set to true when the question depends on facts, policies, prices, regulations, or events that may have changed.',
185
+ },
170
186
  },
171
187
  required: ['input'],
172
188
  },
@@ -191,6 +207,10 @@ const TOOL_DEFS = [
191
207
  type: 'string',
192
208
  description: 'Session ID for continuing an existing session. Omit to start a new session.',
193
209
  },
210
+ requiresCurrentData: {
211
+ type: 'boolean',
212
+ description: 'Set to true when the question depends on facts, policies, prices, regulations, or events that may have changed.',
213
+ },
194
214
  },
195
215
  required: ['input'],
196
216
  },
@@ -262,6 +282,7 @@ async function main() {
262
282
  }
263
283
  const sessionId = typeof typedArgs?.sessionId === 'string' ? typedArgs.sessionId : undefined;
264
284
  const skipScoping = typedArgs?.skipScoping === true;
285
+ const requiresCurrentData = typedArgs?.requiresCurrentData === true;
265
286
  const userConstraints = Array.isArray(typedArgs?.userConstraints)
266
287
  ? typedArgs.userConstraints.filter(s => typeof s === 'string')
267
288
  : undefined;
@@ -275,7 +296,7 @@ async function main() {
275
296
  question = questionCache.get(sessionId) ?? input;
276
297
  }
277
298
  try {
278
- const result = await callTool(rvryTool, input, token, sessionId, skipScoping || undefined, userConstraints);
299
+ const result = await callTool(rvryTool, input, token, sessionId, skipScoping || undefined, userConstraints, requiresCurrentData || undefined);
279
300
  // Cache question on first call (now we have the sessionId)
280
301
  if (!sessionId) {
281
302
  questionCache.set(result.sessionId, input);
package/dist/setup.d.ts CHANGED
@@ -4,9 +4,9 @@
4
4
  * Interactive setup: device auth flow (browser-based) or manual token paste.
5
5
  * Auto-detects Claude Code CLI and Claude Desktop, configures both.
6
6
  *
7
- * Usage: npx @rvry/mcp@latest setup
8
- * npx @rvry/mcp@latest setup --token <value>
9
- * npx @rvry/mcp@latest setup --client code (Claude Code only)
10
- * npx @rvry/mcp@latest setup --client desktop (Claude Desktop only)
7
+ * Usage: npx --yes --package @rvry/mcp@latest rvry-mcp setup
8
+ * npx --yes --package @rvry/mcp@latest rvry-mcp setup --token <value>
9
+ * npx --yes --package @rvry/mcp@latest rvry-mcp setup --client code (Claude Code only)
10
+ * npx --yes --package @rvry/mcp@latest rvry-mcp setup --client desktop (Claude Desktop only)
11
11
  */
12
12
  export declare function runSetup(): Promise<void>;
package/dist/setup.js CHANGED
@@ -4,10 +4,10 @@
4
4
  * Interactive setup: device auth flow (browser-based) or manual token paste.
5
5
  * Auto-detects Claude Code CLI and Claude Desktop, configures both.
6
6
  *
7
- * Usage: npx @rvry/mcp@latest setup
8
- * npx @rvry/mcp@latest setup --token <value>
9
- * npx @rvry/mcp@latest setup --client code (Claude Code only)
10
- * npx @rvry/mcp@latest setup --client desktop (Claude Desktop only)
7
+ * Usage: npx --yes --package @rvry/mcp@latest rvry-mcp setup
8
+ * npx --yes --package @rvry/mcp@latest rvry-mcp setup --token <value>
9
+ * npx --yes --package @rvry/mcp@latest rvry-mcp setup --client code (Claude Code only)
10
+ * npx --yes --package @rvry/mcp@latest rvry-mcp setup --client desktop (Claude Desktop only)
11
11
  */
12
12
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
13
13
  import { join, dirname } from 'path';
@@ -25,10 +25,12 @@ const TOKEN_REGEX = /^rvry_[0-9a-f]{32,}$/;
25
25
  const POLL_INTERVAL_MS = 3000;
26
26
  /** Max polling duration: 10 minutes */
27
27
  const POLL_TIMEOUT_MS = 10 * 60 * 1000;
28
+ /** Explicit launcher avoids fragile bin resolution from `npx @rvry/mcp`. */
29
+ const RVRY_NPX_ARGS = ['--yes', '--package', '@rvry/mcp', 'rvry-mcp'];
28
30
  /** RVRY MCP server config block (reused across Desktop + manual output) */
29
31
  const RVRY_SERVER_ENTRY = (token) => ({
30
32
  command: 'npx',
31
- args: ['@rvry/mcp'],
33
+ args: RVRY_NPX_ARGS,
32
34
  env: { RVRY_TOKEN: token },
33
35
  });
34
36
  // ── Utility functions ──────────────────────────────────────────────
@@ -206,7 +208,7 @@ function registerClaudeCode(token) {
206
208
  execSync('claude mcp remove rvry', { stdio: 'pipe' });
207
209
  }
208
210
  catch { /* not registered */ }
209
- execSync(`claude mcp add -e RVRY_TOKEN="${token}" -s user rvry -- npx @rvry/mcp`, { stdio: 'inherit' });
211
+ execSync(`claude mcp add -e RVRY_TOKEN="${token}" -s user rvry -- npx --yes --package @rvry/mcp rvry-mcp`, { stdio: 'inherit' });
210
212
  return 'ok';
211
213
  }
212
214
  catch {
@@ -262,7 +264,7 @@ function configureTomlMcp(configPath, token) {
262
264
  const block = [
263
265
  '[mcp_servers.rvry]',
264
266
  'command = "npx"',
265
- 'args = ["@rvry/mcp"]',
267
+ 'args = ["--yes", "--package", "@rvry/mcp", "rvry-mcp"]',
266
268
  '',
267
269
  '[mcp_servers.rvry.env]',
268
270
  `RVRY_TOKEN = "${token}"`,
@@ -922,7 +924,7 @@ export async function runSetup() {
922
924
  console.log(' Manual configuration:');
923
925
  console.log('');
924
926
  console.log(' Option A — Claude Code (if you install it later):');
925
- console.log(` claude mcp add -e RVRY_TOKEN="${token}" -s user rvry -- npx @rvry/mcp`);
927
+ console.log(` claude mcp add -e RVRY_TOKEN="${token}" -s user rvry -- npx --yes --package @rvry/mcp rvry-mcp`);
926
928
  console.log('');
927
929
  console.log(' Option B — JSON config (Claude Desktop, Anti-Gravity, etc.):');
928
930
  const manualConfig = { mcpServers: { RVRY: RVRY_SERVER_ENTRY(token) } };
@@ -935,7 +937,7 @@ export async function runSetup() {
935
937
  console.log('');
936
938
  console.log(' [mcp_servers.rvry]');
937
939
  console.log(' command = "npx"');
938
- console.log(' args = ["@rvry/mcp"]');
940
+ console.log(' args = ["--yes", "--package", "@rvry/mcp", "rvry-mcp"]');
939
941
  console.log('');
940
942
  console.log(' [mcp_servers.rvry.env]');
941
943
  console.log(` RVRY_TOKEN = "${token}"`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rvry/mcp",
3
- "version": "0.11.0",
3
+ "version": "0.11.2",
4
4
  "description": "RVRY reasoning depth enforcement (RDE) engine client.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -15,8 +15,8 @@
15
15
  "node": ">=18.0.0"
16
16
  },
17
17
  "scripts": {
18
- "build": "tsc",
19
- "prepublishOnly": "npm run build",
18
+ "build": "tsc && chmod 755 dist/index.js",
19
+ "prepack": "npm run build",
20
20
  "typecheck": "tsc --noEmit"
21
21
  },
22
22
  "dependencies": {