Zum Inhalt springen
01Entwickler

Blck Alpaca API & Entwickler-Ressourcen

Alles, was diese Website maschinenlesbar anbietet: OpenAPI-Spezifikation, Markdown-Varianten der Inhalte, llms.txt. Keine Anmeldung, keine Schlüssel.

Was das ist und was nicht

Die Endpunkte hier bedienen die Formulare und die Suche dieser Website. Sie sind keine Produkt-API. Es gibt nichts zu integrieren, kein Konto, keine Zusicherung zur Verfügbarkeit.

Dokumentiert sind sie trotzdem, aus einem Grund: Wer die Seite automatisiert liest, soll die Endpunkte nicht aus dem Frontend-Code rekonstruieren müssen. Und wer gegen ein Rate-Limit läuft, soll vorher wissen, wo es liegt.

Interne Endpunkte stehen bewusst nicht in der Spezifikation: Cache-Invalidierung, Redirect-Karte, die Felder des Spam-Schutzes.

Ressourcen

Feste URLs. Sie ändern sich nicht.

URLZweck
/mcpMCP-Server für Knowledge Base und Website-Check. Streamable HTTP, Revision 2026-07-28 und 2025-11-25 abwärts, nur POST.
/openapi.jsonOpenAPI 3.1, JSON. Alle öffentlichen Endpunkte mit Schemas, operationId und Fehlercodes.
/api/openapi.yamlDieselbe Spezifikation als YAML.
/llms.txtStruktur der Website in Prosa: Services, Knowledge Base, Studien, pro Sprache.
/llms-full.txtLangfassung mit inhaltlichem Abriss statt reiner Linkliste.
/sitemap-index.xmlVollständige URL-Liste, gechunkt.
/feed.xmlRSS der Blog-Beiträge.
/robots.txtCrawler-Regeln inklusive Content-Signal (ai-train=no).

Authentifizierung

Keine. Die öffentlichen Endpunkte kennen weder Schlüssel noch Token noch Konten.

Zwei lassen sich trotzdem nicht sinnvoll skripten: Kontaktformular und SEO-Audit verlangen einen Token, den erst die Seite im Browser erzeugt. In der Spezifikation sind sie als browser-only markiert. Ein 200er bedeutet dort außerdem nicht, dass die Anfrage bearbeitet wurde. Als automatisiert erkannte Anfragen bekommen dieselbe Antwort wie echte.

Kontingente

Endpunkte mit Rate-Limit legen ihren Stand offen, und zwar auf jeder Antwort, nicht erst auf dem 429er. Wer die Header liest, muss nicht gegen die Wand laufen, um das Limit zu kennen.

Ausgeliefert werden zwei Formate nebeneinander: RateLimit und RateLimit-Policy nach dem IETF-Entwurf draft-ietf-httpapi-ratelimit-headers-11, dazu die Legacy-Header RateLimit-Limit, RateLimit-Remaining und RateLimit-Reset, die die meisten Client-Bibliotheken lesen. Der Entwurf ist mit Stand August 2026 kein RFC.

Gilt mehr als ein Kontingent, beim Chat etwa pro IP und pro Session, nennen die beiden erstgenannten Header alle davon. Die Legacy-Header nennen nur das knappste.

Antwort-Header eines Chat-Aufrufs

RateLimit-Policy: "chat-ip";q=50;w=86400, "chat-session";q=20;w=86400
RateLimit: "chat-ip";r=49;t=86399, "chat-session";r=19;t=86399
RateLimit-Limit: 20
RateLimit-Remaining: 19
RateLimit-Reset: 86399
q
Erlaubte Anfragen im Fenster.
w
Länge des Fensters in Sekunden.
r
Davon noch frei.
t
Sekunden bis zum Zurücksetzen. Ein Delta, kein Zeitstempel.

MCP-Server

Die Knowledge Base und der Website-Check sind zusätzlich als MCP-Server erreichbar, unter POST /mcp. Ein Assistent, der ihn verbindet, durchsucht die Artikel, holt Volltexte, ohne HTML zu parsen, und prüft öffentliche Websites auf Agent-Tauglichkeit.

Transport ist Streamable HTTP. Der Endpunkt bedient zwei Protokoll-Generationen auf derselben URL. Revision 2026-07-28 hat den Kern zustandslos gemacht: kein initialize-Handshake, keine Sitzungs-ID, kein GET-Endpunkt. Jede Anfrage ist ein POST für sich und trägt ihre Protokoll-Version im Header MCP-Protocol-Version. Dazu sind Mcp-Method und, bei tools/call, Mcp-Name vorgeschrieben; weichen sie vom Body ab, wird die Anfrage abgelehnt.

