Skip to main content
Glama

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
NameRequiredDescriptionDefault
categoriesNoCategories to test (default: all)
emailYesEmail for SSL Labs (required)
gtmetrixApiKeyNo
pagespeedApiKeyNo
urlYes
waitForSSLNo
waveApiKeyNo
wcagLevelNo

Implementation Reference

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

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