Für KI-Agenten

Inkluso für KI-Agenten

Der größte Teil dieser Website ist für Menschen geschrieben. Diese Seite ist für Software, die im Auftrag anderer einkauft, vergleicht oder Anbieter prüft. Sie beschreibt die fünf Endpunkte, die Inkluso automatisierten Clients öffnet, was sie genau zurückgeben und wie oft sie aufgerufen werden dürfen.

Was offen ist und was nicht

Die robots.txt sperrt /api/ vollständig und öffnet dann mit fünf Allow-Regeln genau fünf Pfade wieder: den kostenlosen Scan, den Generator für die Erklärung zur Barrierefreiheit, das maschinenlesbare Angebot, den Kauf und die Bestellstatus-Abfrage. Alles andere unter /api/ ist nicht für automatisierte Aufrufe gedacht: der vollständige Scan und der Report verlangen Betreiber-Zugangsdaten, die übrigen Pfade bedienen Website, Zahlung und Kundenkonto.

Keiner der fünf Endpunkte braucht einen Schlüssel, eine Registrierung oder ein Cookie. Anfragen und Antworten sind JSON. Die maschinenlesbare Fassung dieser Seite steht in openapi.json (OpenAPI 3.1) und in llms.txt. Der maschinenlesbare Angebotsvertrag steht unter /api/offers.json.

Kein Sprachmodell schreibt die Ergebnisse

Die Befunde stammen aus axe-core, einer deterministischen Regel-Engine, die Rechtsverweise aus einer festen Zuordnungstabelle. Weder Reporttext noch Erklärung werden von einem Sprachmodell erzeugt. Dieselbe Seite liefert deshalb bei zwei Scans dieselben Befunde, und jeder Verstoß trägt "ai_generated": false.

Die fünf Endpunkte

Kostenloser Scan einer Seite

POST https://inkluso.eu/api/scan/free

Kostenlos · Limit 5 Aufrufe pro Stunde und IP · nur die Startseite

Prüft die angegebene Adresse gegen WCAG 2.1 AA und ordnet die Befunde dem Gesetz zu, das über das Feld lang gewählt wird. Der schwerwiegendste Verstoß kommt vollständig samt Rechtsverweis zurück; alle übrigen erscheinen in locked_violations nur mit Schweregrad und Anzahl.

  • Ein Aufruf dauert rund 30 Sekunden: Der Server startet einen echten Browser und rendert die Seite. Setzen Sie ein Client-Timeout von mindestens 60 Sekunden.
  • Die Adresse muss auf einen öffentlichen Host zeigen. Ein fehlendes Schema wird zu https:// ergänzt, interne und lokale Adressen werden mit 422 abgelehnt.
  • Das Feld scan_status ist die Selbstdiagnose des Scans. "bot_challenge" bedeutet, dass die WAF der Zielseite den Scanner blockiert hat, das ist kein gutes Ergebnis, sondern gar keines.
  • Fehler: 422 (ungültige Adresse oder nichts Scanbares), 429 (Limit), 503 (Scanner ausgelastet), 504 (Scan über der 300-Sekunden-Obergrenze).
curl -sS -X POST https://inkluso.eu/api/scan/free \
     -H 'Content-Type: application/json' \
     --max-time 90 \
     -d '{"url": "https://example.cz", "lang": "de"}'

Entwurf einer Erklärung zur Barrierefreiheit

POST https://inkluso.eu/api/statement/draft

Kostenlos · Limit 20 Aufrufe pro Minute und IP · nichts wird gespeichert

Erstellt aus Ihren Angaben einen Entwurf der Erklärung zur Barrierefreiheit. Dabei läuft kein Scan, nichts wird gespeichert, keine E-Mail versendet und kein Konto angelegt. Die Antwort hat zwei Felder: statement (strukturiertes Objekt) und text (dasselbe Dokument als Klartext für ein CMS).

  • conformance_status darf nur "partial", "none" oder "not_assessed" sein. "full" ist bewusst unzulässig: Vollständige Konformität lässt sich nicht selbst erklären, nur messen.
  • known_issues nimmt höchstens 20 Einträge mit je höchstens 300 Zeichen; längere Eingaben werden gekürzt, nicht abgelehnt.
  • Die Erklärung ist eine Selbsterklärung der Organisation. Inkluso prüft keine der Angaben nach, und der Text sagt das ausdrücklich.
  • Fehler: 422 (ungültige Adresse, leerer Organisationsname, unzulässiger conformance_status, fehlerhafte E-Mail), 429 (Limit).
curl -sS -X POST https://inkluso.eu/api/statement/draft \
     -H 'Content-Type: application/json' \
     -d '{"organisation": "Vzor s.r.o.",
          "url": "https://example.cz",
          "lang": "de",
          "conformance_status": "partial",
          "known_issues": ["Two PDFs published before 2024 are not tagged."]}'

Bestellstatus

GET https://inkluso.eu/api/orders/{ref}

Kostenlos · Limit 30 Aufrufe pro Stunde und IP · jede Antwort trägt X-Robots-Tag: noindex

Löst eine Bestellreferenz zum Erfüllungsstand auf und nach Abschluss zur Adresse des Reports. Die Referenz entsteht beim Anlegen der Bestellung und ist nicht der Report-Token, den gibt es bis zum Abschluss der Erfüllung nicht.

  • 404 {"detail": "Order not found"}: diese Referenz existiert nicht; hören Sie auf zu fragen.
  • 202 {"status": "pending"}: die Bestellung existiert, die Erfüllung läuft noch.
  • 200 {"status": "fulfilled", "report_url": "/api/reports/{token}"}: fertig.
  • Die Erfüllung umfasst einen Scan der ganzen Website und die PDF-Erzeugung, rechnen Sie in Minuten. Bei 30 Aufrufen pro Stunde liegt die praktische Obergrenze bei einer Abfrage alle zwei Minuten; eine Abfrage alle fünf Minuten ist ein sicheres Muster.
