compare_specifications
Compare 3GPP telecommunications specifications across architecture, procedures, evolution, and implementation differences to identify key variations and requirements.
Instructions
Compare multiple 3GPP specifications across various criteria including architecture, procedures, evolution, and implementation differences.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| comparison_criteria | No | Specific criteria to compare (e.g., ["architecture", "procedures", "interfaces", "evolution"]) | |
| format | No | Response format - agent_ready provides structured JSON for AI agents | agent_ready |
| include_evolution_analysis | No | Include analysis of specification evolution across releases (default: true) | |
| specification_ids | Yes | Array of specification IDs to compare (e.g., ["TS 32.251", "TS 32.290"]) |
Implementation Reference
- Main handler function implementing the tool logic: input validation, API call to compareSpecifications, response formatting based on 'format' parameter (agent_ready, summary, detailed), and error handling.async execute(args: CompareSpecificationsArgs) { try { if (args.specification_ids.length < 2) { throw new Error('At least 2 specifications are required for comparison'); } const comparison = await this.apiManager.compareSpecifications(args.specification_ids); const format = args.format || 'agent_ready'; switch (format) { case 'agent_ready': return { content: [ { type: 'text', text: JSON.stringify(this.formatForAgent(comparison, args), null, 2) } ] }; case 'summary': return { content: [ { type: 'text', text: this.formatSummary(comparison, args) } ] }; case 'detailed': default: return { content: [ { type: 'text', text: this.formatDetailed(comparison, args) } ] }; } } catch (error) { return { content: [ { type: 'text', text: `Error comparing specifications: ${error instanceof Error ? error.message : 'Unknown error'}` } ], isError: true }; } }
- Tool definition including name, description, and input schema with properties (specification_ids required array min2 max5, optional comparison_criteria, include_evolution_analysis boolean, format enum), used for MCP tool registration and validation.getDefinition() { return { name: 'compare_specifications', description: 'Compare multiple 3GPP specifications across various criteria including architecture, procedures, evolution, and implementation differences.', inputSchema: { type: 'object', properties: { specification_ids: { type: 'array', items: { type: 'string' }, description: 'Array of specification IDs to compare (e.g., ["TS 32.251", "TS 32.290"])', minItems: 2, maxItems: 5 }, comparison_criteria: { type: 'array', items: { type: 'string' }, description: 'Specific criteria to compare (e.g., ["architecture", "procedures", "interfaces", "evolution"])' }, include_evolution_analysis: { type: 'boolean', description: 'Include analysis of specification evolution across releases (default: true)', default: true }, format: { type: 'string', enum: ['detailed', 'summary', 'agent_ready'], description: 'Response format - agent_ready provides structured JSON for AI agents', default: 'agent_ready' } }, required: ['specification_ids'] } }; }
- TypeScript interface defining the input arguments for the compare_specifications tool, matching the inputSchema.export interface CompareSpecificationsArgs { specification_ids: string[]; comparison_criteria?: string[]; include_evolution_analysis?: boolean; format?: 'detailed' | 'summary' | 'agent_ready'; }
- src/index.ts:76-82 (registration)Initialization of tool instances including CompareSpecificationsTool with APIManager dependency injection.private initializeComponents() { // Initialize V3 data access tools this.searchTool = new SearchSpecificationsTool(this.apiManager); this.detailsTool = new GetSpecificationDetailsTool(this.apiManager); this.compareTool = new CompareSpecificationsTool(this.apiManager); this.requirementsTool = new FindImplementationRequirementsTool(this.apiManager); }
- src/index.ts:107-108 (registration)Registration in the CallToolRequestSchema handler: switch case dispatching to compareTool.execute for 'compare_specifications' tool calls.case 'compare_specifications': return await this.compareTool.execute(args as unknown as CompareSpecificationsArgs);