Clients auf 2025-11-25, 2025-06-18 oder 2025-03-26 beginnen stattdessen mit initialize und lassen die neuen Header weg. Das offizielle SDK steht in Version 1.30.0 noch auf 2025-11-25, insofern ist das derzeit der übliche Weg. Eine Sitzung entsteht auch dort nicht: Der Server gibt keine Mcp-Session-Id aus, jeder POST steht für sich. Eine Version, die auf keiner der beiden Listen steht, wird mit -32022 und der Liste der unterstützten Revisionen abgelehnt.

Keine Anmeldung. Es gilt dasselbe Kontingent wie bei den übrigen Endpunkten, und die Inhalte dürfen mit Quellennennung verwendet werden.

WerkzeugBeschreibung
search_knowledge_baseVolltextsuche über Titel, Kurzdefinition und Hauptkeyword der Knowledge-Base-Artikel von Blck Alpaca (SEO, GEO, KI-Agenten, Marketing-Automatisierung). Liefert Treffer mit URL und Pfad-Tripel; den Volltext holt get_knowledge_article.
list_knowledge_categoriesGibt den Aufbau der Knowledge Base zurück: alle Kategorien mit ihren Themen, jeweils mit Slug und URL. Einstiegspunkt, wenn kein Suchbegriff bekannt ist.
list_knowledge_topic_articlesAlle veröffentlichten Artikel eines Themas. Kategorie- und Themen-Slug müssen zusammenpassen und stammen aus derselben Sprache; passen sie nicht, sagt die Antwort warum.
get_knowledge_articleVolltext eines Knowledge-Base-Artikels als Markdown, dazu Kurzdefinition, Kernaussagen, belegte Statistiken mit Quelle und FAQ. Das Pfad-Tripel stammt aus search_knowledge_base oder list_knowledge_topic_articles.
audit_websitePrüft eine öffentliche Website auf Agent-Tauglichkeit und GEO: Können KI-Agents sie erreichen, lesen, verstehen und mit ihr arbeiten? Ruft die Seite so ab wie ein Agent (nur GET, ohne Anmeldung, ohne Änderungen) und bewertet fünf Bereiche. Liefert Gesamtwert, Bereichswerte, die drei wirksamsten Befunde mit passendem Guide, alle Einzelprüfungen und einen Link zum vollständigen Bericht. Keine Rechtsbewertung.

Werkzeuge auflisten

curl -X POST "https://blckalpaca.at/mcp" \
  -H "Content-Type: application/json" \
  -H "MCP-Protocol-Version: 2026-07-28" \
  -H "Mcp-Method: tools/list" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Gelistet in Official MCP Registry at.blckalpaca/knowledge-base · Smithery blckalpaca/knowledge-base

In deinem KI-Assistenten verbinden

Eine Adresse für alle: https://blckalpaca.at/mcp, ohne Anmeldung und ohne Schlüssel. Danach stehen im Assistenten die Werkzeuge der Knowledge Base und der Website-Check (audit_website) bereit.

Die Menüpfade stammen aus der Dokumentation der Anbieter, Stand Oktober 2026. Ändert ein Anbieter seine Oberfläche, gilt seine Dokumentation.

Claude (Web und Desktop)

  1. Customize → Connectors öffnen, auf „+ Add" und dann auf „Add custom connector" klicken.
  2. Als Name „Blck Alpaca" und als URL https://blckalpaca.at/mcp eintragen, zweimal mit „Continue" bestätigen und mit „Add" abschließen. Eine Authentifizierung braucht es nicht.
  3. Im Chat über „+" → „Connectors" den Schalter für Blck Alpaca einschalten.

In allen Plänen verfügbar, im Free-Plan ist ein eigener Connector erlaubt. In Team und Enterprise richtet ihn zuerst ein Owner unter Organization settings → Connectors ein.

Claude Code

claude mcp add --transport http blckalpaca https://blckalpaca.at/mcp
  1. Im Terminal ausführen. In einer Sitzung zeigt /mcp, ob die Verbindung steht.

ChatGPT

  1. Unter ChatGPT Plugins auf „+" und dann auf „Add custom MCP server" klicken.
  2. Name und Beschreibung eintragen, unter „Connection" die URL https://blckalpaca.at/mcp angeben, keine Authentifizierung wählen und mit „Create as a plugin" abschließen.
  3. Im Chat „@" tippen und Blck Alpaca auswählen.

Perplexity

  1. In den Kontoeinstellungen unter „Connectors" auf „+ Custom connector" klicken und „Remote" wählen.
  2. Name und URL https://blckalpaca.at/mcp eintragen, als Authentifizierung „None".

Für Pro-, Max- und Enterprise-Konten. In Enterprise muss ein Admin eigene Connectors erst freigeben.