curl -sS -i https://inkluso.eu/api/orders/9f2c1d7a8b6e4f0c

HTTP/2 202
x-robots-tag: noindex

{"status": "pending"}

Audit kaufen oder Monitoring starten

POST https://inkluso.eu/api/billing/checkout

Kostenpflichtig · Limit 10 Aufrufe pro Minute und IP

Erstellt eine Stripe-Checkout-Sitzung und liefert deren Adresse zurück. Die eigentliche Zahlung läuft über Stripe, nicht hier: Kartendaten werden diesem Endpunkt nie übermittelt. Das Feld tier wählt das Produkt: scan_report ist das einmalige Audit (ab EUR 149 bzw. dem Gegenwert in einer anderen Währung); monitor / monitor_annual ist das wiederkehrende Monitoring-Abonnement, monatlich oder jährlich; agency ist vertriebsgeführt (der dahinterliegende Preis ist nur ein Richtwert, nicht der beworbene Preis, Agenturen sollten stattdessen den vertriebsgeführten Weg nutzen); shoptet_audit ist das einmalige Audit für Shoptet-Onlineshops (EUR 99 / 2 490 Kč / 449 zł; Abrechnungswährung folgt lang).

  • consent muss true sein. Das ist eine rechtliche Voraussetzung, keine Formalität: Die gekaufte Stufe ist digitaler Inhalt/Dienst, der sofort geliefert wird, daher muss der Käufer der sofortigen Leistungserbringung ausdrücklich zustimmen und damit auf das 14-tägige EU-Widerrufsrecht verzichten. false oder ein fehlendes Feld liefert 422, es entsteht keine Bestellung. Setzen Sie true nie stellvertretend für einen Menschen, ohne dessen tatsächliche Zustimmung.
  • Die Währung richtet sich nach lang: cs wird in CZK abgerechnet, pl in PLN, alle anderen Sprachen (de, en) in EUR. Das ist keine Umrechnung eines Betrags, jede Währung hat ihre eigene Preisliste. Einzige Quelle der Wahrheit ist price_for_tier() in backend.billing.stripe.
  • Ein optionaler Idempotency-Key-Header: generieren Sie selbst einen frischen, eindeutigen Wert für JEDEN Kaufvorgang (z. B. eine UUID v4). Der Schlüssel ist an Ihre genaue Anfrage gebunden (E-Mail, URL, Tarif, Sprache): eine Wiederholung mit DERSELBEN Anfrage binnen 24 Stunden liefert DENSELBEN order_ref, checkout_url, amount und currency zurück; derselbe Schlüssel mit ANDEREN Angaben liefert 422. Ein Schlüssel, der während der Verarbeitung erneut verwendet wird, liefert 503, bitte kurz erneut versuchen. Kopieren Sie einen Schlüssel niemals aus der Dokumentation oder einer anderen Anfrage.
  • Fehler: 422 (consent nicht true, ungültige Adresse oder fehlendes/fehlerhaftes Feld), 429 (Limit), 503 (Idempotency-Key wird gerade verarbeitet, oder der Zahlungsanbieter ist vorübergehend falsch konfiguriert), 500 (Zahlungssystem nicht verfügbar).
curl -sS -X POST https://inkluso.eu/api/billing/checkout \
     -H 'Content-Type: application/json' \
     -H 'Idempotency-Key: ' \
     -d '{"email": "buyer@example.cz", "tier": "scan_report",
          "url": "https://example.cz", "lang": "de", "consent": true}'

Fragen Sie danach GET /api/orders/{order_ref} von oben ab, bis der Status "fulfilled" ist.

MCP-Server

Dieselben vier Fähigkeiten gibt es auch als nativen MCP-Server für Clients mit Model-Context-Protocol-Unterstützung (Claude, Cursor und andere Agent-Laufzeiten), ohne eigenen HTTP-Code:

Endpoint:  https://inkluso.eu/mcp        (Streamable HTTP, nur POST, zustandslos)
Tools:     scan_accessibility, draft_accessibility_statement,
           start_audit_checkout, check_order_status
Auth:      keine

Server-Karte: /.well-known/mcp.json. Die Tool-Semantik spiegelt die HTTP-Endpunkte exakt: gleiche Validierung, gleiche Limits pro IP, gleiches Idempotency-Key-Verhalten (als Argument idempotency_key von start_audit_checkout), und das Argument consent trägt dieselbe oben beschriebene ausdrückliche Einwilligung. start_audit_checkout liefert eine von Stripe gehostete Zahlungs-URL, auf der der Mensch bezahlt, das Tool selbst führt niemals eine Zahlung aus. Ein Unterschied zu HTTP: Die Tools liefern report_url als absolute URL, denn ein MCP-Aufrufer hat keinen Origin, gegen den er einen relativen Pfad auflösen könnte.

Agent-Skill (Installation): npx skills add maticijus/hexenkraft-agent-skills --skill inkluso-eaa-scan - https://skills.sh/maticijus/hexenkraft-agent-skills/inkluso-eaa-scan

Kontakt

Betreiber: HEXENKRAFT s.r.o., matic@hexenkraft.cz. Melden Sie einen defekten Endpunkt, eine falsche Rechtszuordnung oder ein Limit, das eine legitime Integration blockiert, an diese Adresse.