MCP Server

MeSquared Visibility

io.github.rmach816/mesquared-mcp-server
Data & Analytics Marketing & Advertising Public & reachable MCP 2025-11-25

What this MCP does

Scans and compares public websites for SEO and AEO readiness using technical signals, evidence, scores, and prioritized issues.

compare_visibility
Compare SEO/AEO Website Readiness
Run public-site SEO/AEO website-readiness scans for two business websites and compare aggregate scores, selected evidence, site signals, and top issues. This is a readiness comparison, not observed rank or live citation benchmarking.
Read only Open world Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['first_url', 'second_url'], 'properties': {'first_url': {'type': 'string', 'maxLength': 2048, 'minLength': 1, 'description': 'The first business website URL, such as example.com.'}, 'second_url': {'type': 'string', 'maxLength': 2048, 'minLength': 1, 'description': 'The second business website URL, such as competitor.com.'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['winner', 'score_gap', 'first', 'second', 'full_scan_url'], 'properties': {'first': {'type': 'object', 'required': ['url', 'score', 'seo_score', 'aeo_score', 'geo_score', 'summary', 'top_issues', 'audit_id', 'score_profile', 'measurement_scope'], 'properties': {'url': {'type': 'string'}, 'score': {'type': 'number', 'maximum': 100, 'minimum': 0}, 'summary': {'type': 'string'}, 'audit_id': {'type': 'string'}, 'aeo_score': {'type': 'number', 'maximum': 100, 'minimum': 0}, 'geo_score': {'type': 'number', 'maximum': 100, 'minimum': 0}, 'seo_score': {'type': 'number', 'maximum': 100, 'minimum': 0}, 'top_issues': {'type': 'array', 'items': {'type': 'object', 'required': ['title', 'severity', 'category', 'description'], 'properties': {'title': {'type': 'string'}, 'category': {'type': 'string'}, 'severity': {'enum': ['critical', 'warning', 'info'], 'type': 'string'}, 'description': {'type': 'string'}}, 'additionalProperties': False}}, 'site_signals': {'type': 'object', 'required': ['pages_analyzed', 'rendered_pages_analyzed', 'robots_available', 'sitemap_available', 'llms_txt_available', 'blocked_ai_crawlers', 'schema_types'], 'properties': {'schema_types': {'type': 'array', 'items': {'type': 'string'}}, 'pages_analyzed': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'robots_available': {'type': 'boolean'}, 'sitemap_available': {'type': 'boolean'}, 'llms_txt_available': {'type': 'boolean'}, 'blocked_ai_crawlers': {'type': 'array', 'items': {'type': 'string'}}, 'rendered_pages_analyzed': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': False}, 'score_profile': {'anyOf': [{'type': 'object', 'required': ['id', 'version'], 'properties': {'id': {'type': 'string'}, 'version': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'score_components': {'type': 'object', 'required': ['technical_foundation', 'experience', 'freshness', 'schema_quality', 'schema_stack', 'eeat', 'answer_block', 'format_diversity', 'factual_density', 'content_modularity', 'ai_crawler_access', 'snippet_control', 'render_accessibility', 'schema_coverage', 'schema_validation', 'heading_hierarchy', 'semantic_structure', 'title_alignment'], 'properties': {'eeat': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'freshness': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'experience': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'answer_block': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'schema_stack': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'schema_quality': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'factual_density': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'schema_coverage': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'snippet_control': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'title_alignment': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'format_diversity': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'ai_crawler_access': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'heading_hierarchy': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'schema_validation': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'content_modularity': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'semantic_structure': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'render_accessibility': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'technical_foundation': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}}, 'additionalProperties': False}, 'measurement_scope': {'type': 'object', 'required': ['readiness', 'observed_seo', 'observed_aeo', 'notes'], 'properties': {'notes': {'type': 'array', 'items': {'type': 'string'}}, 'readiness': {'type': 'string', 'const': 'measured'}, 'observed_aeo': {'type': 'string', 'const': 'not_measured'}, 'observed_seo': {'type': 'string', 'const': 'not_measured'}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'second': {'type': 'object', 'required': ['url', 'score', 'seo_score', 'aeo_score', 'geo_score', 'summary', 'top_issues', 'audit_id', 'score_profile', 'measurement_scope'], 'properties': {'url': {'type': 'string'}, 'score': {'type': 'number', 'maximum': 100, 'minimum': 0}, 'summary': {'type': 'string'}, 'audit_id': {'type': 'string'}, 'aeo_score': {'type': 'number', 'maximum': 100, 'minimum': 0}, 'geo_score': {'type': 'number', 'maximum': 100, 'minimum': 0}, 'seo_score': {'type': 'number', 'maximum': 100, 'minimum': 0}, 'top_issues': {'type': 'array', 'items': {'type': 'object', 'required': ['title', 'severity', 'category', 'description'], 'properties': {'title': {'type': 'string'}, 'category': {'type': 'string'}, 'severity': {'enum': ['critical', 'warning', 'info'], 'type': 'string'}, 'description': {'type': 'string'}}, 'additionalProperties': False}}, 'site_signals': {'type': 'object', 'required': ['pages_analyzed', 'rendered_pages_analyzed', 'robots_available', 'sitemap_available', 'llms_txt_available', 'blocked_ai_crawlers', 'schema_types'], 'properties': {'schema_types': {'type': 'array', 'items': {'type': 'string'}}, 'pages_analyzed': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'robots_available': {'type': 'boolean'}, 'sitemap_available': {'type': 'boolean'}, 'llms_txt_available': {'type': 'boolean'}, 'blocked_ai_crawlers': {'type': 'array', 'items': {'type': 'string'}}, 'rendered_pages_analyzed': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': False}, 'score_profile': {'anyOf': [{'type': 'object', 'required': ['id', 'version'], 'properties': {'id': {'type': 'string'}, 'version': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'score_components': {'type': 'object', 'required': ['technical_foundation', 'experience', 'freshness', 'schema_quality', 'schema_stack', 'eeat', 'answer_block', 'format_diversity', 'factual_density', 'content_modularity', 'ai_crawler_access', 'snippet_control', 'render_accessibility', 'schema_coverage', 'schema_validation', 'heading_hierarchy', 'semantic_structure', 'title_alignment'], 'properties': {'eeat': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'freshness': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'experience': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'answer_block': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'schema_stack': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'schema_quality': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'factual_density': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'schema_coverage': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'snippet_control': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'title_alignment': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'format_diversity': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'ai_crawler_access': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'heading_hierarchy': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'schema_validation': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'content_modularity': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'semantic_structure': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'render_accessibility': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'technical_foundation': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}}, 'additionalProperties': False}, 'measurement_scope': {'type': 'object', 'required': ['readiness', 'observed_seo', 'observed_aeo', 'notes'], 'properties': {'notes': {'type': 'array', 'items': {'type': 'string'}}, 'readiness': {'type': 'string', 'const': 'measured'}, 'observed_aeo': {'type': 'string', 'const': 'not_measured'}, 'observed_seo': {'type': 'string', 'const': 'not_measured'}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'winner': {'enum': ['first_url', 'second_url', 'tie'], 'type': 'string'}, 'score_gap': {'type': 'number', 'maximum': 100, 'minimum': 0}, 'full_scan_url': {'type': 'string'}}, 'additionalProperties': False}
scan_visibility
Scan SEO/AEO Website Readiness
Run a public-site SEO/AEO website-readiness scan for one business website. Returns aggregate readiness scores, selected technical and answer-quality evidence, site signals, and prioritized issues. This does not measure observed rankings, Search Console performance, or live AI mentions/citations.
Read only Open world Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['url'], 'properties': {'url': {'type': 'string', 'maxLength': 2048, 'minLength': 1, 'description': 'The business website URL to scan, such as example.com.'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['url', 'score', 'seo_score', 'aeo_score', 'geo_score', 'top_issues', 'summary', 'full_scan_url', 'audit_id', 'score_profile', 'measurement_scope'], 'properties': {'url': {'type': 'string'}, 'score': {'type': 'number', 'maximum': 100, 'minimum': 0}, 'summary': {'type': 'string'}, 'audit_id': {'type': 'string'}, 'aeo_score': {'type': 'number', 'maximum': 100, 'minimum': 0}, 'geo_score': {'type': 'number', 'maximum': 100, 'minimum': 0}, 'seo_score': {'type': 'number', 'maximum': 100, 'minimum': 0}, 'top_issues': {'type': 'array', 'items': {'type': 'object', 'required': ['title', 'severity', 'category', 'description'], 'properties': {'title': {'type': 'string'}, 'category': {'type': 'string'}, 'severity': {'enum': ['critical', 'warning', 'info'], 'type': 'string'}, 'description': {'type': 'string'}}, 'additionalProperties': False}}, 'site_signals': {'type': 'object', 'required': ['pages_analyzed', 'rendered_pages_analyzed', 'robots_available', 'sitemap_available', 'llms_txt_available', 'blocked_ai_crawlers', 'schema_types'], 'properties': {'schema_types': {'type': 'array', 'items': {'type': 'string'}}, 'pages_analyzed': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'robots_available': {'type': 'boolean'}, 'sitemap_available': {'type': 'boolean'}, 'llms_txt_available': {'type': 'boolean'}, 'blocked_ai_crawlers': {'type': 'array', 'items': {'type': 'string'}}, 'rendered_pages_analyzed': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': False}, 'full_scan_url': {'type': 'string'}, 'score_profile': {'anyOf': [{'type': 'object', 'required': ['id', 'version'], 'properties': {'id': {'type': 'string'}, 'version': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'score_components': {'type': 'object', 'required': ['technical_foundation', 'experience', 'freshness', 'schema_quality', 'schema_stack', 'eeat', 'answer_block', 'format_diversity', 'factual_density', 'content_modularity', 'ai_crawler_access', 'snippet_control', 'render_accessibility', 'schema_coverage', 'schema_validation', 'heading_hierarchy', 'semantic_structure', 'title_alignment'], 'properties': {'eeat': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'freshness': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'experience': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'answer_block': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'schema_stack': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'schema_quality': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'factual_density': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'schema_coverage': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'snippet_control': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'title_alignment': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'format_diversity': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'ai_crawler_access': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'heading_hierarchy': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'schema_validation': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'content_modularity': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'semantic_structure': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'render_accessibility': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'technical_foundation': {'anyOf': [{'type': 'number', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}}, 'additionalProperties': False}, 'measurement_scope': {'type': 'object', 'required': ['readiness', 'observed_seo', 'observed_aeo', 'notes'], 'properties': {'notes': {'type': 'array', 'items': {'type': 'string'}}, 'readiness': {'type': 'string', 'const': 'measured'}, 'observed_aeo': {'type': 'string', 'const': 'not_measured'}, 'observed_seo': {'type': 'string', 'const': 'not_measured'}}, 'additionalProperties': False}}, 'additionalProperties': False}
visibility_audit_info
Visibility Audit Information
Explain the MeSquared SEO/AEO website-readiness methodology, its measurement boundaries, and how to use the available scan tools.
Read only Open world Idempotent
Input schema
{'type': 'object', 'properties': {}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['product', 'free_scan_url', 'measures', 'does_not_measure', 'measurement_layers', 'tools'], 'properties': {'tools': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'purpose', 'required_arguments'], 'properties': {'name': {'type': 'string'}, 'purpose': {'type': 'string'}, 'required_arguments': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}}, 'product': {'type': 'string'}, 'measures': {'type': 'array', 'items': {'type': 'string'}}, 'free_scan_url': {'type': 'string'}, 'does_not_measure': {'type': 'array', 'items': {'type': 'string'}}, 'measurement_layers': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'status', 'description'], 'properties': {'name': {'type': 'string'}, 'status': {'enum': ['measured', 'not_measured'], 'type': 'string'}, 'description': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
Added
compare_visibility
Sept. 17, 2026, 12:49 p.m.
Added
scan_visibility
Sept. 17, 2026, 12:49 p.m.
Added
visibility_audit_info
Sept. 17, 2026, 12:49 p.m.