Grok

  1. grok.com/connectors öffnen, „New Connector" und dann „Custom" wählen.
  2. Die URL https://blckalpaca.at/mcp eintragen. Grok erkennt die Werkzeuge selbst und nutzt sie, wenn eine Frage dazu passt.

In Grok Business und Enterprise richtet ein Admin den Connector zuerst in der xAI-Konsole ein.

Gemini CLI

gemini mcp add --transport http -s user blckalpaca https://blckalpaca.at/mcp
  1. Im Terminal ausführen. Ohne „-s user" gilt der Eintrag nur für das aktuelle Projekt. In einer Sitzung zeigt /mcp den Status.

Wer settings.json selbst pflegt: Der Eintrag unter mcpServers braucht „httpUrl", nicht „url". „url" ist für den alten SSE-Transport gedacht.

Andere Clients

  1. Jeder Client mit Streamable HTTP funktioniert: Server-Typ HTTP, Adresse https://blckalpaca.at/mcp, keine Header. Clients, die nur den alten SSE-Transport beherrschen, werden nicht unterstützt.

Fehlerbehebung

Die häufigsten Stolpersteine beim Verbinden, mit Ursache und Abhilfe.

Der Assistent meldet, die Einrichtung sei fehlgeschlagen.
Der Server spricht nur Streamable HTTP mit POST, ab MCP-Revision 2025-03-26. Clients, die einen GET-Endpunkt oder den alten SSE-Transport erwarten, scheitern hier. Die URL muss genau https://blckalpaca.at/mcp lauten: Mit Schrägstrich am Ende antwortet der Server mit einer Weiterleitung, der nicht jeder Client folgt.
Antwort 403 oder eine Prüfseite statt JSON.
Dann hat der Bot-Schutz von Cloudflare die Anfrage abgefangen. Das trifft vereinzelt Programme, die aus Rechenzentren anrufen. Schreib an office@blckalpaca.at, mit Uhrzeit und Client, dann sehen wir in den Protokollen nach.
Antwort 429.
Pro IP-Adresse gelten 240 Anfragen pro Stunde. Wie lange du warten musst, steht im Header Retry-After; den Stand des Kontingents nennt RateLimit auf jeder Antwort. Der Website-Check hat eigene Grenzen: zehn Prüfungen pro Stunde für dieselbe Website und 60 insgesamt. Darüber antwortet das Werkzeug mit rate_limited.
Werkzeuge fehlen oder zeigen alte Beschreibungen.
Viele Assistenten speichern die Werkzeugliste beim Verbinden. Connector trennen und neu verbinden.
Der Website-Check lehnt eine Adresse ab.
Geprüft werden nur öffentliche Websites über http oder https. Private IP-Adressen, interne Hostnamen, Namen ohne Domain-Endung und Adressen, die sich nicht auflösen lassen, lehnt das Werkzeug mit target_not_allowed ab.
Eine Website mit Bot-Schutz schneidet beim Zugang schlecht ab.
Blockiert ihr Bot-Schutz unseren Check, blockiert er in der Regel auch KI-Agents. Das ist dann ein Befund, kein Fehler des Werkzeugs.
Ein Artikel fehlt auf Englisch oder Slowakisch.
Nicht übersetzte Inhalte lässt der Server weg, statt sie auf Deutsch auszuliefern. Mit locale „de" findest du den Artikel in der Originalsprache.

Endpunkte

Erzeugt aus derselben Spezifikation, die unter /openapi.json ausgeliefert wird. Diese Tabelle kann nicht veralten.

