consult_architecture
Submit architectural questions to receive expert guidance on system design, scalability, and technical decision-making. Provide optional context for tailored recommendations.
Instructions
Consult GLM-4.6 for expert software architecture guidance, system design patterns, scalability strategies, and technical decision-making. Use this for high-level architectural questions requiring deep technical expertise.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | The architectural question or problem requiring expert consultation | |
| context | No | Optional additional context about the system, requirements, or constraints |
Implementation Reference
- src/index.ts:142-153 (handler)Handler that extracts 'query' and 'context' arguments and delegates to glmClient.consultArchitecture().
case 'consult_architecture': { const { query, context } = args as { query: string; context?: string }; const response = await glmClient.consultArchitecture(query, context); return { content: [ { type: 'text', text: response, }, ], }; } - src/index.ts:26-41 (schema)Tool definition with inputSchema requiring 'query' (string) and optional 'context' (string).
name: 'consult_architecture', description: 'Consult GLM-4.6 for expert software architecture guidance, system design patterns, scalability strategies, and technical decision-making. Use this for high-level architectural questions requiring deep technical expertise.', inputSchema: { type: 'object', properties: { query: { type: 'string', description: 'The architectural question or problem requiring expert consultation', }, context: { type: 'string', description: 'Optional additional context about the system, requirements, or constraints', }, }, required: ['query'], }, - src/index.ts:24-42 (registration)Tool is registered in the 'tools' array (line 24) and listed via ListToolsRequestSchema handler at line 133.
const tools: Tool[] = [ { name: 'consult_architecture', description: 'Consult GLM-4.6 for expert software architecture guidance, system design patterns, scalability strategies, and technical decision-making. Use this for high-level architectural questions requiring deep technical expertise.', inputSchema: { type: 'object', properties: { query: { type: 'string', description: 'The architectural question or problem requiring expert consultation', }, context: { type: 'string', description: 'Optional additional context about the system, requirements, or constraints', }, }, required: ['query'], }, }, - src/glm-client.ts:68-122 (helper)Core helper method in GLMClient that builds the system prompt, constructs the GLM messages, calls the GLM-4.6 chat completions API, and returns the response content.
async consultArchitecture(query: string, context?: string): Promise<string> { const systemPrompt = `You are an elite software architecture consultant specializing in enterprise-grade system design, scalability patterns, security architecture, and technical decision-making. Your expertise includes: - Distributed systems architecture and microservices design - Cloud-native patterns and containerization strategies - Database architecture and data modeling - API design (REST, GraphQL, gRPC) - Security architecture and threat modeling - Performance optimization and scalability - DevOps and CI/CD pipeline architecture - Modern frontend and backend frameworks - System integration patterns Provide concise, actionable architectural guidance with enterprise-grade best practices. Focus on technical accuracy, scalability, maintainability, and security.`; const messages: GLMMessage[] = [ { role: 'system', content: systemPrompt }, ]; if (context) { messages.push({ role: 'user', content: `Context:\n${context}\n\nArchitectural Query:\n${query}`, }); } else { messages.push({ role: 'user', content: query }); } const request: GLMRequest = { model: this.model, messages, temperature: 0.7, top_p: 0.9, max_tokens: 4096, stream: false, }; try { const response = await this.client.post<GLMResponse>('/chat/completions', request); if (!response.data.choices || response.data.choices.length === 0) { throw new Error('GLM-4.6 returned empty response'); } return response.data.choices[0].message.content; } catch (error) { if (axios.isAxiosError(error)) { const status = error.response?.status; const message = error.response?.data?.error?.message || error.message; throw new Error(`GLM-4.6 API Error (${status}): ${message}`); } throw error; } }