Deterministic SEO/GEO checks, business-data comparisons and fixed-price implementation guidance.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Berechnet Nennungs-, Empfehlungs-, eigene Quellen- und Zitationsquoten aus gelieferten annotierten Antwortprotokollen. Trennt Oberfläche, Modell, Modus, Sprache und Ort. Weist Nenner, Fehlversuche und ungeprüfte Annotationen aus. Führt keine KI-Anfragen durch und beurteilt keine Texte semantisch.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http local-seo-geo https://mcp.empiriainsight.com/mcp
Berechnet Nennungs-, Empfehlungs-, eigene Quellen- und Zitationsquoten aus gelieferten annotierten Antwortprotokollen. Trennt Oberfläche, Modell, Modus, Sprache und Ort. Weist Nenner, Fehlversuche und ungeprüfte Annotationen aus. Führt keine KI-Anfragen durch und beurteilt keine Texte semantisch.
| Argument | Type | Description |
|---|---|---|
| owned_hosts* | array | |
| observations* | array |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"owned_hosts",
"observations"
],
"properties": {
"owned_hosts": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[a-zA-Z0-9.-]+$",
"maxLength": 253,
"minLength": 1
},
"maxItems": 20,
"minItems": 1
},
"observations": {
"type": "array",
"items": {
"type": "object",
"required": [
"provider",
"surface",
"prompt_id",
"prompt",
"status"
],
"properties": {
"model": {
"$ref": "#/properties/observations/items/properties/provider"
},
"prompt": {
"type": "string",
"maxLength": 8000,
"minLength": 1
},
"status": {
"enum": [
"complete",
"failed",
"blocked"
],
"type": "string"
},
"surface": {
"$ref": "#/properties/observations/items/properties/provider"
},
"language": {
"$ref": "#/properties/observations/items/properties/provider"
},
"location": {
"$ref": "#/properties/observations/items/properties/provider"
},
"provider": {
"type": "string",
"maxLength": 300,
"minLength": 1
},
"timezone": {
"$ref": "#/properties/observations/items/properties/provider"
},
"citations": {
"type": "array",
"items": {
"type": "object",
"required": [
"url",
"verified"
],
"properties": {
"url": {
"type": "string",
"format": "uri",
"maxLength": 2048
},
"verified": {
"type": "boolean"
}
},
"additionalProperties": false
},
"maxItems": 100
},
"mentioned": {
"type": "boolean"
},
"prompt_id": {
"$ref": "#/properties/observations/items/properties/provider"
},
"repetition": {
"type": "integer",
"maximum": 100,
"minimum": 1
},
"observed_at": {
"type": "string",
"format": "date-time"
},
"recommended": {
"type": "boolean"
},
"response_text": {
"type": "string",
"maxLength": 32000,
"minLength": 1
},
"retrieval_mode": {
"$ref": "#/properties/observations/items/properties/provider"
},
"location_access": {
"enum": [
"provided",
"disabled",
"unknown"
],
"type": "string"
},
"identity_verified": {
"type": "boolean"
},
"artifact_reference": {
"type": "string",
"maxLength": 2048,
"minLength": 1
}
},
"additionalProperties": false
},
"maxItems": 500
}
},
"additionalProperties": false
}Validiert gelieferte GSC-/GBP-/CRM-ähnliche Datensätze, Definitionen und doppelte IDs. Summiert getrennte Kennzahlen und berechnet Veränderungen nur bei vergleichbarer Baseline. Kein Zugriff auf Konten und keine automatische Zuordnung von KI-Traffic oder Umsatzursachen.
| Argument | Type | Description |
|---|---|---|
| current* | object | |
| baseline | any |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"current"
],
"properties": {
"current": {
"type": "object",
"required": [
"source",
"period_start",
"period_end",
"timezone",
"exported_at",
"dimensions",
"definitions",
"records"
],
"properties": {
"source": {
"type": "string",
"maxLength": 300,
"minLength": 1
},
"records": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"values"
],
"properties": {
"id": {
"$ref": "#/properties/current/properties/source"
},
"query": {
"type": "string",
"maxLength": 1000
},
"values": {
"type": "object",
"propertyNames": {
"enum": [
"impressions",
"clicks",
"phone_clicks",
"calls_received",
"contacts",
"qualified_contacts",
"bookings",
"orders",
"revenue"
]
},
"additionalProperties": {
"type": "number"
}
}
},
"additionalProperties": false
},
"maxItems": 5000
},
"currency": {
"type": "string",
"pattern": "^[A-Z]{3}$"
},
"timezone": {
"$ref": "#/properties/current/properties/source"
},
"dimensions": {
"type": "object",
"propertyNames": {
"maxLength": 100
},
"additionalProperties": {
"type": "string",
"maxLength": 500
}
},
"period_end": {
"type": "string",
"format": "date"
},
"definitions": {
"type": "object",
"propertyNames": {
"enum": [
"impressions",
"clicks",
"phone_clicks",
"calls_received",
"contacts",
"qualified_contacts",
"bookings",
"orders",
"revenue"
]
},
"additionalProperties": {
"type": "string",
"maxLength": 500,
"minLength": 1
}
},
"exported_at": {
"type": "string",
"format": "date-time"
},
"period_start": {
"type": "string",
"format": "date"
}
},
"additionalProperties": false
},
"baseline": {
"$ref": "#/properties/current"
}
},
"additionalProperties": false
}Trennt Labor- und Felddaten. Prüft gelieferte p75-Feldwerte getrennt nach Gerät gegen gute LCP-/INP-/CLS-Grenzen und listet große Ressourcen im gelieferten Trace. Führt keine Messung aus und berechnet keinen pauschalen SEO-Score.
| Argument | Type | Description |
|---|---|---|
| url* | string | |
| kind* | string | |
| device* | string | |
| source* | string | |
| metrics* | object | |
| resources | array | |
| percentile | number | |
| period_end | string | |
| observed_at* | string | |
| period_start | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"url",
"source",
"kind",
"device",
"observed_at",
"metrics"
],
"properties": {
"url": {
"type": "string",
"format": "uri",
"maxLength": 2048
},
"kind": {
"enum": [
"field",
"lab"
],
"type": "string"
},
"device": {
"enum": [
"mobile",
"desktop",
"mixed"
],
"type": "string"
},
"source": {
"type": "string",
"maxLength": 300,
"minLength": 1
},
"metrics": {
"type": "object",
"properties": {
"cls": {
"type": "number",
"minimum": 0
},
"inp_ms": {
"type": "number",
"minimum": 0
},
"lcp_ms": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
},
"resources": {
"type": "array",
"items": {
"type": "object",
"required": [
"url",
"transfer_bytes"
],
"properties": {
"url": {
"$ref": "#/properties/url"
},
"duration_ms": {
"type": "number",
"minimum": 0
},
"transfer_bytes": {
"type": "integer",
"minimum": 0
}
},
"additionalProperties": false
},
"default": [],
"maxItems": 500
},
"percentile": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"period_end": {
"type": "string",
"format": "date"
},
"observed_at": {
"type": "string",
"format": "date-time"
},
"period_start": {
"type": "string",
"format": "date"
}
},
"additionalProperties": false
}Prüft geliefertes HTML und optionale HTTP-/robots-/Sitemap-/DOM-Snapshots ohne Netzwerkzugriff. Gleiche Eingaben und Regelversion ergeben gleiche Befunde. Fehlende Daten bleiben not_tested; ein DOM-Snapshot ist kein eigener Browser-Test.
| Argument | Type | Description |
|---|---|---|
| url* | string | |
| html* | string | |
| llms | any | |
| robots | object | |
| headers | object | |
| sitemap | any | |
| observed_at | string | |
| status_code | integer | |
| related_pages | array | |
| rendered_html | string | |
| paid_link_urls | array | |
| redirect_chain | array | |
| target_results | array | |
| expected_business | object |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"url",
"html"
],
"properties": {
"url": {
"type": "string",
"format": "uri",
"maxLength": 2048
},
"html": {
"type": "string",
"maxLength": 2000000
},
"llms": {
"$ref": "#/properties/robots"
},
"robots": {
"type": "object",
"required": [
"url",
"status_code",
"body"
],
"properties": {
"url": {
"$ref": "#/properties/url"
},
"body": {
"type": "string",
"maxLength": 2000000
},
"headers": {
"type": "object",
"default": {},
"propertyNames": {
"maxLength": 100
},
"additionalProperties": {
"type": "string",
"maxLength": 8000
}
},
"status_code": {
"type": "integer",
"maximum": 599,
"minimum": 100
}
},
"additionalProperties": false
},
"headers": {
"type": "object",
"default": {},
"propertyNames": {
"maxLength": 100
},
"additionalProperties": {
"type": "string",
"maxLength": 8000
}
},
"sitemap": {
"$ref": "#/properties/robots"
},
"observed_at": {
"type": "string",
"format": "date-time"
},
"status_code": {
"type": "integer",
"maximum": 599,
"minimum": 100
},
"related_pages": {
"type": "array",
"items": {
"$ref": "#/properties/robots"
},
"maxItems": 6
},
"rendered_html": {
"type": "string",
"maxLength": 2000000
},
"paid_link_urls": {
"type": "array",
"items": {
"$ref": "#/properties/url"
},
"maxItems": 100
},
"redirect_chain": {
"type": "array",
"items": {
"$ref": "#/properties/url"
},
"maxItems": 6
},
"target_results": {
"type": "array",
"items": {
"$ref": "#/properties/robots"
},
"default": [],
"maxItems": 40
},
"expected_business": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 300,
"minLength": 1
},
"hours": {
"type": "object",
"propertyNames": {
"maxLength": 100
},
"additionalProperties": {
"type": "string",
"maxLength": 100
}
},
"phones": {
"type": "array",
"items": {
"$ref": "#/properties/expected_business/properties/name"
},
"maxItems": 10
},
"address": {
"type": "object",
"properties": {
"street": {
"$ref": "#/properties/expected_business/properties/name"
},
"country": {
"type": "string",
"maxLength": 2,
"minLength": 2
},
"locality": {
"$ref": "#/properties/expected_business/properties/name"
},
"postal_code": {
"$ref": "#/properties/expected_business/properties/name"
}
},
"additionalProperties": false
},
"country": {
"type": "string",
"default": "DE",
"pattern": "^[A-Z]{2}$"
},
"website": {
"$ref": "#/properties/url"
},
"services": {
"type": "array",
"items": {
"$ref": "#/properties/expected_business/properties/name"
},
"maxItems": 100
},
"categories": {
"type": "array",
"items": {
"$ref": "#/properties/expected_business/properties/name"
},
"maxItems": 30
},
"location_type": {
"enum": [
"storefront",
"hybrid",
"service_area"
],
"type": "string"
},
"service_areas": {
"type": "array",
"items": {
"$ref": "#/properties/expected_business/properties/name"
},
"maxItems": 100
},
"special_hours": {
"type": "object",
"propertyNames": {
"maxLength": 100
},
"additionalProperties": {
"type": "string",
"maxLength": 100
}
},
"public_address": {
"type": "boolean"
},
"approved_website_urls": {
"type": "array",
"items": {
"$ref": "#/properties/url"
},
"maxItems": 20
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}Begrenzter HTTP-Crawl einer öffentlichen Website: HTML, Kontaktlinks, Schema, robots, Sitemap. Maximal sechs Seiten und 20 weitere interne Ziele, 45 Sekunden Gesamtbudget. Respektiert robots für den eigenen Audit-Crawler. Kein Browser oder echter Suchbot-Test; externe Buchungsseiten bleiben ungeprüft. Führt öffentliche GET-Abrufe durch, speichert keine Leads.
| Argument | Type | Description |
|---|---|---|
| url* | string | |
| max_pages | integer | |
| max_link_checks | integer | |
| expected_business | object |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"format": "uri",
"maxLength": 2048
},
"max_pages": {
"type": "integer",
"default": 3,
"maximum": 6,
"minimum": 1
},
"max_link_checks": {
"type": "integer",
"default": 10,
"maximum": 20,
"minimum": 0
},
"expected_business": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 300,
"minLength": 1
},
"hours": {
"type": "object",
"propertyNames": {
"maxLength": 100
},
"additionalProperties": {
"type": "string",
"maxLength": 100
}
},
"phones": {
"type": "array",
"items": {
"$ref": "#/properties/expected_business/properties/name"
},
"maxItems": 10
},
"address": {
"type": "object",
"properties": {
"street": {
"$ref": "#/properties/expected_business/properties/name"
},
"country": {
"type": "string",
"maxLength": 2,
"minLength": 2
},
"locality": {
"$ref": "#/properties/expected_business/properties/name"
},
"postal_code": {
"$ref": "#/properties/expected_business/properties/name"
}
},
"additionalProperties": false
},
"country": {
"type": "string",
"default": "DE",
"pattern": "^[A-Z]{2}$"
},
"website": {
"$ref": "#/properties/url"
},
"services": {
"type": "array",
"items": {
"$ref": "#/properties/expected_business/properties/name"
},
"maxItems": 100
},
"categories": {
"type": "array",
"items": {
"$ref": "#/properties/expected_business/properties/name"
},
"maxItems": 30
},
"location_type": {
"enum": [
"storefront",
"hybrid",
"service_area"
],
"type": "string"
},
"service_areas": {
"type": "array",
"items": {
"$ref": "#/properties/expected_business/properties/name"
},
"maxItems": 100
},
"special_hours": {
"type": "object",
"propertyNames": {
"maxLength": 100
},
"additionalProperties": {
"type": "string",
"maxLength": 100
}
},
"public_address": {
"type": "boolean"
},
"approved_website_urls": {
"type": "array",
"items": {
"$ref": "#/properties/url"
},
"maxItems": 20
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}Vergleicht gelieferte Profil-/Verzeichnisdaten gegen freigegebene Stammdaten: Name, Rufnummern, öffentliche Adresse, Standort-URL, Zeiten, Gebiete, Kategorien und Leistungen. Normalisiert Schreib-/Telefonvarianten; prüft weder Google-Profil live noch Inhaberschaft oder Wahrheit der Stammdaten.
| Argument | Type | Description |
|---|---|---|
| profiles* | array | |
| reference* | object |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"reference",
"profiles"
],
"properties": {
"profiles": {
"type": "array",
"items": {
"type": "object",
"required": [
"profile_id"
],
"properties": {
"name": {
"$ref": "#/properties/reference/properties/name"
},
"hours": {
"$ref": "#/properties/reference/properties/hours"
},
"phones": {
"$ref": "#/properties/reference/properties/phones"
},
"address": {
"$ref": "#/properties/reference/properties/address"
},
"country": {
"$ref": "#/properties/reference/properties/country"
},
"website": {
"$ref": "#/properties/reference/properties/website"
},
"services": {
"$ref": "#/properties/reference/properties/services"
},
"categories": {
"$ref": "#/properties/reference/properties/categories"
},
"profile_id": {
"$ref": "#/properties/reference/properties/name"
},
"source_url": {
"$ref": "#/properties/reference/properties/website"
},
"observed_at": {
"type": "string",
"format": "date-time"
},
"location_type": {
"$ref": "#/properties/reference/properties/location_type"
},
"service_areas": {
"$ref": "#/properties/reference/properties/service_areas"
},
"special_hours": {
"$ref": "#/properties/reference/properties/special_hours"
},
"public_address": {
"$ref": "#/properties/reference/properties/public_address"
},
"approved_website_urls": {
"$ref": "#/properties/reference/properties/approved_website_urls"
}
},
"additionalProperties": false
},
"maxItems": 50,
"minItems": 1
},
"reference": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 300,
"minLength": 1
},
"hours": {
"type": "object",
"propertyNames": {
"maxLength": 100
},
"additionalProperties": {
"type": "string",
"maxLength": 100
}
},
"phones": {
"type": "array",
"items": {
"$ref": "#/properties/reference/properties/name"
},
"maxItems": 10
},
"address": {
"type": "object",
"properties": {
"street": {
"$ref": "#/properties/reference/properties/name"
},
"country": {
"type": "string",
"maxLength": 2,
"minLength": 2
},
"locality": {
"$ref": "#/properties/reference/properties/name"
},
"postal_code": {
"$ref": "#/properties/reference/properties/name"
}
},
"additionalProperties": false
},
"country": {
"type": "string",
"default": "DE",
"pattern": "^[A-Z]{2}$"
},
"website": {
"type": "string",
"format": "uri",
"maxLength": 2048
},
"services": {
"type": "array",
"items": {
"$ref": "#/properties/reference/properties/name"
},
"maxItems": 100
},
"categories": {
"type": "array",
"items": {
"$ref": "#/properties/reference/properties/name"
},
"maxItems": 30
},
"location_type": {
"enum": [
"storefront",
"hybrid",
"service_area"
],
"type": "string"
},
"service_areas": {
"type": "array",
"items": {
"$ref": "#/properties/reference/properties/name"
},
"maxItems": 100
},
"special_hours": {
"type": "object",
"propertyNames": {
"maxLength": 100
},
"additionalProperties": {
"type": "string",
"maxLength": 100
}
},
"public_address": {
"type": "boolean"
},
"approved_website_urls": {
"type": "array",
"items": {
"$ref": "#/properties/reference/properties/website"
},
"maxItems": 20
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}Passende Leistungspakete mit vorläufigem Netto-Festpreis und klar begrenztem Umfang aus gelieferten Prüfregel-IDs ableiten. Keine Stundenangaben. Warnungen müssen bestätigt werden; ein verbindliches Festpreisangebot folgt nach Prüfung. Keine Ranking- oder Terminzusage.
| Argument | Type | Description |
|---|---|---|
| findings | array |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"findings": {
"type": "array",
"items": {
"type": "object",
"required": [
"check_id",
"status"
],
"properties": {
"status": {
"enum": [
"fail",
"warn",
"pass",
"info",
"not_tested"
],
"type": "string"
},
"check_id": {
"type": "string",
"maxLength": 100
}
},
"additionalProperties": false
},
"default": [],
"maxItems": 300
}
},
"additionalProperties": false
}Liste der deterministischen Regeln mit Version, Skill-Herkunft, Quellen und Prüfgrenzen.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {},
"additionalProperties": false
}Prüft Herkunft und doppelte IDs eines gelieferten lokalen Wettbewerbervergleichs und berechnet Minimum, Median und Maximum vorhandener Ratings/Bewertungszahlen. Keine Live-Maps-Abfrage, Review-Authentizitätsprüfung oder Aussage über das Marktminimum.
| Argument | Type | Description |
|---|---|---|
| context* | object | |
| businesses* | array |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"context",
"businesses"
],
"properties": {
"context": {
"type": "object",
"required": [
"service",
"search_location",
"surface",
"observed_at"
],
"properties": {
"service": {
"type": "string",
"maxLength": 300,
"minLength": 1
},
"surface": {
"$ref": "#/properties/context/properties/service"
},
"observed_at": {
"type": "string",
"format": "date-time"
},
"search_location": {
"$ref": "#/properties/context/properties/service"
}
},
"additionalProperties": false
},
"businesses": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name"
],
"properties": {
"id": {
"$ref": "#/properties/context/properties/service"
},
"name": {
"$ref": "#/properties/context/properties/service"
},
"rating": {
"type": "number",
"maximum": 5,
"minimum": 0
},
"category": {
"$ref": "#/properties/context/properties/service"
},
"source_url": {
"type": "string",
"format": "uri",
"maxLength": 2048
},
"observed_at": {
"type": "string",
"format": "date-time"
},
"review_count": {
"type": "integer",
"minimum": 0
},
"location_type": {
"enum": [
"storefront",
"hybrid",
"service_area"
],
"type": "string"
}
},
"additionalProperties": false
},
"maxItems": 100
}
},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 5, 2026.