EndpunktoperationIdBeschreibung
GET /api/knowledge-searchsearchKnowledgeBaseKnowledge-Base durchsuchenVolltextsuche über Titel, Definition und Hauptkeyword der Knowledge-Base-Artikel.
GET /api/healthgetHealthStatus der AnwendungFür Monitoring.
POST /api/contactsubmitContactFormKontaktanfrage sendenLöst eine Double-Opt-In-Bestätigungsmail aus.
POST /api/newsletter/subscribesubscribeNewsletterNewsletter abonnierenDouble-Opt-In.
POST /api/newsletter/unsubscribeunsubscribeNewsletterNewsletter abbestellenErwartet den Token aus dem Abmeldelink der E-Mail.
GET /api/newsletter/unsubscribe/validatevalidateUnsubscribeTokenAbmelde-Token prüfenPrüft, ob ein Abmelde-Token gültig ist, ohne die Abmeldung auszuführen.
GET /api/newsletter/verifyverifyNewsletterSubscriptionNewsletter-Anmeldung bestätigenZiel des Links aus der Bestätigungsmail.
GET /api/contact/verifyverifyContactRequestKontaktanfrage bestätigenZiel des Links aus der Bestätigungsmail.
GET /api/chatgetChatSessionVerlauf einer Chat-Session abrufen (nur Redaktion)Verlangt eine Anmeldung am CMS.
POST /api/chatsendChatMessageNachricht an den Website-AssistentenRate-Limit pro IP und zusätzlich pro Session.
GET /api/agentic-checkrunAgenticCheckWebsite auf Agent-Tauglichkeit pruefenPrueft eine oeffentlich erreichbare Website in fuenf gewichteten Bereichen: Zugang 30, Verstaendnis 25, Auffindbarkeit 20, EU-Transparenz & Datenschutz 15, Handlungsfaehigkeit 10.
POST /api/agentic-checkrunAgenticCheckPostWebsite auf Agent-Tauglichkeit pruefen (Formularweg)Identisch zu GET, nur mit den Angaben im Body.
GET /api/agentic-check/result/{token}getAgenticCheckResultGespeicherten Befund abrufenLiefert einen bereits gelaufenen Befund erneut, ohne die geprueften Server noch einmal zu belasten.
POST /api/agentic-check/reportrequestAgenticReportAusfuehrlichen Befund per E-Mail anfordern (browser-only)Verlangt einen Challenge-Token aus dem Formular.
POST /api/seo-auditrequestSeoAuditKostenlosen SEO-Audit anfordern (browser-only)Verlangt einen Challenge-Token, der beim Laden des Formulars im Browser erzeugt wird.

Fehlerantworten

Jeder Fehler hat dieselbe Form: error trägt einen stabilen Code, message die Meldung für Menschen, hint sagt, was zu tun ist. Die Codes werden nie umbenannt und nie für etwas anderes wiederverwendet. Auf sie lässt sich verzweigen.

CodeStatusHinweis
VALIDATION_ERROR400Prüfe `fields` in dieser Antwort - dort steht pro Feld der konkrete Fehler.
INVALID_REQUEST400Meist ein fehlendes oder abgelaufenes Challenge-Token. Seite neu laden und erneut senden.
MISSING_FIELDS400Ergänze die in `fields` genannten Felder und sende die Anfrage erneut.
MISSING_EMAIL400Sende `email` im JSON-Body mit.
FIELD_TOO_LONG400Kürze das in `fields` genannte Feld.
MALFORMED_BODY400Sende gültiges JSON und setze `Content-Type: application/json`.
INVALID_EMAIL400Erwartet wird eine Adresse der Form name@domain.tld.
INVALID_EMAIL_DOMAIN400Die Domain hat keine MX-Records. Verwende eine andere Adresse.
DISPOSABLE_EMAIL400Verwende eine dauerhafte Adresse. Kein Retry mit derselben Adresse.
ALREADY_SUBSCRIBED400Kein Retry nötig - der Zustand ist bereits der gewünschte.
INVALID_URL400Erwartet wird eine absolute URL mit http:// oder https://.
INVALID_WEBSITE400Erwartet wird eine erreichbare Domain.
GDPR_REQUIRED400Setze `gdprConsent` auf true. Ohne Einwilligung darf nicht gespeichert werden.
INVALID_TOKEN400Token gelten einmalig. Fordere einen neuen an.
TOKEN_EXPIRED410Fordere über den ursprünglichen Endpunkt einen neuen Token an.
METHOD_NOT_ALLOWED405Die erlaubten Methoden stehen im `Allow`-Header dieser Antwort.
NOT_FOUND404Prüfe den Pfad. Eine Übersicht der Site steht unter /llms.txt.
UNAUTHORIZED401Dieser Endpunkt ist intern und erwartet ein gültiges Secret.
RATE_LIMIT429Warte die im `Retry-After`-Header genannte Anzahl Sekunden ab. `RateLimit` nennt das verbleibende Kontingent - der Header steht auch auf erfolgreichen Antworten.
EMAIL_LIMIT429Das Limit gilt pro Adresse, nicht pro IP. Ein IP-Wechsel hilft nicht. Dieses Limit steht bewusst nicht im `RateLimit`-Header.
SPAM_REJECTED400Kein Retry. Bei Fehleinschätzung per E-Mail an office@blckalpaca.at melden.
UPSTREAM_UNAVAILABLE503Vorübergehend. Wiederholung mit exponentiellem Backoff ist sinnvoll.
INTERNAL_ERROR500Nicht durch die Anfrage verursacht. Später erneut versuchen.

Beispiele

Zwei Aufrufe, die ohne Browser funktionieren.

Knowledge Base durchsuchen

curl "https://blckalpaca.at/api/knowledge-search?q=schema&locale=de"

Status abfragen

curl -i "https://blckalpaca.at/api/health"

Etwas fehlt oder ist falsch

Wenn ein Endpunkt anders antwortet als hier beschrieben, ist die Beschreibung der Fehler. Eine kurze Nachricht genügt.

Kontakt