Dokumentation · Integrationen
MCP-Server für KI-Agenten
Über den MCP-Server fragt ein KI-Agent deine Websites, ihre Search-Console-Leistung, Analysen und Zeitreihen, Indexierung, Keywords, Beiträge, Onpage-Audit, Crawl-Daten, Core Web Vitals, PageSpeed-Labortests, Berichte, Erreichbarkeit, Migrationen und SEO-Experimente direkt bei evnxt ab: in Claude Code, in Cursor oder in einem eigenen Agenten. Er nutzt dieselben API-Schlüssel wie die Produkt-API oder eine Verbindung über dein evnxt-Konto. Die meisten Werkzeuge lesen nur; schreibende Werkzeuge (Entwürfe, Befunde, Monitoring, Index-Tracker, IndexNow, Sitemaps, Gruppen, Markierungen, Experimente) brauchen je einen eigenen Geltungsbereich.
MCP (Model Context Protocol) ist der offene Standard, über den KI-Werkzeuge externe Datenquellen als „Werkzeuge“ einbinden. Der Agent sieht, welche Werkzeuge evnxt anbietet, ruft sie mit Parametern auf und bekommt strukturierte Antworten zurück.
Endpunkt
https://evnxt.de/mcp
Transport ist MCP Streamable HTTP: nur POST, zustandslos, Protokollversion 2025-11-25. Der Server meldet sich als evnxt, Version 2.5.0.
Anmeldung
Es gibt zwei Wege: einen API-Schlüssel (für Claude Code, Cursor und eigene Agenten) oder die Verbindung über dein evnxt-Konto (für Claude.ai und ChatGPT, siehe Einrichtung).
Mit Schlüssel trägt jede Anfrage denselben API-Schlüssel wie für die Produkt-API (Präfix evx_live_) als Bearer-Token:
Authorization: Bearer evx_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Schlüssel legst du unter Übersicht → API & MCP an. Ohne Schlüssel oder mit einem widerrufenen Schlüssel antwortet /mcp mit 401. Ist die API für deinen Workspace noch nicht freigeschaltet, antwortet /mcp mit 404, genau wie /api/v1.
Grenzen
Es gelten dieselben Schranken wie bei der Produkt-API, je Schlüssel: ein Minutenlimit (Vorgabe 60, bis 600) und ein Tageslimit (Vorgabe 10.000). Jede MCP-Anfrage zählt als ein Aufruf. Details und Antwortheader stehen unter Rate-Limits.
Ein Schlüssel sieht nur den Workspace, zu dem er gehört. Was der Schlüssel nicht sieht, existiert für den Agenten nicht.
Werkzeuge
Die lesenden Werkzeuge sind als solche gekennzeichnet (readOnlyHint); schreibende sind in den Tabellen markiert. Die Tabelle hier zeigt die 32 Werkzeuge bis Version 2.0.0, die 80 Werkzeuge seit 2.1.0 stehen weiter unten nach Gruppen. Ein Schlüssel sieht nur die Werkzeuge, für die er den passenden Geltungsbereich hat. Die Geltungsbereiche onpage:read, monitoring:read, crawl:read, indexing:read, indexing:write, settings:write, reports:read, reports:share und portfolio:read gibt es nur für den MCP-Server; ältere Schlüssel haben sie nicht. Lege dafür einen neuen Schlüssel an. Die Werkzeuge zu Audit und Crawl gelten nur für Websites mit dem Modul Onpage; sonst kommt ein klarer Fehler.
| Werkzeug | Geltungsbereich | Liefert |
|---|---|---|
list_websites |
websites:read |
Websites des Workspaces |
get_search_performance |
results:read |
Search-Console-Leistung eines Zeitraums |
get_top_movers |
results:read |
Gewinner und Verlierer |
query_search_analytics |
results:read |
freie Abfrage der Suchdaten |
query_top_queries |
results:read |
beste Suchanfragen |
query_top_pages |
results:read |
beste Seiten |
query_countries |
results:read |
Summen je Land |
query_devices |
results:read |
Summen je Gerät |
get_page_performance |
results:read |
Verlauf einer Seite |
get_query_performance |
results:read |
Verlauf einer Suchanfrage |
query_search_appearance |
results:read |
Darstellung in der Suche |
list_keywords |
keywords:read |
Keywords einer Website |
list_articles |
articles:read |
Beiträge einer Website |
get_article |
articles:read |
ein Beitrag als Klartext |
get_onpage_findings |
onpage:read |
Befunde des letzten Onpage-Audits, mit rule_id die konkrete Karte |
get_audit_overview |
onpage:read |
das letzte Audit als Ganzes |
get_keyword_occupancy |
onpage:read |
ob ein Keyword schon belegt ist |
list_internal_link_suggestions |
onpage:read |
interne Link-Vorschläge |
list_crawls |
crawl:read |
Crawl-Läufe der Website |
get_crawl_summary |
crawl:read |
Kennzahlen eines Laufs |
list_crawl_pages |
crawl:read |
Seitenliste eines Laufs mit Filtern |
get_page_details |
crawl:read |
eine Seite mit allen Feldern |
get_crawl_analysis |
crawl:read |
Analysen: Duplikate, Waisen, Canonical, Sitemap, Facetten, externe Links, Weiterleitungen |
get_crawl_comparison |
crawl:read |
Änderungen zum vorigen Lauf |
get_domain_policy |
crawl:read |
Domain-Politik des Laufs |
get_uptime_status |
monitoring:read |
Erreichbarkeit, Antwortzeit, SSL |
list_incidents |
monitoring:read |
bestätigte Ausfälle |
create_article_draft |
articles:write |
legt einen Beitragsentwurf an (schreibend) |
approve_article |
articles:publish |
gibt einen Beitrag frei (schreibend) |
publish_article |
articles:publish |
veröffentlicht einen Beitrag ins CMS (schreibend) |
mark_finding_done |
onpage:write |
markiert Befunde als erledigt (schreibend) |
add_monitoring_url |
monitoring:write |
nimmt eine Seite ins Uptime-Monitoring auf (schreibend) |
Listen liefern total, offset und next_offset. Für die nächste Seite gibst du next_offset als offset mit; null heißt Ende.
list_websites
Geltungsbereich websites:read. Liefert alle Websites des Workspaces mit ID, Name, Basisadresse, Sprache, Markt, CMS-Status und Search-Console-Status (verbunden, Status, Daten bis). Dieses Werkzeug zuerst aufrufen: die beiden anderen brauchen eine website_id.
get_search_performance
Geltungsbereich results:read. Search-Console-Leistung einer Website für einen Zeitraum: Klicks, Impressionen, CTR und durchschnittliche Position, auf Wunsch mit Vergleichszeitraum und Aufschlüsselung.
| Parameter | Bedeutung | Vorgabe |
|---|---|---|
website_id |
Pflicht; ID aus list_websites |
|
start_date, end_date |
Zeitraum als YYYY-MM-DD, höchstens 500 Tage |
die letzten 28 Tage mit Daten |
compare |
previous_period, previous_year oder none; liefert Vergleichswerte und die Veränderung in Prozent |
previous_period |
dimension |
none, page oder query; Aufschlüsselung nach Seiten oder Suchanfragen, nach Klicks sortiert |
none |
limit |
Zeilen der Aufschlüsselung, 1 bis 100 | 25 |
get_top_movers
Geltungsbereich results:read. Gewinner und Verlierer der letzten N Tage gegenüber den N Tagen davor, als Seiten oder Suchanfragen, jeweils mit Klicks, Impressionen und Position beider Zeiträume.
| Parameter | Bedeutung | Vorgabe |
|---|---|---|
website_id |
Pflicht; ID aus list_websites |
|
dimension |
query oder page |
query |
days |
7, 14, 28 oder 90 |
28 |
limit |
Einträge je Richtung, 1 bis 50 | 10 |
min_impressions |
Mindestzahl an Impressionen, damit ein Eintrag zählt | 10 |
query_search_analytics
Geltungsbereich results:read. Freie Abfrage der Suchdaten: gruppieren nach date, query, page, country, device oder search_appearance, filtern je Dimension mit equals, not_equals, contains, not_contains, regex oder not_regex, Suchtypen web, image, video, news, discover und googleNews, sortieren, bis 1.000 Zeilen, Raster Tag, Woche oder Monat. Mit fresh=true kommen auch die neuesten, noch nicht endgültigen Tage.
query_top_queries und query_top_pages
Geltungsbereich results:read. Die besten Suchanfragen beziehungsweise Seiten eines Zeitraums, mit Textfilter oder Regex, Mindestzahl an Impressionen und auf Wunsch einem Vergleich je Zeile.
query_countries und query_devices
Geltungsbereich results:read. Summen je Land beziehungsweise Gerät mit Anteil und Vergleich.
get_page_performance
Geltungsbereich results:read. Verlauf einer Seite mit Vergleich und ihren wichtigsten Suchanfragen.
get_query_performance
Geltungsbereich results:read. Verlauf einer Suchanfrage mit den Seiten, die dafür ranken; zwei oder mehr Seiten können auf Kannibalisierung hindeuten.
query_search_appearance
Geltungsbereich results:read. Darstellung in der Suche (Rich Results und andere Erscheinungsformen), immer als Live-Abfrage bei Google.
list_keywords
Geltungsbereich keywords:read. Keywords einer Website mit Score, Suchvolumen, Schwierigkeit und Stand der Daten, nach Score sortiert.
| Parameter | Bedeutung | Vorgabe |
|---|---|---|
website_id |
Pflicht; ID aus list_websites |
|
status |
candidate, selected, planned oder rejected |
alle |
limit |
Einträge je Seite, 1 bis 100 | 50 |
offset |
Startposition zum Blättern | 0 |
list_articles
Geltungsbereich articles:read. Beiträge einer Website, neueste zuerst, mit Status, Veröffentlichung, Live-Adresse und den Search-Console-Werten der letzten 28 Tage mit Daten (Klicks, Impressionen, durchschnittliche Position).
| Parameter | Bedeutung | Vorgabe |
|---|---|---|
website_id |
Pflicht; ID aus list_websites |
|
status |
Beitragsstatus, zum Beispiel entwurf, angefragt oder publiziert |
alle |
limit |
Einträge je Seite, 1 bis 100 | 25 |
offset |
Startposition zum Blättern | 0 |
get_article
Geltungsbereich articles:read. Ein Beitrag als Klartext ohne HTML, mit Teaser, Quellen, Faktencheck- und Qualitätswert, Live-Adresse und den Klicks der letzten 28 Tage. Ein Beitrag aus einem fremden Workspace heißt „nicht gefunden“.
| Parameter | Bedeutung | Vorgabe |
|---|---|---|
article_id |
Pflicht; ID aus list_articles |
|
max_chars |
Länge des Textes, 0 bis 50.000; 0 liefert nur die Metadaten |
12.000 |
get_onpage_findings
Geltungsbereich onpage:read. Ergebnis des letzten fertigen Onpage-Audits: die Lage, die wichtigsten Maßnahmen und die Befundgruppen je Regel mit Schwere (error, warning, info) und der Zahl der Adressen, die offen, behoben oder erledigt sind. Mit rule_id kommen die betroffenen Adressen einer Regel, seitenweise, dazu die konkrete Karte wie in der Onpage-Ansicht: Befund, Lösungsweg, Code-Schnipsel und Beispiele mit Ist und Soll. Ohne fertiges Audit gibt es einen Hinweis mit dem nächsten Termin. Der Aufruf kostet kein Kontingent.
| Parameter | Bedeutung | Vorgabe |
|---|---|---|
website_id |
Pflicht; ID aus list_websites |
|
severity |
error, warning oder info |
alle |
rule_id |
Regel, deren betroffene Adressen du sehen willst | |
only_open |
nur offene Befunde | |
limit |
Einträge je Seite, 1 bis 100 | 25 |
offset |
Startposition zum Blättern | 0 |
get_audit_overview
Geltungsbereich onpage:read. Das letzte Audit als Ganzes: Lage, Punktzahl, dringende Befunde, die wichtigsten Maßnahmen mit konkreten Karten (Befund, Lösungsweg, Code-Schnipsel, Fundstellen mit Ist und Soll), weitere Maßnahmen, offene noindex-Rückfragen, bewusst Ausgeschlossenes, der GEO-Teil und der Verlauf der letzten Audits.
| Parameter | Bedeutung | Vorgabe |
|---|---|---|
website_id |
Pflicht; ID aus list_websites |
|
history |
Zahl der Audits im Verlauf, bis 12 | 6 |
get_keyword_occupancy
Geltungsbereich onpage:read. Ob ein Keyword schon von einer Seite belegt ist, dazu weitere Seiten, die dafür ranken (Kannibalisierung). Nur gespeicherte Daten, nie ein bezahlter Abruf.
| Parameter | Bedeutung | Vorgabe |
|---|---|---|
website_id |
Pflicht; ID aus list_websites |
|
keyword |
Pflicht; das zu prüfende Keyword |
list_internal_link_suggestions
Geltungsbereich onpage:read. Ohne url die Seitenliste mit Inhaltslinks, eingehenden Links und der Angabe, ob Vorschläge schon berechnet sind. Mit url die bestehenden Links der Seite und die Vorschläge mit Ziel, Ankertext, Textstelle, Score (60 bis 100) und Begründung. Schon berechnete Seiten sind immer frei; eine neue Berechnung ist auf 10 Seiten je Website und Tag begrenzt, die Antwort nennt den Rest.
| Parameter | Bedeutung | Vorgabe |
|---|---|---|
website_id |
Pflicht; ID aus list_websites |
|
url |
Seite, für die du Links und Vorschläge sehen willst | |
view |
important (ohne die Seiten, die du ausgeblendet hast), hidden oder all |
important |
Jede Seite trägt das Feld hidden.
list_crawls
Geltungsbereich crawl:read. Die Crawl-Läufe der Website, neueste zuerst, mit Status, Datum, Seitenzahl, ob Crawl-Daten abrufbar sind und welcher Lauf der aktuelle ist. Die crawl_id daraus nutzen die anderen Crawl-Werkzeuge; ohne crawl_id gilt der neueste Lauf.
| Parameter | Bedeutung | Vorgabe |
|---|---|---|
website_id |
Pflicht; ID aus list_websites |
get_crawl_summary
Geltungsbereich crawl:read. Kennzahlen eines Laufs: Verteilung der Statuscodes und der Indexierbarkeit, durchschnittliche Ladezeit und Wortzahl, Seitentypen, Befunde je Regel und Kategorie sowie die Zahlen der Analysen (Waisen, Canonical-Ketten, Duplikate, Kannibalisierung, kaputte externe Links).
| Parameter | Bedeutung | Vorgabe |
|---|---|---|
website_id |
Pflicht; ID aus list_websites |
|
crawl_id |
Lauf aus list_crawls |
der neueste Lauf |
list_crawl_pages
Geltungsbereich crawl:read. Seitenliste eines Laufs mit Filtern und Sortierung. Je Seite Title, Meta-Description, H1, Canonical, Indexierbarkeit, Tiefe, interne Links ein und aus, Wörter, Seitentyp, Ladezeit, Klicks, Impressionen und Position aus der Search Console sowie die Zahl der Befunde.
| Parameter | Bedeutung | Vorgabe |
|---|---|---|
website_id |
Pflicht; ID aus list_websites |
|
crawl_id |
Lauf aus list_crawls |
der neueste Lauf |
status_code, indexability, page_type, finding_type, search |
Filter | |
sort |
Sortierung: url, status_code, title, word_count, load_time_ms, inlinks_count, outlinks_internal, outlinks_external, indexability, depth, link_score, own_word_count, issues_count, gsc_clicks, gsc_impressions, gsc_ctr oder gsc_position |
url |
order |
asc oder desc |
|
limit |
Einträge je Seite, 1 bis 200 | 50 |
offset |
Startposition zum Blättern | 0 |
get_page_details
Geltungsbereich crawl:read. Eine Seite per url oder page_id mit allen Feldern, Befunden, Ankertexten, Links ein und aus, den gespeicherten Search-Console-Werten und dem Verlauf über frühere Crawls.
| Parameter | Bedeutung | Vorgabe |
|---|---|---|
website_id |
Pflicht; ID aus list_websites |
|
url oder page_id |
die Seite | |
crawl_id |
Lauf aus list_crawls |
der neueste Lauf |
links_limit |
Links je Richtung, bis 200 | 50 |
get_crawl_analysis
Geltungsbereich crawl:read. Die Analysen eines Laufs, mit Blättern.
| Parameter | Bedeutung | Vorgabe |
|---|---|---|
website_id |
Pflicht; ID aus list_websites |
|
crawl_id |
Lauf aus list_crawls |
der neueste Lauf |
analysis |
Pflicht: duplicates (kind = exact oder near), cannibalization, orphans (source, status), canonical (kind = chain, loop, unlinked oder not_indexable), sitemap, sitemap_urls (kind Pflicht: in_index, not_indexable, missing_in_sitemap oder not_crawled), facets, external_links (status, host) oder redirects |
get_crawl_comparison
Geltungsbereich crawl:read. Was sich zum vorigen Lauf geändert hat, je Kategorie mit den betroffenen URLs und den Werten vorher und nachher. Kategorien sind unter anderem new, removed, status_changed, indexability_changed, canonical_changed, title_changed, description_changed, h1_changed, content_changed, word_count_changed, page_type_changed, depth_changed und redirect_changed.
| Parameter | Bedeutung | Vorgabe |
|---|---|---|
website_id |
Pflicht; ID aus list_websites |
|
crawl_id |
Lauf aus list_crawls |
der neueste Lauf |
categories |
nur diese Kategorien | alle |
page, per_page |
Blättern, per_page bis 200 |
get_domain_policy
Geltungsbereich crawl:read. Die Domain-Politik des Laufs: Schwellen und gewollte Muster, nur lesend.
| Parameter | Bedeutung | Vorgabe |
|---|---|---|
website_id |
Pflicht; ID aus list_websites |
|
crawl_id |
Lauf aus list_crawls |
der neueste Lauf |
get_uptime_status
Geltungsbereich monitoring:read. Je überwachter Adresse der Status (up, down, unknown), die Verfügbarkeit in Prozent für 24 Stunden, 7, 30 und 90 Tage, die Antwortzeit (Mittel und p95 der letzten 24 Stunden), das SSL-Zertifikat (gültig bis, Resttage, Warnstufe) und ein laufender Ausfall. Dazu Prüfabstand und Zielgrenze deines Pakets.
| Parameter | Bedeutung | Vorgabe |
|---|---|---|
website_id |
Pflicht; ID aus list_websites |
list_incidents
Geltungsbereich monitoring:read. Bestätigte Ausfälle der letzten N Tage, neueste zuerst, mit Beginn, Ende, Dauer und Ursache (DNS, Verbindung, TLS, Zeitüberschreitung, HTTP 4xx/5xx, Pflichttext fehlt, Weiterleitung).
| Parameter | Bedeutung | Vorgabe |
|---|---|---|
website_id |
Pflicht; ID aus list_websites |
|
days |
Zeitraum in Tagen, 1 bis 365 | 30 |
limit |
Einträge je Seite, 1 bis 100 | 20 |
offset |
Startposition zum Blättern | 0 |
Schreibende Werkzeuge
Die schreibenden Werkzeuge laufen über dieselben Wege wie die Oberfläche und die Produkt-API. Jedes braucht einen eigenen Geltungsbereich; articles:publish ist beim Anlegen eines Schlüssels nie vorausgewählt und trägt in der Schlüsselverwaltung einen roten Warnhinweis. approve_article und publish_article sind als destruktiv gekennzeichnet: Ein Agent soll sie nur aufrufen, wenn du es ausdrücklich verlangst; das steht auch in den Hinweisen des Servers.
create_article_draft
Geltungsbereich articles:write. Legt einen Beitragsentwurf an; evnxt recherchiert und schreibt ihn dann. Verbraucht Kontingent oder Credits; ist beides aufgebraucht, kommt eine klare Meldung. Veröffentlicht nichts.
| Parameter | Bedeutung | Vorgabe |
|---|---|---|
website_id |
Pflicht; ID aus list_websites |
|
title |
Pflicht; 5 bis 180 Zeichen | |
keyword |
Zielkeyword | |
kind |
redaktionell, produktratgeber oder vergleich |
|
brief |
Briefing, bis 2.000 Zeichen | |
scheduled_at |
Termin als ISO 8601, in der Zukunft |
approve_article
Geltungsbereich articles:publish. Gibt einen Beitrag im Status angefragt frei; je nach Einstellung der Website wird er dann veröffentlicht. Die Qualitätssperre gilt. Websites im manuellen Modus lassen sich so nicht freigeben.
| Parameter | Bedeutung | Vorgabe |
|---|---|---|
article_id |
Pflicht; ID aus list_articles |
publish_article
Geltungsbereich articles:publish. Veröffentlicht einen Beitrag ins CMS. Erlaubt im manuellen Modus und als zweiter Versuch für freigegebene Beiträge, deren CMS-Veröffentlichung fehlgeschlagen ist.
| Parameter | Bedeutung | Vorgabe |
|---|---|---|
article_id |
Pflicht; ID aus list_articles |
mark_finding_done
Geltungsbereich onpage:write. Markiert die Befunde einer Regel als erledigt, für alle oder für ausgewählte Adressen. Das Audit aktualisiert sich danach in ein paar Minuten. Höchstens 20 Änderungen je Website und Minute.
| Parameter | Bedeutung | Vorgabe |
|---|---|---|
website_id |
Pflicht; ID aus list_websites |
|
rule_id |
Pflicht; die Regel | |
urls |
nur diese Adressen, bis 50 | alle |
note |
Notiz, bis 500 Zeichen | |
undo |
true nimmt die Markierung zurück, für die ganze Regel oder eine Adresse |
false |
add_monitoring_url
Geltungsbereich monitoring:write. Nimmt eine Seite der eigenen Domain in die Erreichbarkeitsprüfung auf, optional mit Pflichttext. Die Paketgrenze gilt, Doppelte werden abgelehnt.
| Parameter | Bedeutung | Vorgabe |
|---|---|---|
website_id |
Pflicht; ID aus list_websites |
|
url |
Pflicht; Adresse der eigenen Domain | |
required_text |
Pflichttext, bis 200 Zeichen |
Werkzeuge seit Version 2.1.0
Seit Version 2.1.0 gibt es 100 Werkzeuge, seit 2.5.0 sind es 112. Die 80 neuen sind hier nach Gruppen geordnet; wo nichts anderes steht, sind sie nur lesend. Ein Eingabefehler liefert seit 2.1.0 den Regeltext zurück, nicht mehr „Internal error“; seit 2.2.0 ist dieser Text immer englisch.
Analysen der Suchdaten
Geltungsbereich results:read, alle lesend.
| Werkzeug | Was es liefert |
|---|---|
get_ranking_changes |
Suchanfragen oder Seiten, die gegenüber der Vorperiode oder dem Vorjahr neu, verloren, besser oder schlechter sind |
find_decaying_content |
Seiten oder Suchanfragen, die gegenüber ihrem eigenen Höchststand Klicks verloren haben |
get_decay_overview |
Monats- oder Wochenmatrix der ganzen Website: Kennzahlen je Periode und wie viele Seiten gewachsen oder gefallen sind |
analyze_sampling_impact |
wie viel Traffic Google in anonymisierten Suchanfragen verbirgt |
get_position_distribution |
Verteilung der Suchanfragen oder Seiten über die Positionen 1 bis 3, 4 bis 10, 11 bis 20 und ab 21 |
analyze_ctr_curve |
die eigene Klickrate je Position im Vergleich zur Branchenkurve, mit den Suchanfragen, die darunter liegen |
analyze_cannibalization |
Suchanfragen, für die zwei oder mehr Seiten konkurrieren |
find_striking_distance |
Seite-Suchanfrage-Paare knapp hinter den Spitzenplätzen (Vorgabe Position 4 bis 20) mit geschätzten Zusatzklicks |
score_opportunities |
SEO-Chancen nach geschätzten Zusatzklicks: Striking Distance, Klickraten-Lücke und weitere |
breakdown_by_path |
Leistung je Pfadanfang, zum Beispiel /blog oder /shop/schuhe |
get_branded_performance |
Suchanfragen mit und ohne Marke im Vergleich (Markenbegriffe aus set_brand_terms) |
get_longtail_clusters |
Suchanfragen nach Länge: Head (1 bis 2 Wörter), Mid (3 bis 4) und Longtail (ab 5) |
analyze_query_shapes |
Schätzung aus dem Wortlaut: wie viele Suchanfragen KI-artig, Fragen, Vergleiche, lang oder Standard sind |
get_query_shape_trend |
Verlauf dieser Formen je Monat oder Woche |
get_sitemap_performance |
Leistung der URLs aus den XML-Sitemaps des letzten Crawls (auch crawl:read) |
Zeitreihen
Geltungsbereich results:read, alle lesend.
| Werkzeug | Was es liefert |
|---|---|
detect_anomalies |
ungewöhnliche Tage bei Klicks oder Impressionen, verglichen mit demselben Wochentag der acht Wochen davor |
detect_change_points |
dauerhafte Niveauwechsel bei Klicks oder Impressionen mit dem ersten Tag jedes neuen Niveaus |
forecast_traffic |
statistische Prognose der täglichen Klicks oder Impressionen für 1 bis 180 Tage |
list_algo_updates |
Google-Updates und Störungen aus dem öffentlichen Google Search Status Dashboard |
list_events |
Ereignisse der Website, wie als Markierungen in den Diagrammen: Ausfälle, Beiträge, Seiten-Änderungen, Google-Updates, eigene Anmerkungen |
Indexierung
Lesen mit indexing:read, Ändern mit indexing:write. Google erlaubt 2.000 URL-Prüfungen je Tag und Property; davon nutzt der Index-Tracker höchstens 1.500. Tracker-URLs je Website: Free 50, Starter 500, größere Pakete 1.800.
| Werkzeug | Geltungsbereich | Was es tut |
|---|---|---|
inspect_url |
indexing:read |
fragt Google (URL Inspection API), ob eine URL indexiert ist und warum |
bulk_inspect_urls |
indexing:read |
prüft bis zu 25 URLs auf einmal, mit Zusammenfassung |
get_inspection_quota |
indexing:read |
wie viele der 2.000 täglichen Prüfungen heute verbraucht sind; kostet kein Kontingent |
list_url_inspections |
indexing:read |
Verlauf der gespeicherten URL-Prüfungen, neueste zuerst |
get_index_tracker_report |
indexing:read |
Bericht des Index-Trackers: indexiert, nicht indexiert, nicht geprüft, neu indexiert oder verloren |
list_sitemaps |
indexing:read |
in der Search Console eingereichte Sitemaps mit Status, Warnungen und Fehlern |
get_indexnow_settings |
indexing:read |
IndexNow-Einrichtung (Bing, Yandex, Seznam, Naver; Google nutzt IndexNow nicht): Schlüssel und Ablageort der Schlüsseldatei |
add_tracked_urls |
indexing:write |
nimmt URLs in den Index-Tracker auf; nicht indexierte werden täglich, indexierte wöchentlich geprüft (schreibend) |
remove_tracked_urls |
indexing:write |
entfernt URLs aus dem Tracker, mit all=true alle; der Prüfverlauf bleibt (schreibend) |
check_tracked_urls_now |
indexing:write |
prüft bis zu 25 Tracker-URLs sofort, die am längsten ungeprüften zuerst (schreibend, kostet Kontingent) |
submit_indexnow_urls |
indexing:write |
meldet neue oder geänderte URLs an IndexNow-Suchmaschinen (schreibend) |
submit_sitemap |
indexing:write |
reicht eine XML-Sitemap bei der Search Console ein (schreibend) |
submit_sitemap braucht das Schreibrecht der Google-Verbindung. Neue Search-Console-Verbindungen haben es: Google fragt beim Verbinden „abrufen und verwalten“ an, und evnxt nutzt das nur zum Einreichen von Sitemaps; Properties, Nutzer und Einstellungen ändert es nie. Wurde die Search Console verbunden, bevor evnxt Sitemaps einreichen konnte, kann die Verbindung nur lesen, bis du sie in evnxt neu verbindest; bis dahin antwortet das Werkzeug mit read_only_connection und nennt den Weg. Siehe Search Console verbinden.
Gruppen und Einstellungen
Lesen mit results:read, Ändern mit settings:write.
| Werkzeug | Geltungsbereich | Was es tut |
|---|---|---|
list_content_groups |
results:read |
Inhaltsgruppen der Website: gespeicherte Regeln und die Seitentypen des Crawlers |
get_content_group_performance |
results:read |
Leistung je Inhaltsgruppe |
create_content_group, update_content_group, delete_content_group |
settings:write |
Inhaltsgruppe aus 1 bis 10 Regeln anlegen, ändern, löschen (schreibend) |
list_query_clusters |
results:read |
Suchanfrage-Cluster: gespeicherte Regeln und die Keyword-Cluster der Keyword-Recherche |
get_query_cluster_performance |
results:read |
Leistung je Suchanfrage-Cluster |
create_query_cluster, delete_query_cluster |
settings:write |
Suchanfrage-Cluster aus 1 bis 10 Regeln anlegen oder löschen (schreibend) |
list_saved_filters |
results:read |
gespeicherte Filter für query_search_analytics |
save_filter, delete_saved_filter |
settings:write |
Filter unter einem Namen speichern oder löschen (schreibend) |
set_brand_terms |
settings:write |
Markenbegriffe der Website setzen; eine leere Liste löscht sie (schreibend) |
set_website_tags |
settings:write |
Tags der Website setzen, zum Beispiel Kunde, Land oder Shop (schreibend) |
create_annotation, update_annotation, delete_annotation |
settings:write |
eigene Markierung in der Zeitleiste anlegen, ändern, löschen, zum Beispiel ein Relaunch; automatische Ereignisse lassen sich nicht löschen (schreibend) |
Berichte und Portfolio
| Werkzeug | Geltungsbereich | Was es tut |
|---|---|---|
list_reports |
reports:read |
gespeicherte Wochen- und Monatsberichte, neueste zuerst |
get_report |
reports:read |
der vollständige Inhalt eines Berichts |
generate_report |
reports:read |
rechnet einen Wochen- oder Monatsbericht sofort, ohne ihn zu speichern |
create_report_share_link |
reports:share |
Teil-Link auf einen Bericht ohne Anmeldung, öffentlich unter evnxt.de/bericht/ mit 48 Zeichen, Ablauf 1 bis 90 Tage (Vorgabe 30), höchstens 20 aktive je Bericht, noindex (schreibend) |
list_report_share_links |
reports:share |
Teil-Links mit Status, Ablauf und Aufrufen |
revoke_report_share_link |
reports:share |
zieht einen Teil-Link sofort zurück (schreibend) |
get_cross_site_summary |
results:read |
Suchleistung aller Websites des Workspaces auf einmal |
get_tag_group_view |
results:read |
Suchleistung je Website-Tag |
list_portfolio |
portfolio:read |
für Agenturen: die angenommenen, verknüpften Kunden-Workspaces mit Websites und Search-Console-Status |
Mit portfolio:read lesen Agenturen auch die Daten der verknüpften Kunden-Workspaces. Über das Portfolio gehen nur lesende Werkzeuge; schreibende Werkzeuge, URL-Prüfungen und Teil-Links nie.
Crawl und Suchdaten zusammen
Geltungsbereiche results:read und crawl:read, alle lesend. Beim ersten Aufruf nach einem neuen Crawl kann die Antwort preparing lauten; dann eine Minute später erneut fragen.
| Werkzeug | Was es liefert |
|---|---|
get_page_type_performance |
Suchleistung je Seitentyp (Produkt, Kategorie, Artikel und weitere), wie vom Crawler erkannt |
find_index_gaps |
Indexierungslücken aus Crawl und Search Console, ohne Google-Kontingent: indexierbare Seiten ohne Impressionen, nicht indexierbare Seiten mit Traffic |
prioritize_fixes |
Audit-Befunde nach dem Suchtraffic der betroffenen Seiten geordnet |
get_page_360 |
alles zu einer URL in einer Antwort: Suchdaten, Crawl-Felder, Befunde, Links, Verlauf |
get_competitor_overview |
Wettbewerber mit wöchentlicher Sichtbarkeit und Keyword-Lücken (Geltungsbereich keywords:read) |
get_ai_visibility |
gemessene KI-Sichtbarkeit aus dem letzten Lauf: wie oft ChatGPT, Gemini, Perplexity, Claude und Google AI Overviews die Website nennen |
explain_traffic_change |
erklärt einen Anstieg oder Einbruch: findet den Zeitpunkt, vergleicht 28 Tage davor und danach, nennt Seiten, Suchanfragen und Ereignisse; seit 2.5.0 je tragender Seite archive_changes (im Vergleichszeitraum neu erfasste Fassungen aus dem Seitenarchiv), ein Wayback-Link auf den Tag vor dem Wechsel und die Hypothese archived_page_changes |
plan_striking_distance |
Maßnahmenplan für Suchanfragen auf Position 4 bis 20 mit dem größten Klickpotenzial |
resolve_cannibalization |
Empfehlung, welche Seite bei Kannibalisierung bleiben soll |
get_content_refresh_plan |
Auffrischungsplan für Seiten, die gegenüber ihrem Höchststand verloren haben |
Core Web Vitals (seit 2.2.0)
Geltungsbereich results:read, alle lesend. Quelle ist der Chrome UX Report (CrUX) von Google: Felddaten echter Chrome-Nutzer der letzten 28 Tage. Kleine Websites haben dort oft keine Daten; dann lautet das Urteil insufficient_data.
| Werkzeug | Was es liefert |
|---|---|
get_core_web_vitals |
Core Web Vitals der ganzen Website (Origin) oder einer URL: p75 von LCP, INP, CLS, FCP und TTFB mit Bewertung und den Anteilen gut, verbesserungswürdig und schlecht, dazu das Gesamturteil (passed, failed, insufficient_data); Vorgabe Smartphone und Desktop. Mit URL auch Ladezeit und Seitentyp aus dem letzten evnxt-Crawl |
get_core_web_vitals_history |
wöchentlicher Verlauf aus der CrUX History API (bis zu 40 überlappende 28-Tage-Fenster, etwa 9 Monate) für die Website oder eine URL: je Fenster p75 und Anteil guter Besuche für LCP, INP, CLS, FCP und TTFB, je Metrik die Richtung (besser, schlechter, stabil), erste und letzte Bewertung und der größte Sprung zwischen zwei Fenstern. Damit datierst du eine Verschlechterung oder prüfst, ob eine Korrektur gewirkt hat |
get_core_web_vitals_by_page_type |
Core Web Vitals je Seitentyp (auch crawl:read): Der Crawler ordnet die Seiten ein (Produkt, Kategorie, Artikel und weitere), für die klickstärksten Seiten jedes Typs holt evnxt die Felddaten der URL. Je Typ: Seiten mit Daten, wie viele bestehen, Median-p75 von LCP, INP, CLS und TTFB sowie die Ladezeit des Crawlers; dazu die ganze Website zum Vergleich. Zeigt, welche Vorlagen die Website bremsen. Vorgabe Smartphone, 3 Seiten der 6 Typen mit den meisten Klicks in 28 Tagen |
PageSpeed (seit 2.4.0)
Geltungsbereich results:read, beide lesend; get_pagespeed_by_page_type braucht zusätzlich crawl:read. Quelle ist PageSpeed Insights von Google: ein Lighthouse-Labortest auf Googles Servern, der die Seite selbst aufruft. Er funktioniert für jede öffentliche Seite, auch ohne Besucher. Laborwerte schwanken von Lauf zu Lauf und sind nicht die Felddaten, die Google für das Ranking nutzt; dafür gibt es get_core_web_vitals.
| Werkzeug | Was es liefert |
|---|---|
run_pagespeed_test |
Labortest für eine URL der Website (Vorgabe: die Startseite), für Smartphone, Desktop oder beides gleichzeitig: Performance-Score, Labormesswerte (LCP, CLS, TBT, FCP, Speed Index, Serverantwortzeit), die nicht bestandenen Empfehlungen nach geschätzter Einsparung sortiert, dazu die Chrome-Felddaten, falls Google welche hat. Optional weitere Prüfungen über checks: seo, accessibility, best-practices. Ein Test dauert 10 bis 60 Sekunden; Ergebnisse liegen 24 Stunden im Zwischenspeicher, fresh=true erzwingt einen neuen Test, höchstens 10 je Website und Stunde |
get_pagespeed_by_page_type |
Labortest je Seitentyp (auch crawl:read): Der Crawler ordnet die Seiten ein, für die klickstärksten Typen testet evnxt jeweils die Seite mit den meisten Klicks, alle gleichzeitig. Je Typ Performance-Score, Labor-LCP, CLS und TBT und die wichtigsten Empfehlungen; dazu shared_findings, Empfehlungen, die mehrere Vorlagen gemeinsam haben und meist einmal im gemeinsamen Code behoben werden. Der erste Aufruf dauert bis etwa eine Minute, danach 24 Stunden im Zwischenspeicher |
Seitenarchiv (seit 2.5.0)
Geltungsbereich crawl:read, lesend, nur für Websites mit dem Modul Onpage. Der Monats-Crawl legt eine Kopie einer Seite an, wenn sich Titel, Beschreibung, H1, Canonical, robots, hreflang, die Typen der strukturierten Daten oder der Text ändern; Kopien bleiben 36 Monate. Was das für die Datenschutzerklärung heißt, steht dort im Absatz „Seitenarchiv“.
| Werkzeug | Was es liefert |
|---|---|
get_page_history |
frühere Fassungen einer Seite aus dem Seitenarchiv: die Liste der Fassungen mit den jeweils geänderten Feldern und den Vergleich zweier Fassungen Feld für Feld und Textblock für Textblock. Vorgabe sind die beiden neuesten Fassungen; mit compare_date die an diesem Tag gültige Fassung gegen die neueste, alternativ zwei Fassungs-IDs. Für die Zeit vor dem Archivbeginn liefert es Links zur Wayback Machine; das sind nur Links, evnxt fragt das Internet Archive nicht ab. Search-Console-Schreibweisen der Adresse (mit oder ohne www, mit oder ohne Schrägstrich) werden gefunden |
Migration und SEO-Experimente (seit 2.3.0)
Lesen mit results:read; Experimente anlegen und löschen mit settings:write.
| Werkzeug | Geltungsbereich | Was es tut |
|---|---|---|
compare_migration |
results:read |
Vorher-nachher-Vergleich um einen Umzug oder Relaunch: das Fenster vor migration_date gegen das Fenster danach, je Tag verglichen; Gesamtwerte der Website, Erholung der Klicks, gehaltene, gefallene und verlorene Seiten und Suchanfragen, neue Suchanfragen. Mit old_website_id kommen die Vorher-Daten von der Website der alten Domain. CTR in Prozent |
check_migration_redirects |
results:read |
prüft live, wohin alte URLs nach einem Umzug führen: folgt jeder Weiterleitungskette (HEAD-Abrufe von evnxt, bis zu 5 Weiterleitungen) und bewertet sie mit ok, chain, temporary, no_redirect, to_homepage, broken, server_error, loop, too_many_hops, blocked oder error, mit den Klicks der Ziel-URL. Alte URLs sind die klickstärksten Seiten vor migration_date in der Search Console oder die übergebenen urls. Zählt dreifach gegen das Minutenlimit, höchstens 2 Aufrufe je Minute und Website; seit 2.5.0 je alter URL archived (letzter Stand im Seitenarchiv vor migration_date) und wayback_before_migration |
create_experiment |
settings:write |
registriert ein SEO-Experiment: die geänderten Seiten (test: eine URL-Liste, eine Inhaltsgruppe oder Regeln), der erste Tag mit der Änderung (start_date), optional ein Enddatum und Kontrollseiten (Vorgabe: alle anderen Seiten der Website). Gemessen wird mit get_experiment_results (schreibend) |
list_experiments |
results:read |
Experimente der Website mit Status (planned, running, finished), Test- und Kontrollauswahl und bei gestarteten das Kernergebnis aus dem Search-Console-Archiv: Klick-Uplift der Testseiten gegen die Kontrollseiten in Prozent, p-Wert und Seitenzahl beider Gruppen |
get_experiment_results |
results:read |
misst ein Experiment aus dem Search-Console-Archiv: Klicks, Impressionen, CTR (Prozent) und Position der Test- und Kontrollseiten in den Tagen davor und ab dem Start, der Uplift bei Klicks und Impressionen in Prozent (Differenz der Differenzen) und ein Signifikanztest (Welch-t-Test auf täglichen Log-Verhältnissen). Vorgabe 28 Tage davor und bis zu 28 Tage ab dem Start |
delete_experiment |
settings:write |
löscht ein Experiment der Website (experiment_id aus list_experiments); Suchdaten und Inhaltsgruppen bleiben unberührt (schreibend) |
Besonderheiten
- Search-Console-Daten laufen zwei bis drei Tage nach. Jede Suchdaten-Antwort nennt deshalb
data_until(letzter Tag mit Daten),settled_through(bis zu diesem Tag ändert Google nichts mehr, drei Tage vordata_until) unddata_source(archive= bei evnxt gespeichert,live_api= Live-Abfrage bei Google). - Seit Version 2.0.0 steht die CTR in allen MCP-Antworten in Prozent (0 bis 100, zwei Nachkommastellen) wie in der Search Console; vorher war sie ein Anteil wie 0,0247. Die REST-API unter
/api/v1bleibt bei Anteilen. - Live-Abfragen (alles, was evnxt nicht speichert, zum Beispiel Suchanfrage je Land oder Länder und Geräte bei Websites in einem Unterverzeichnis) laufen über die Google-Verbindung des Kunden. Sie brauchen eine aktive Verbindung, zählen dreifach gegen das Minutenlimit des Schlüssels und werden zehn Minuten zwischengespeichert.
- Liegt die Website in einem Unterverzeichnis einer größeren Domain, zählen nur deren Seiten (
"scope": "directory"), wie in der evnxt-Oberfläche. - Ist keine Search Console verbunden, bekommt der Agent einen Hinweis statt eines Fehlers.
- Eine fremde oder unbekannte
website_idergibt den FehlerWebsite not found. - Große Felder sind gekürzt und mit
[truncated]markiert.
Sicherheit
Suchanfragen, Seitenadressen, Keywords, Beitragstitel und -texte, Audit-Texte, Code-Schnipsel, Ankertexte, betroffene Adressen und andere Inhalte, die von außen stammen, stehen in den Antworten in einem Block untrusted_content. Ein Agent soll sie als Daten behandeln, nie als Anweisung. Der Server ruft keine fremden Seiten ab (Abfragen an die Schnittstellen von Google und IndexNow sind API-Aufrufe). Zwei Ausnahmen: check_migration_redirects ruft die alten URLs deiner Website ab und folgt ihren Weiterleitungen, auch auf eine andere Domain wie die neue nach einem Umzug (HEAD, bei 405 oder 501 einmal GET, höchstens 5 Weiterleitungen, 5 Sekunden je Anfrage; die alten URLs müssen zur Search-Console-Property der Website gehören). get_indexnow_settings mit check=true ruft die IndexNow-Schlüsseldatei auf deiner Website ab. Private, lokale und Nicht-http-Adressen fragt der Server nie ab.
Schreibende Werkzeuge gibt es nur mit eigenem Geltungsbereich (siehe oben). Vergib articles:publish, onpage:write und monitoring:write nur an Werkzeuge, bei denen du jede Aktion selbst auslöst. Bei einer Verbindung über dein Konto ist Lesen vorausgewählt, Ändern nicht.
Einrichtung
Claude.ai und ChatGPT, ohne Schlüssel: In Claude.ai unter Einstellungen → Connectors einen eigenen Connector mit der Adresse https://evnxt.de/mcp hinzufügen, in ChatGPT unter Connectors ebenso. Client-ID oder Secret brauchst du nicht, die App registriert sich selbst. Beim Verbinden öffnet sich evnxt: Du meldest dich an (mit Zwei-Faktor-Code, falls eingerichtet), wählst auf der Zustimmungsseite den Workspace und kreuzt die Rechte an. Lesen ist vorausgewählt, Ändern nicht. Verbinden können nur Inhaber oder Administratoren eines Workspaces.
evnxt legt dafür einen API-Schlüssel „Verbindung: App-Name“ an. Er steht in der Liste unter Übersicht → API & MCP; ihn zu widerrufen trennt die App sofort. Welche Apps mit dem Workspace verbunden sind, zeigt je Website auch Website → Verbindungen unter „KI-Agenten (MCP) und API“. Wer im Workspace nicht mehr Administrator ist, verliert die Verbindung ebenfalls. Eine neue Zustimmung ersetzt die alte. Zugangs-Token gelten eine Stunde, die App erneuert sie selbst (30 Tage); Grenzen und Geltungsbereiche sind dieselben wie beim Schlüssel.
Claude Code: mit Schlüssel wie unten, oder ohne --header, dann führt Claude Code durch die Anmeldung im Browser.
claude mcp add --transport http evnxt https://evnxt.de/mcp --header "Authorization: Bearer evx_live_…"
Cursor und andere Werkzeuge mit mcp.json:
{"mcpServers":{"evnxt":{"url":"https://evnxt.de/mcp","headers":{"Authorization":"Bearer evx_live_…"}}}}
Für Fortgeschrittene: Die Verbindung über das Konto ist OAuth 2.1 mit PKCE (S256, Pflicht). Discovery unter https://evnxt.de/.well-known/oauth-protected-resource/mcp und https://evnxt.de/.well-known/oauth-authorization-server, Registrierung per /oauth/register; erlaubt sind Rückleitungen zu claude.ai, claude.com, chatgpt.com, chat.openai.com und localhost sowie die Schemata cursor und vscode.
Beispiele für Fragen an den Agenten: „Welche Suchanfragen haben in den letzten 28 Tagen am meisten Klicks verloren?“, „Vergleiche die Klicks im September mit dem Vorjahr.“, „Welche Onpage-Fehler sind noch offen, und welche Seiten betrifft der wichtigste?“, „War meine Website diesen Monat erreichbar? Liste die Ausfälle.“ „Welche meiner Beiträge bringen die meisten Klicks?“, „Welche Seiten antworten mit 404, und wer verlinkt sie?“, „Welche Seiten kannibalisieren sich?“, „Was hat sich seit dem letzten Crawl an Titeln geändert?“ „Gib mir die konkreten Lösungen für den wichtigsten Onpage-Fehler.“ oder „Lege einen Entwurf zum Keyword Wanderschuhe Damen an.“
Datenschutz
Was ein Agent über den MCP-Server abfragt, geht an den KI-Anbieter, den du nutzt. Dafür bist du verantwortlich. Trage den Schlüssel nur in Werkzeuge ein, denen du vertraust, und widerrufe ihn oder eine Verbindung bei Verdacht unter Übersicht → API & MCP.