validate_all_performance
Run comprehensive website performance tests using PageSpeed Insights, WebPageTest, and GTmetrix to analyze and validate site speed metrics.
Instructions
Run all available performance tests (PageSpeed Insights + optionally WebPageTest + optionally GTmetrix).
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| gtmetrixApiKey | No | Optional GTmetrix API key | |
| pagespeedApiKey | No | Optional PageSpeed API key | |
| url | Yes | ||
| webpagetestEnabled | No | Run WebPageTest via browser automation (default: false) | |
| webpagetestWaitForResults | No | Wait for WebPageTest to complete (default: false) |
Implementation Reference
- src/orchestrator/run-all.ts:90-125 (handler)Core handler function that orchestrates all performance validation tools: always runs PageSpeed Insights, optionally WebPageTest and GTmetrix based on options.export async function runAllPerformance( url: string, options: PerformanceTestOptions = {} ): Promise<AllPerformanceResult> { const results: AllPerformanceResult = { url, timestamp: new Date().toISOString(), summary: { tools_run: [], }, }; // Always run PageSpeed (free API) results.pagespeed = await analyzePageSpeed(url, options.pagespeed || {}); results.summary.tools_run.push('pagespeed'); // Optional: WebPageTest (free, browser automation) if (options.webpagetest) { results.webpagetest = await analyzeWebPageTest(url, options.webpagetest); results.summary.tools_run.push('webpagetest'); } // Optional: GTmetrix (requires API key) if (options.gtmetrix?.apiKey) { results.gtmetrix = await analyzeGTmetrix(url, options.gtmetrix); results.summary.tools_run.push('gtmetrix'); } // Calculate average score const scores = [results.pagespeed?.performance_score].filter(s => s !== undefined) as number[]; if (scores.length > 0) { results.summary.avg_performance_score = Math.round(scores.reduce((a, b) => a + b, 0) / scores.length); } return results; }
- index.ts:80-86 (schema)Zod schema for validating input arguments to the validate_all_performance tool.const AllPerformanceArgsSchema = z.object({ url: z.string().url(), pagespeedApiKey: z.string().optional(), gtmetrixApiKey: z.string().optional(), webpagetestEnabled: z.boolean().optional(), webpagetestWaitForResults: z.boolean().optional(), });
- index.ts:232-246 (registration)MCP tool registration including name, description, and input schema definition.{ name: 'validate_all_performance', description: 'Run all available performance tests (PageSpeed Insights + optionally WebPageTest + optionally GTmetrix).', inputSchema: { type: 'object', properties: { url: { type: 'string' }, pagespeedApiKey: { type: 'string', description: 'Optional PageSpeed API key' }, gtmetrixApiKey: { type: 'string', description: 'Optional GTmetrix API key' }, webpagetestEnabled: { type: 'boolean', description: 'Run WebPageTest via browser automation (default: false)' }, webpagetestWaitForResults: { type: 'boolean', description: 'Wait for WebPageTest to complete (default: false)' }, }, required: ['url'], }, },
- index.ts:396-406 (handler)MCP server switch case handler that validates arguments and delegates to runAllPerformance.case 'validate_all_performance': { const validatedArgs = AllPerformanceArgsSchema.parse(args); const result = await runAllPerformance(validatedArgs.url, { pagespeed: { apiKey: validatedArgs.pagespeedApiKey }, webpagetest: validatedArgs.webpagetestEnabled ? { waitForResults: validatedArgs.webpagetestWaitForResults } : undefined, gtmetrix: validatedArgs.gtmetrixApiKey ? { apiKey: validatedArgs.gtmetrixApiKey } : undefined, }); return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] }; }
- src/orchestrator/run-all.ts:13-17 (schema)TypeScript interface defining options for performance tests used by runAllPerformance.export interface PerformanceTestOptions { pagespeed?: { apiKey?: string; strategy?: 'mobile' | 'desktop' }; gtmetrix?: { apiKey: string }; webpagetest?: { location?: string; runs?: number; waitForResults?: boolean }; }