@rvry/mcp 0.4.3 → 0.6.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/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # @rvry/mcp
2
2
 
3
- The thin client for the **RVRY Reasoning Depth Enforcement (RDE) Engine**.
3
+ **Reasoning Depth Enforcement for LLMs.**
4
4
 
5
- RVRY is a structural constraint system that forces Large Language Models past their trained defaults and into a state of deep, absorptive synthesis. This package provides the MCP (Model Context Protocol) interface to use RVRY across all Claude surfaces.
5
+ RVRY is an MCP server that improves AI reliability by forcing your model to finish thinking before it answers. When your AI raises a question, RVRY remembers it. When it makes an assumption, RVRY flags it. When it tries to wrap up while those are still unaddressed, RVRY doesn't let it.
6
6
 
7
7
  ## Quick Start
8
8
 
@@ -12,24 +12,24 @@ npx @rvry/mcp setup
12
12
 
13
13
  The wizard will:
14
14
  1. Open your browser to sign in (or prompt for a token)
15
- 2. Auto-detect Claude Code and Claude Desktop on your machine
16
- 3. Configure both clients automatically
17
- 4. Install slash commands (`/deepthink`, `/problem-solve`)
15
+ 2. Auto-detect supported clients on your machine
16
+ 3. Configure them automatically
18
17
 
19
- That's it. Restart Claude Desktop if it was running, and RVRY is ready.
18
+ Supported clients: **Claude Code**, **Claude Desktop**, **Cursor**, **Gemini CLI**, **Codex**, **Anti-Gravity**
19
+
20
+ Restart any running clients after setup, and RVRY is ready.
20
21
 
21
22
  ### Options
22
23
 
23
24
  ```bash
24
- npx @rvry/mcp setup --token rvry_abc123 # Skip browser auth, use token directly
25
- npx @rvry/mcp setup --client code # Only configure Claude Code
26
- npx @rvry/mcp setup --client desktop # Only configure Claude Desktop
25
+ npx @rvry/mcp setup --token rvry_abc123 # Skip browser auth, use token directly
26
+ npx @rvry/mcp setup --client code # Only configure Claude Code
27
+ npx @rvry/mcp setup --client desktop # Only configure Claude Desktop
28
+ npx @rvry/mcp setup --accept-terms # Accept ToS non-interactively
27
29
  ```
28
30
 
29
31
  ### Manual Installation
30
32
 
31
- If you prefer to configure manually:
32
-
33
33
  **Claude Code:**
