diff --git a/packages/zai-cli/src/commands/code.ts b/packages/zai-cli/src/commands/code.ts index 9913950..7d27b95 100644 --- a/packages/zai-cli/src/commands/code.ts +++ b/packages/zai-cli/src/commands/code.ts @@ -91,7 +91,7 @@ Options: Examples: zai-cli code run ./chain.ts - zai-cli code eval "const r = await zai.search.webSearchPrime({search_query:'ZAI'}); return r;" + zai-cli code eval "const r = await zai.search.web_search_prime({search_query:'ZAI'}); return r;" zai-cli code interfaces zai-cli code prompt `.trim(); diff --git a/packages/zai-cli/src/commands/tools.ts b/packages/zai-cli/src/commands/tools.ts index e8854b4..7b410bb 100644 --- a/packages/zai-cli/src/commands/tools.ts +++ b/packages/zai-cli/src/commands/tools.ts @@ -194,7 +194,7 @@ Options: --no-vision Skip vision MCP server (faster startup) Examples: - zai-cli call zai.search.webSearchPrime --json '{"search_query":"LLM tools"}' + zai-cli call zai.search.web_search_prime --json '{"search_query":"LLM tools"}' zai-cli call zai.reader.webReader --file ./args.json echo '{"repo_name":"owner/repo"}' | zai-cli call zai.zread.get_repo_structure --stdin `.trim(); diff --git a/packages/zai-cli/src/lib/mcp-client.ts b/packages/zai-cli/src/lib/mcp-client.ts index 49dbd4b..9d3bd3c 100644 --- a/packages/zai-cli/src/lib/mcp-client.ts +++ b/packages/zai-cli/src/lib/mcp-client.ts @@ -416,7 +416,7 @@ export class ZaiMcpClient { args.location = params.location; } - return this.callTool(getMcpToolName('search', 'webSearchPrime'), args); + return this.callTool(getMcpToolName('search', 'web_search_prime'), args); } // ============ Web Reader Methods ============ diff --git a/packages/zai-cli/tests/mcp-client.test.js b/packages/zai-cli/tests/mcp-client.test.js new file mode 100644 index 0000000..fd7c7a8 --- /dev/null +++ b/packages/zai-cli/tests/mcp-client.test.js @@ -0,0 +1,29 @@ +import { test } from 'node:test'; +import assert from 'node:assert/strict'; + +import { ZaiMcpClient } from '../dist/lib/mcp-client.js'; + +test('webSearch calls the discovered snake-case search tool', async () => { + const client = new ZaiMcpClient({ enableVision: false }); + let called; + client.callTool = async (toolName, args) => { + called = { toolName, args }; + return []; + }; + + const result = await client.webSearch({ + query: 'hello world', + recencyFilter: 'oneWeek', + location: 'us', + }); + + assert.deepEqual(result, []); + assert.deepEqual(called, { + toolName: 'zai.search.web_search_prime', + args: { + search_query: 'hello world', + search_recency_filter: 'oneWeek', + location: 'us', + }, + }); +}); diff --git a/packages/zai-cli/tests/mcp-live.test.js b/packages/zai-cli/tests/mcp-live.test.js index a24fdb9..13057f6 100644 --- a/packages/zai-cli/tests/mcp-live.test.js +++ b/packages/zai-cli/tests/mcp-live.test.js @@ -72,7 +72,7 @@ describeLive('MCP Live Tests', () => { it('includes expected core tools', () => { const expected = [ - getMcpToolName('search', 'webSearchPrime'), + getMcpToolName('search', 'web_search_prime'), getMcpToolName('reader', 'webReader'), getMcpToolName('zread', 'search_doc'), getMcpToolName('zread', 'get_repo_structure'), @@ -115,8 +115,8 @@ describeLive('MCP Live Tests', () => { const handlers = new Map(); - handlers.set(getMcpToolName('search', 'webSearchPrime'), async () => - client.callToolRaw(getMcpToolName('search', 'webSearchPrime'), { + handlers.set(getMcpToolName('search', 'web_search_prime'), async () => + client.callToolRaw(getMcpToolName('search', 'web_search_prime'), { search_query: 'hello world', search_recency_filter: 'oneMonth', content_size: 'medium', diff --git a/skills/zai-cli/references/advanced.md b/skills/zai-cli/references/advanced.md index fb6d9d3..95b60f8 100644 --- a/skills/zai-cli/references/advanced.md +++ b/skills/zai-cli/references/advanced.md @@ -15,14 +15,14 @@ Use these when you need schemas or direct tool invocation. ```bash zai-cli tools --filter vision --full zai-cli tool zai.zread.search_doc --no-vision -zai-cli call zai.search.webSearchPrime --json '{"search_query":"LLM tools"}' +zai-cli call zai.search.web_search_prime --json '{"search_query":"LLM tools"}' ``` ## Code Mode (TypeScript tool chains) ```bash zai-cli code run ./chain.ts -zai-cli code eval "await call('zai.search.webSearchPrime', { search_query: 'zai cli' })" +zai-cli code eval "await call('zai.search.web_search_prime', { search_query: 'zai cli' })" zai-cli code interfaces ```