validate_all_performance
Run comprehensive website performance tests using PageSpeed Insights, WebPageTest, and GTmetrix to assess 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 |
|---|---|---|---|
| url | Yes | ||
| pagespeedApiKey | No | Optional PageSpeed API key | |
| gtmetrixApiKey | No | Optional GTmetrix API key | |
| webpagetestEnabled | No | Run WebPageTest via browser automation (default: false) | |
| webpagetestWaitForResults | No | Wait for WebPageTest to complete (default: false) |
Implementation Reference
- index.ts:396-406 (handler)MCP tool handler for 'validate_all_performance'. Validates input arguments using Zod and calls the runAllPerformance orchestrator function, returning JSON results.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) }] }; }
- index.ts:80-86 (schema)Zod schema defining input validation for the validate_all_performance tool arguments.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-245 (registration)Tool registration in the MCP tools array, including name, description, and input schema.{ 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'], },
- src/orchestrator/run-all.ts:90-125 (helper)Core helper function implementing the logic for validate_all_performance tool. Orchestrates multiple performance analysis tools (PageSpeed Insights always, WebPageTest and GTmetrix optionally) and computes summary metrics.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; }