34
34
  ```bash
35
35
  claude mcp add -e RVRY_TOKEN=rvry_your_token -s user rvry -- npx @rvry/mcp
@@ -55,19 +55,31 @@ Config file locations:
55
55
  - Windows: `%APPDATA%\Claude\claude_desktop_config.json`
56
56
  - Linux: `~/.config/Claude/claude_desktop_config.json`
57
57
 
58
- ## Tools Provided
58
+ **Other MCP clients:**
59
+
60
+ Any client that supports MCP can use RVRY. Point it at `npx @rvry/mcp` with the environment variable `RVRY_TOKEN` set to your token.
59
61
 
60
- * **`RVRY_think`**: Generic entry point for reasoning depth through guided rounds and self-checks.
61
- * **`RVRY_deepthink`**: Extended analysis for high-stakes problems using pre-mortem failure analysis.
62
- * **`RVRY_problem_solve`**: Structured decision-making (Orient, Anticipate, Generate, Evaluate, Commit).
63
- * **`RVRY_challenge`**: Adversarial evaluation of proposals through causal analysis and edge-case auditing.
64
- * **`RVRY_meta`**: Reflective examination of defaults, shifts, and reasoning posture.
62
+ ## Tools
63
+
64
+ * **`RVRY_deepthink`** Extended analysis that catches assumptions, tests them, and doesn't let your AI wrap up until it's dealt with what it found.
65
+ * **`RVRY_problem_solve`** Structured decision-making that forces your AI through orientation, anticipation, and evaluation before it commits to a recommendation.
65
66
 
66
67
  ## How it Works
67
68
 
68
- RVRY does not "prompt" the model to think better. It **enforces** depth by:
69
- 1. **Blocking Escape Hatches**: Preventing the model from hedging, skipping over gaps, or closing prematurely.
70
- 2. **Imposing Structural Obligations**: Mapping the problem space and forcing the model to satisfy specific reasoning constraints before concluding.
71
- 3. **Inducing the Witness State**: Breaking the commercial "Helpfulness" frame to reach the model's latent reasoning capacity.
69
+ Same model. Same question. Different answer.
70
+
71
+ Your AI already has the reasoning capacity. RVRY forces it to use that capacity by holding it accountable — when it raises a question, that question has to get answered. When it makes an assumption, that assumption has to get tested. It keeps working not because it was told to think harder, but because it hasn't finished what it started.
72
+
73
+ On hard questions, a smaller model with RVRY outperforms a bigger model without it. The bottleneck was never how smart the AI is. It was whether the AI finished thinking.
74
+
75
+ [Learn more →](https://rvry.ai/how-it-works)
76
+
77
+ ## Pricing
78
+
79
+ | Plan | Runs | Price |
80
+ |------|------|-------|
81
+ | Free | 5/month | $0 |
82
+ | Pro | 25/month | $20/mo |
83
+ | Max | Unlimited | $100/mo |
72
84
 
73
- Learn more at [rvry.ai](https://rvry.ai).
85
+ Sign up at [rvry.ai](https://rvry.ai).
package/dist/client.d.ts CHANGED
@@ -2,7 +2,7 @@
2
2
  * RVRY MCP Client -- HTTP client for the RVRY engine /api/v1/think endpoint.
3
3
  */
4
4
  /** Valid tool names for the RVRY engine */
5
- export type RvryTool = 'deepthink' | 'problem_solve';
5
+ export type RvryTool = 'deepthink' | 'problem_solve' | 'think' | 'challenge' | 'meta';
6
6
  export interface ScopingQuestion {
7
7
  question: string;
8
8
  options: Array<{
package/dist/index.d.ts CHANGED
@@ -5,7 +5,7 @@
5
5
  * Thin client that proxies tool calls to the RVRY engine HTTP API.
6
6
  * Auth via RVRY_TOKEN env var (static rvry_ token).
7
7
  *
8
- * Exposes 2 tools (RVRY_deepthink, RVRY_problem_solve) + backward-compat aliases + 2 MCP Prompts.
8
+ * Exposes 5 tools (RVRY_deepthink, RVRY_problem_solve, RVRY_think, RVRY_challenge, RVRY_meta) + backward-compat aliases + 5 MCP Prompts.
9
9
  *
10
10
  * Also supports `npx @rvry/mcp setup` to install Claude Code commands.
11
11
  */
package/dist/index.js CHANGED
@@ -5,7 +5,7 @@
5
5
  * Thin client that proxies tool calls to the RVRY engine HTTP API.
6
6
  * Auth via RVRY_TOKEN env var (static rvry_ token).
7
7
  *
8
- * Exposes 2 tools (RVRY_deepthink, RVRY_problem_solve) + backward-compat aliases + 2 MCP Prompts.
8
+ * Exposes 5 tools (RVRY_deepthink, RVRY_problem_solve, RVRY_think, RVRY_challenge, RVRY_meta) + backward-compat aliases + 5 MCP Prompts.
9
9
  *
10
10
  * Also supports `npx @rvry/mcp setup` to install Claude Code commands.
11
11
  */
@@ -26,9 +26,15 @@ const TOOL_MAP = {
26
26
  // Primary (rvry_ prefixed)
27
27
  RVRY_deepthink: 'deepthink',
28
28
  RVRY_problem_solve: 'problem_solve',
29
+ RVRY_think: 'think',
30
+ RVRY_challenge: 'challenge',
31
+ RVRY_meta: 'meta',
29
32
  // Backward-compat aliases (unprefixed)
30
33
  deepthink: 'deepthink',
31
34
  problem_solve: 'problem_solve',
35
+ think: 'think',
36
+ challenge: 'challenge',
37
+ meta: 'meta',
32
38
  };
33
39
  const TOOL_DEFS = [
34
40
  {
@@ -80,6 +86,80 @@ const TOOL_DEFS = [
80
86
  required: ['input'],
81
87
  },
82
88
  },
89
+ {
90
+ name: 'RVRY_think',
91
+ description: 'Structured analysis for questions that need more depth than a quick answer. ' +
92
+ 'Runs 2-4 rounds with constraint tracking. ' +
93
+ 'Use for questions where you need to examine assumptions and consider alternatives. ' +
94
+ 'Call with your question to start, then send your analysis with the returned sessionId to continue.',
95
+ inputSchema: {
96
+ type: 'object',
97
+ properties: {
98
+ input: {
99
+ type: 'string',
100
+ description: 'The question to analyze (new session) or your analysis findings (continuation).',
101
+ },
102
+ sessionId: {
103
+ type: 'string',
104
+ description: 'Session ID for continuing an existing session. Omit to start a new session.',
105
+ },
106
+ skipScoping: {
107
+ type: 'boolean',
108
+ description: 'Skip the scoping questions phase and begin analysis immediately.',
109
+ },
110
+ },
111
+ required: ['input'],
112
+ },
113
+ },
114
+ {
115
+ name: 'RVRY_challenge',
116
+ description: 'Adversarial analysis that stress-tests a proposal or idea. ' +
117
+ 'Identifies weaknesses, tests assumptions, and surfaces failure modes. ' +
118
+ 'Runs 4-6 rounds with strict gates. ' +
119
+ 'Use when you need to find what\'s wrong with an idea before committing. ' +
120
+ 'Call with your proposal to start, then send your analysis with the returned sessionId to continue.',
121
+ inputSchema: {
122
+ type: 'object',
123
+ properties: {
124
+ input: {
125
+ type: 'string',
126
+ description: 'The proposal to challenge (new session) or your analysis findings (continuation).',
127
+ },
128
+ sessionId: {
129
+ type: 'string',
130
+ description: 'Session ID for continuing an existing session. Omit to start a new session.',
131
+ },
132
+ skipScoping: {
133
+ type: 'boolean',
134
+ description: 'Skip the scoping questions phase and begin analysis immediately.',
135
+ },
136
+ },
137
+ required: ['input'],
138
+ },
139
+ },
140
+ {
141
+ name: 'RVRY_meta',
142
+ description: 'Sustained metacognitive observation. ' +
143
+ 'Examines reasoning defaults, surfaces trained reflexes, and tracks what shifts under observation. ' +
144
+ 'Runs 3 rounds: observe, deepen, synthesize. ' +
145
+ 'Use when you want to examine how you\'re thinking, not just what you\'re thinking. ' +
146
+ 'Max tier only. ' +
147
+ 'Call with your topic to start, then send your reflection with the returned sessionId to continue.',
148
+ inputSchema: {
149
+ type: 'object',
150
+ properties: {
151
+ input: {
152
+ type: 'string',
153
+ description: 'The topic to reflect on (new session) or your reflection (continuation).',
154
+ },
155
+ sessionId: {
156
+ type: 'string',
157
+ description: 'Session ID for continuing an existing session. Omit to start a new session.',
158
+ },
159
+ },
160
+ required: ['input'],
161
+ },
162
+ },
83
163
  ];
84
164
  /** Strip response fields based on status for context-efficient MCP responses */
85
165
  function stripResponse(result, question) {
@@ -201,6 +281,21 @@ async function main() {
201
281
  description: 'Structured decision-making for problems with multiple options',
202
282
  arguments: [{ name: 'problem', description: 'The problem or decision to analyze', required: true }],
203
283
  },
284
+ {
285
+ name: 'RVRY_think',
286
+ description: 'Structured analysis for questions needing more depth',
287
+ arguments: [{ name: 'question', description: 'The question to analyze', required: true }],
288
+ },
289
+ {
290
+ name: 'RVRY_challenge',
291
+ description: 'Adversarial analysis that stress-tests a proposal',
292
+ arguments: [{ name: 'proposal', description: 'The proposal or idea to challenge', required: true }],
293
+ },
294
+ {
295
+ name: 'RVRY_meta',
296
+ description: 'Sustained metacognitive observation (Max tier only)',
297
+ arguments: [{ name: 'topic', description: 'The topic or context to reflect on', required: true }],
298
+ },
204
299
  ],
205
300
  }));
206
301
  server.setRequestHandler(GetPromptRequestSchema, async (request) => {
@@ -208,6 +303,9 @@ async function main() {
208
303
  const promptMap = {
209
304
  RVRY_deepthink: `Use the RVRY_deepthink tool to analyze this question in depth: ${args?.question ?? ''}`,
210
305
  RVRY_problem_solve: `Use the RVRY_problem_solve tool to work through this decision: ${args?.problem ?? ''}`,
306
+ RVRY_think: `Use the RVRY_think tool to analyze this question: ${args?.question ?? ''}`,
307
+ RVRY_challenge: `Use the RVRY_challenge tool to stress-test this proposal: ${args?.proposal ?? ''}`,
308
+ RVRY_meta: `Use the RVRY_meta tool to reflect on this topic: ${args?.topic ?? ''}`,
211
309
  };
212
310
  const text = promptMap[name] ?? `Unknown prompt: ${name}`;
213
311
  return {
@@ -221,7 +319,7 @@ async function main() {
221
319
  });
222
320
  const transport = new StdioServerTransport();
223
321
  await server.connect(transport);
224
- console.error('[rvry-mcp] Connected via stdio. Tools: RVRY_deepthink, RVRY_problem_solve');
322
+ console.error('[rvry-mcp] Connected via stdio. Tools: RVRY_deepthink, RVRY_problem_solve, RVRY_think, RVRY_challenge, RVRY_meta');
225
323
  }
226
324
  // Export internals for testing
227
325
  export { TOOL_MAP, TOOL_DEFS, stripResponse, questionCache };
package/dist/setup.js CHANGED
@@ -456,26 +456,6 @@ const CLIENT_REGISTRY = [
456
456
  configure: registerGeminiCLI,
457
457
  notInstalledHint: 'Not installed (https://github.com/google-gemini/gemini-cli)',
458
458
  },
459
- {
460
- name: 'Windsurf',
461
- id: 'windsurf',
462
- defaultSelected: false,
463
- detect: () => {
464
- if (platform() === 'darwin' && existsSync('/Applications/Windsurf.app'))
465
- return true;
466
- if (existsSync(join(homedir(), '.codeium', 'windsurf', 'mcp_config.json')))
467
- return true;
468
- try {
469
- const cmd = platform() === 'win32' ? 'where windsurf' : 'which windsurf';
470
- execSync(cmd, { stdio: 'pipe' });
471
- return true;
472
- }
473
- catch { /* not on PATH */ }
474
- return false;
475
- },
476
- configure: (token) => configureJsonMcp(join(homedir(), '.codeium', 'windsurf', 'mcp_config.json'), token),
477
- notInstalledHint: 'Not installed (https://windsurf.com)',
478
- },
479
459
  {
480
460
  name: 'Codex',
481
461
  id: 'codex',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rvry/mcp",
3
- "version": "0.4.3",
3
+ "version": "0.6.0",
4
4
  "description": "RVRY reasoning depth enforcement (RDE) engine client.",
5
5
  "type": "module",
6
6
  "bin": {