Sign In

@clervo/mcp

Package Overview
Dependencies
Maintainers
1
Versions
8
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@clervo/mcp - npm Package Compare versions

Comparing version
0.4.1
to
0.5.0
+6
-1
dist/run.js
#!/usr/bin/env node
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
import { createClervoMcpServer } from './server.js';
const server = createClervoMcpServer();
const argv = process.argv.slice(2);
const profileIndex = argv.indexOf('--profile');
const inlineProfile = argv.find((value) => value.startsWith('--profile='))?.slice('--profile='.length);
const profile = inlineProfile ?? (profileIndex >= 0 ? argv[profileIndex + 1] : undefined);
const autoPay = argv.includes('--auto-pay') || process.env.CLERVO_AUTO_PAY === 'true';
const server = createClervoMcpServer({ ...(profile === undefined ? {} : { profile }), autoPay });
const transport = new StdioServerTransport();

@@ -6,0 +11,0 @@ try {

+1
-1

@@ -1,1 +0,1 @@

{"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEpD,MAAM,MAAM,GAAG,qBAAqB,EAAE,CAAC;AACvC,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAE7C,IAAI,CAAC;IACH,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC;IACzG,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC"}
{"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEpD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AAC/C,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AACvG,MAAM,OAAO,GAAG,aAAa,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAC1F,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,MAAM,CAAC;AACtF,MAAM,MAAM,GAAG,qBAAqB,CAAC,EAAE,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;AACjG,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAE7C,IAAI,CAAC;IACH,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC;IACzG,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC"}
import { type ClervoAiRequest, type ClervoSearchRequest } from '@clervo/sdk';
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
import { ClervoConnect, type Registry } from '@clervo/router';
export type ClervoMcpProfile = 'full' | 'research' | 'ai' | 'prediction' | 'crypto' | 'sandbox';
export declare const CLERVO_MCP_TOOLS: readonly [Readonly<{

@@ -7,5 +9,2 @@ name: "search_web";

}>, Readonly<{
name: "search_answer";
operationId: "search.answer";
}>, Readonly<{
name: "models_list";

@@ -16,2 +15,20 @@ operationId: "ai.catalog";

operationId: "ai.execute";
}>, Readonly<{
name: "clervo_execute";
operationId: "connect.execute";
}>, Readonly<{
name: "connect_status";
operationId: "connect.status";
}>, Readonly<{
name: "spend_limits";
operationId: "connect.limits";
}>, Readonly<{
name: "local_usage";
operationId: "connect.usage";
}>, Readonly<{
name: "reconcile";
operationId: "connect.reconcile";
}>, Readonly<{
name: "doctor";
operationId: "connect.doctor";
}>];

@@ -53,2 +70,8 @@ export interface ClervoMcpClient {

}
export interface ExecuteToolInput {
productId: string;
body: Record<string, unknown>;
idempotencyKey?: string | undefined;
paid?: boolean | undefined;
}
export interface ToolResult {

@@ -67,6 +90,17 @@ [key: string]: unknown;

ai_execute(input: AiToolInput): Promise<ToolResult>;
clervo_execute(input: ExecuteToolInput): Promise<ToolResult>;
connect_status(): Promise<ToolResult>;
spend_limits(): Promise<ToolResult>;
local_usage(): Promise<ToolResult>;
reconcile(): Promise<ToolResult>;
doctor(): Promise<ToolResult>;
};
export declare function createConnectToolHandlers(client: ClervoMcpClient, connect: ClervoConnect, profile: ClervoMcpProfile, legacyClient?: boolean): ReturnType<typeof createToolHandlers>;
export declare function createClervoMcpServer(options?: {
client?: ClervoMcpClient;
baseUrl?: string;
profile?: string;
autoPay?: boolean;
env?: NodeJS.ProcessEnv;
registry?: Registry;
}): McpServer;
import { ClervoClient, ClervoPaymentRequiredError, ClervoProblemError, recoveryActionFor, } from '@clervo/sdk';
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
import { z } from 'zod';
import { ClervoConnect, RouterError } from '@clervo/router';
const PROFILE_FAMILIES = Object.freeze({
full: Object.freeze(['search', 'ai', 'prediction', 'crypto_intelligence', 'sandbox']),
research: Object.freeze(['search']),
ai: Object.freeze(['ai']),
prediction: Object.freeze(['prediction']),
crypto: Object.freeze(['crypto_intelligence']),
sandbox: Object.freeze(['sandbox']),
});
function profileName(value) {
if (value === undefined || value === '')
return 'full';
if (Object.hasOwn(PROFILE_FAMILIES, value))
return value;
throw new TypeError(`unknown_clervo_mcp_profile:${value}`);
}
export const CLERVO_MCP_TOOLS = Object.freeze([
Object.freeze({ name: 'search_web', operationId: 'search.web' }),
Object.freeze({ name: 'search_answer', operationId: 'search.answer' }),
Object.freeze({ name: 'models_list', operationId: 'ai.catalog' }),
Object.freeze({ name: 'ai_execute', operationId: 'ai.execute' }),
Object.freeze({ name: 'clervo_execute', operationId: 'connect.execute' }),
Object.freeze({ name: 'connect_status', operationId: 'connect.status' }),
Object.freeze({ name: 'spend_limits', operationId: 'connect.limits' }),
Object.freeze({ name: 'local_usage', operationId: 'connect.usage' }),
Object.freeze({ name: 'reconcile', operationId: 'connect.reconcile' }),
Object.freeze({ name: 'doctor', operationId: 'connect.doctor' }),
]);

@@ -15,2 +36,8 @@ function text(value) {

const recovery = recoveryActionFor(error);
if (error instanceof RouterError) {
return {
content: [{ type: 'text', text: JSON.stringify({ error: error.code, detail: error.message, ...(recovery === undefined ? {} : { recovery }) }) }],
isError: true,
};
}
if (error instanceof ClervoPaymentRequiredError) {

@@ -52,2 +79,10 @@ const payable = error.problem.payable === true || Array.isArray(error.problem.accepts);

export function createToolHandlers(client) {
const connect = new ClervoConnect({ surface: 'mcp', autoPay: false });
return createConnectToolHandlers(client, connect, 'full', true);
}
function familyFor(productId) {
const family = productId.split('.', 1)[0] ?? '';
return family === 'crypto' ? 'crypto_intelligence' : family;
}
export function createConnectToolHandlers(client, connect, profile, legacyClient = false) {
const execute = async (productId, input) => {

@@ -57,2 +92,3 @@ try {

query: input.query,
synthesize: productId === 'search.answer',
...(input.maxResults === undefined ? {} : { maxResults: input.maxResults }),

@@ -67,3 +103,3 @@ ...(input.language === undefined ? {} : { language: input.language }),

const value = productId === 'search.web'
? await client.search.web(request, options)
? legacyClient ? await client.search.web(request, options) : await connect.execute('search.web', request, input.idempotencyKey, { paid: input.mode === 'challenge' })
: await client.search.answer(request, options);

@@ -89,3 +125,3 @@ return text(value);

try {
return text(await client.ai.execute({
const body = {
model: input.model,

@@ -95,3 +131,7 @@ input: input.input,

...(input.maximumReasoningTokens === undefined ? {} : { maximumReasoningTokens: input.maximumReasoningTokens }),
}, input.idempotencyKey === undefined ? {} : { idempotencyKey: input.idempotencyKey }));
};
const productId = input.input.kind === 'embedding' ? 'ai.embed' : input.input.kind === 'image' ? 'ai.image' : input.input.kind === 'speech' ? 'ai.speech' : input.input.kind === 'video' ? 'ai.video' : input.input.kind === 'music' ? 'ai.music' : input.input.kind === 'virtual_try_on' ? 'ai.virtual_try_on' : 'ai.chat';
return text(legacyClient
? await client.ai.execute(body, input.idempotencyKey === undefined ? {} : { idempotencyKey: input.idempotencyKey })
: await connect.execute(productId, body, input.idempotencyKey));
}

@@ -102,2 +142,31 @@ catch (error) {

},
clervo_execute: async (input) => {
try {
const registry = await connect.registry();
const allowedFamilies = PROFILE_FAMILIES[profile];
const family = familyFor(input.productId);
const capability = registry.capabilities.find(({ productId }) => productId === input.productId);
if (!allowedFamilies.includes(family) || capability === undefined || !capability.paidCallable)
throw new RouterError('operation_not_served_in_profile', `${input.productId} is not currently served in the ${profile} profile`);
return text(await connect.execute(input.productId, input.body, input.idempotencyKey, { paid: input.paid === true }));
}
catch (error) {
return failure(error);
}
},
connect_status: async () => text(connect.status()),
spend_limits: async () => text(connect.limits()),
local_usage: async () => text(connect.usage()),
reconcile: async () => { try {
return text(await connect.reconcile());
}
catch (error) {
return failure(error);
} },
doctor: async () => { try {
return text(await connect.doctor());
}
catch (error) {
return failure(error);
} },
});

@@ -121,32 +190,52 @@ }

export function createClervoMcpServer(options = {}) {
const profile = profileName(options.profile ?? process.env.CLERVO_MCP_PROFILE);
const baseUrl = options.baseUrl ?? process.env.CLERVO_BASE_URL ?? 'https://api.clervo.dev';
const client = options.client ?? new ClervoClient({ baseUrl });
const server = new McpServer({ name: 'clervo', version: '0.4.1' });
const handlers = createToolHandlers(client);
server.registerTool('search_web', {
title: 'Clervo web evidence preview',
description: 'Runs the live bounded free Search route or obtains its exact paid challenge without signing.',
inputSchema,
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true },
}, async (input) => handlers.search_web(input));
server.registerTool('search_answer', {
title: 'Clervo cited answer preview',
description: 'Runs cited synthesis with the product identity fixed by the tool contract; the MCP server never signs or pays.',
inputSchema,
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true },
}, async (input) => handlers.search_answer(input));
server.registerTool('models_list', {
title: 'List the live Clervo AI catalog',
description: 'Returns stable provider-neutral model IDs, capabilities, health, availability, free/paid state, pricing, and commerce metadata.',
inputSchema: {},
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true },
}, async () => handlers.models_list());
server.registerTool('ai_execute', {
title: 'Execute a normalized Clervo AI request',
description: 'Executes a free model or returns the exact paid challenge without signing or paying. The tool never creates a wallet or authorizes payment.',
inputSchema: aiInputSchema,
const connectEnv = options.env ?? { ...process.env, CLERVO_API_ORIGIN: baseUrl };
const connect = new ClervoConnect({ surface: 'mcp', autoPay: options.autoPay === true, env: connectEnv });
const server = new McpServer({ name: `clervo-${profile}`, version: '0.5.0' });
const handlers = createConnectToolHandlers(client, connect, profile);
if (PROFILE_FAMILIES[profile].includes('search'))
server.registerTool('search_web', {
title: 'Clervo web evidence preview',
description: 'Runs the live bounded free Search route or obtains its exact paid challenge without signing.',
inputSchema,
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true },
}, async (input) => handlers.search_web(input));
if (PROFILE_FAMILIES[profile].includes('ai'))
server.registerTool('models_list', {
title: 'List the live Clervo AI catalog',
description: 'Returns stable provider-neutral model IDs, capabilities, health, availability, free/paid state, pricing, and commerce metadata.',
inputSchema: {},
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true },
}, async () => handlers.models_list());
if (PROFILE_FAMILIES[profile].includes('ai'))
server.registerTool('ai_execute', {
title: 'Execute a normalized Clervo AI request',
description: 'Executes a free model or returns the exact paid challenge without signing or paying. The tool never creates a wallet or authorizes payment.',
inputSchema: aiInputSchema,
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
}, async (input) => handlers.ai_execute(input));
server.registerTool('clervo_execute', {
title: `Execute a currently served Clervo ${profile} operation`,
description: `Generic execution for the ${profile} profile. Runtime registry truth is checked on every call. Automatic payment is ${connect.autoPay ? 'enabled within local limits' : 'disabled; payable calls return a quote'}.`,
inputSchema: {
productId: z.string().trim().min(3).max(160),
body: z.record(z.string(), z.unknown()),
idempotencyKey: z.string().regex(/^[A-Za-z0-9_.-]{8,128}$/u).optional(),
paid: z.boolean().default(false).describe('For a product with a free path, explicitly request its paid path. Signing still requires local --auto-pay opt-in.'),
},
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
}, async (input) => handlers.ai_execute(input));
}, async (input) => handlers.clervo_execute(input));
for (const [name, title, handler] of [
['connect_status', 'Clervo wallet and shared Connect status', handlers.connect_status],
['spend_limits', 'Clervo buyer-side spend limits', handlers.spend_limits],
['local_usage', 'Clervo durable local usage', handlers.local_usage],
['reconcile', 'Reconcile unresolved Clervo operations without a new payment', handlers.reconcile],
['doctor', 'Diagnose the local Clervo Connect installation', handlers.doctor],
]) {
server.registerTool(name, { title, description: title, inputSchema: {}, annotations: { readOnlyHint: name !== 'reconcile', destructiveHint: false, idempotentHint: true, openWorldHint: name === 'doctor' } }, async () => handler());
}
return server;
}
//# sourceMappingURL=server.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
{
"name": "@clervo/mcp",
"version": "0.4.1",
"description": "MCP tools for live Clervo Search and provider-neutral AI.",
"version": "0.5.0",
"description": "Clervo Connect MCP profiles with one local wallet, live served products, bounded x402, reconciliation, usage, and diagnostics.",
"license": "MIT",

@@ -46,3 +46,4 @@ "type": "module",

"dependencies": {
"@clervo/sdk": "0.4.1",
"@clervo/sdk": "0.5.0",
"@clervo/router": "0.3.0",
"@modelcontextprotocol/sdk": "1.30.0",

@@ -49,0 +50,0 @@ "zod": "4.4.3"

+23
-15
# `@clervo/mcp`
Stdio MCP server for the live Clervo API. It exposes four bounded tools:
Stdio MCP server for Clervo Connect. A clean one-command install uses the public
production origin and the same local wallet, limits, receipts and unresolved
operation state as every other Connect surface:
- `search_web` → raw cited Search;
- `search_answer` → cited synthesis;
- `models_list` → the authoritative provider-neutral AI catalog;
- `ai_execute` → normalized free execution or an exact paid challenge.
```json
{
"mcpServers": {
"clervo": {
"command": "npx",
"args": ["-y", "@clervo/mcp"]
}
"clervo": { "command": "npx", "args": ["-y", "@clervo/mcp"] }
}

@@ -21,13 +15,27 @@ }

Claude Code:
```sh
claude mcp add clervo -s user -- npx -y @clervo/mcp
```
The default origin is `https://api.clervo.dev`. Set `CLERVO_BASE_URL` only for
another HTTPS deployment or loopback development.
`models_list` publishes stable IDs, capabilities, health, availability,
free/paid state, pricing, and commerce metadata. `ai_execute` can run a free
model. For a paid model it returns the exact `402` challenge as an MCP error; it
never creates a wallet, signs, pays, or retries a payment on the agent's behalf.
Use a stable idempotency key for safe recovery.
Use `--profile research|ai|prediction|crypto|sandbox|full` to load only the
schemas relevant to an agent. Profiles are checked against the live registry on
every execution. RPC is not exposed while runtime truth reports it unavailable.
Alongside useful Search and AI tools, `clervo_execute` safely exposes operations
served in the selected profile. `connect_status`, `spend_limits`, `local_usage`,
`reconcile`, and `doctor` expose shared local state without wallet secrets.
Automatic payment is off by default. `--auto-pay` is an explicit local opt-in;
even then, every quote is bounded by the Router's per-operation and daily
ceilings before signing. Unknown settlement blocks MCP and every other Connect
surface. Reconciliation and same-key replay carry no fresh payment
authorization, and the server never blindly retries.
The package writes MCP protocol messages to stdout and operational failures to
stderr only. This client code is MIT licensed; use of the hosted Clervo service
remains subject to its service terms.