Skip to main content
Glama

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
NameRequiredDescriptionDefault
gtmetrixApiKeyNoOptional GTmetrix API key
pagespeedApiKeyNoOptional PageSpeed API key
urlYes
webpagetestEnabledNoRun WebPageTest via browser automation (default: false)
webpagetestWaitForResultsNoWait for WebPageTest to complete (default: false)

Implementation Reference

  • 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; }
  • 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'], }, },
  • 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) }] }; }
  • 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 }; }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/cordlesssteve/webby-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server