validate_comprehensive
Run comprehensive website validation across performance, accessibility, SEO, and security categories to identify issues and ensure compliance with web standards.
Instructions
Run comprehensive validation across all categories (performance, accessibility, SEO, security).
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| categories | No | Categories to test (default: all) | |
| Yes | Email for SSL Labs (required) | ||
| gtmetrixApiKey | No | ||
| pagespeedApiKey | No | ||
| url | Yes | ||
| waitForSSL | No | ||
| waveApiKey | No | ||
| wcagLevel | No |
Implementation Reference
- src/orchestrator/run-all.ts:212-258 (handler)Core handler function that executes the comprehensive validation by orchestrating tests across specified categories (performance, accessibility, SEO, security).export async function runComprehensive( url: string, options: { performance?: PerformanceTestOptions; accessibility?: AccessibilityTestOptions; security: SecurityTestOptions; categories?: Array<'performance' | 'accessibility' | 'seo' | 'security'>; } ): Promise<ComprehensiveResult> { const categories = options.categories || ['performance', 'accessibility', 'seo', 'security']; const result: ComprehensiveResult = { url, timestamp: new Date().toISOString(), summary: { categories_tested: categories, overall_health: 'good', critical_issues: 0, }, }; // Run selected categories if (categories.includes('performance') && options.performance) { result.performance = await runAllPerformance(url, options.performance); } if (categories.includes('accessibility') && options.accessibility) { result.accessibility = await runAllAccessibility(url, options.accessibility); result.summary.critical_issues += result.accessibility.axe?.critical || 0; } if (categories.includes('seo')) { result.seo = await runAllSEO(url); } if (categories.includes('security')) { result.security = await runAllSecurity(url, options.security); } // Calculate overall health if (result.summary.critical_issues > 5) { result.summary.overall_health = 'poor'; } else if (result.summary.critical_issues > 2) { result.summary.overall_health = 'fair'; } return result; }
- index.ts:435-455 (handler)MCP server request handler that parses input arguments using ComprehensiveArgsSchema and calls runComprehensive with prepared options.case 'validate_comprehensive': { const validatedArgs = ComprehensiveArgsSchema.parse(args); const result = await runComprehensive(validatedArgs.url, { performance: { pagespeed: { apiKey: validatedArgs.pagespeedApiKey }, gtmetrix: validatedArgs.gtmetrixApiKey ? { apiKey: validatedArgs.gtmetrixApiKey } : undefined, }, accessibility: { wave: validatedArgs.waveApiKey ? { apiKey: validatedArgs.waveApiKey } : undefined, axe: { wcagLevel: validatedArgs.wcagLevel }, }, security: { sslLabs: { email: validatedArgs.email, waitForComplete: validatedArgs.waitForSSL, }, }, categories: validatedArgs.categories, }); return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] }; }
- index.ts:104-113 (schema)Zod schema defining the input validation for validate_comprehensive tool arguments.const ComprehensiveArgsSchema = z.object({ url: z.string().url(), email: z.string().email(), categories: z.array(z.enum(['performance', 'accessibility', 'seo', 'security'])).optional(), pagespeedApiKey: z.string().optional(), gtmetrixApiKey: z.string().optional(), waveApiKey: z.string().optional(), wcagLevel: z.string().optional(), waitForSSL: z.boolean().optional(), });
- index.ts:286-307 (registration)Tool registration in the tools array, providing name, description, and input schema for the MCP ListTools response.{ name: 'validate_comprehensive', description: 'Run comprehensive validation across all categories (performance, accessibility, SEO, security).', inputSchema: { type: 'object', properties: { url: { type: 'string' }, email: { type: 'string', description: 'Email for SSL Labs (required)' }, categories: { type: 'array', items: { type: 'string', enum: ['performance', 'accessibility', 'seo', 'security'] }, description: 'Categories to test (default: all)' }, pagespeedApiKey: { type: 'string' }, gtmetrixApiKey: { type: 'string' }, waveApiKey: { type: 'string' }, wcagLevel: { type: 'string' }, waitForSSL: { type: 'boolean' }, }, required: ['url', 'email'], }, },