list_projects
Retrieve all projects in your Vaiz workspace to view and manage current initiatives.
Instructions
List all projects in the current space
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- src/tools.ts:207-214 (schema)Tool definition/schema for 'list_projects' — describes the tool name, description, and empty input schema (no parameters required). It's part of the hardcoded VAIZ_TOOLS array.
{ name: 'list_projects', description: 'List all projects in the current space', inputSchema: { type: 'object', properties: {}, }, }, - src/proxy-server.ts:460-551 (registration)Handler registration in proxy-server.ts. The 'list_projects' tool (like all tools) is made available via the tools/list handler which returns VAIZ_TOOLS merged with remote tools. The actual execution happens in the tools/call handler which proxies the request to the remote API.
private registerHandlers(): void { const lowLevel = this.mcpServer.server; lowLevel.setRequestHandler(ListToolsRequestSchema, async () => { this.log('← tools/list'); try { const result = (await this.proxyToRemote('tools/list')) as { tools?: Tool[]; }; const remoteTools = result?.tools ?? []; return { tools: mergeByName(VAIZ_TOOLS, remoteTools) }; } catch { const cached = this.responseCache.get('tools/list') as { tools?: Tool[]; } | undefined; return { tools: mergeByName(VAIZ_TOOLS, cached?.tools ?? []), }; } }); lowLevel.setRequestHandler(CallToolRequestSchema, async (request) => { this.log(`← tools/call ${request.params.name}`); const result = await this.proxyToRemote('tools/call', request.params); return result as { content: Array<{ type: string; text: string }> }; }); lowLevel.setRequestHandler(ListPromptsRequestSchema, async () => { this.log('← prompts/list'); try { const result = (await this.proxyToRemote('prompts/list')) as { prompts?: Prompt[]; }; const remotePrompts = result?.prompts ?? []; return { prompts: mergeByName(VAIZ_PROMPTS, remotePrompts) }; } catch { const cached = this.responseCache.get('prompts/list') as { prompts?: Prompt[]; } | undefined; return { prompts: mergeByName(VAIZ_PROMPTS, cached?.prompts ?? []), }; } }); lowLevel.setRequestHandler(GetPromptRequestSchema, async (request) => { this.log(`← prompts/get ${request.params.name}`); const result = await this.proxyToRemote('prompts/get', request.params); return result as { description?: string; messages: Array<{ role: 'user' | 'assistant'; content: { type: string; text: string }; }>; }; }); lowLevel.setRequestHandler( ListResourcesRequestSchema, async () => { this.log('← resources/list'); try { const result = (await this.proxyToRemote('resources/list')) as { resources?: Resource[]; }; const remoteResources = result?.resources ?? []; return { resources: mergeByUri(VAIZ_RESOURCES, remoteResources) }; } catch { const cached = this.responseCache.get('resources/list') as { resources?: Resource[]; } | undefined; return { resources: mergeByUri(VAIZ_RESOURCES, cached?.resources ?? []), }; } }, ); lowLevel.setRequestHandler( ReadResourceRequestSchema, async (request) => { this.log(`← resources/read ${request.params.uri}`); const result = await this.proxyToRemote( 'resources/read', request.params, ); return result as { contents: Array<{ uri: string; text?: string; mimeType?: string }>; }; }, ); } - src/proxy-server.ts:481-485 (handler)The call tool handler — when 'list_projects' is invoked by name, the request is forwarded via proxyToRemote to the remote Vaiz MCP API endpoint, which performs the actual project listing logic.
lowLevel.setRequestHandler(CallToolRequestSchema, async (request) => { this.log(`← tools/call ${request.params.name}`); const result = await this.proxyToRemote('tools/call', request.params); return result as { content: Array<{ type: string; text: string }> }; });