Dla agentów AI

Inkluso dla agentów AI

Większość tej witryny napisano dla ludzi. Ta strona jest dla oprogramowania, które kupuje, porównuje albo sprawdza dostawców w czyimś imieniu. Opisuje pięć punktów końcowych, które Inkluso otwiera klientom automatycznym, co dokładnie zwracają i jak często wolno je wywoływać.

Co jest otwarte, a co nie

Plik robots.txt blokuje całe /api/, a następnie pięcioma regułami Allow otwiera z powrotem dokładnie pięć ścieżek: bezpłatny skan, generator deklaracji dostępności, ofertę maszynową, zakup i zapytanie o status zamówienia. Nic więcej pod /api/ nie jest przeznaczone do wywołań automatycznych: pełny skan i raport wymagają danych operatora, a pozostałe ścieżki obsługują witrynę, płatności i konto klienta.

Żaden z tych pięciu punktów nie wymaga klucza, rejestracji ani ciasteczka. Żądania i odpowiedzi są w JSON. Wersję maszynową tej strony znajdziesz w openapi.json (OpenAPI 3.1), w llms.txt, a kontrakt ofertowy pod adresem /api/offers.json.

Wyników nie pisze model językowy

Ustalenia pochodzą z axe-core, deterministycznego silnika reguł, a odwołania prawne ze stałej tabeli mapowania. Ani tekst raportu, ani deklaracja nie są generowane przez model językowy. Ta sama strona przy dwóch skanach zwróci więc te same ustalenia, a każde naruszenie niesie "ai_generated": false.

Pięć punktów końcowych

Bezpłatny skan jednej strony

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

Bezpłatnie · limit 5 wywołań na godzinę z jednego IP · tylko strona główna

Sprawdza podany adres wobec WCAG 2.1 AA i mapuje ustalenia na prawo wybrane polem lang. Najpoważniejsze naruszenie wraca w całości, wraz z odwołaniem prawnym; pozostałe pojawiają się w locked_violations wyłącznie jako waga i liczba wystąpień.

  • Wywołanie trwa około 30 sekund: serwer uruchamia prawdziwą przeglądarkę i renderuje stronę. Ustaw limit czasu klienta na co najmniej 60 sekund.
  • Adres musi wskazywać publiczny host. Brakujący schemat zostanie uzupełniony do https://, a adresy wewnętrzne i lokalne są odrzucane kodem 422.
  • Pole scan_status to autodiagnoza skanu. Wartość "bot_challenge" oznacza, że WAF badanej witryny zablokował skaner, to nie jest dobra ocena, tylko brak oceny.
  • Błędy: 422 (nieprawidłowy adres albo nie było czego skanować), 429 (limit), 503 (skaner zajęty), 504 (skan przekroczył próg 300 sekund).
curl -sS -X POST https://inkluso.eu/api/scan/free \
     -H 'Content-Type: application/json' \
     --max-time 90 \
     -d '{"url": "https://example.cz", "lang": "pl"}'

Projekt deklaracji dostępności

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

Bezpłatnie · limit 20 wywołań na minutę z jednego IP · nic nie jest zapisywane

Składa projekt deklaracji dostępności z przesłanych danych. Nie uruchamia skanu, niczego nie zapisuje, nie wysyła e-maila i nie zakłada konta. Odpowiedź ma dwa pola: statement (obiekt strukturalny) i text (ten sam dokument jako zwykły tekst do wklejenia w CMS).

  • conformance_status przyjmuje tylko "partial", "none" albo "not_assessed". Wartość "full" jest celowo niedozwolona: pełnej zgodności nie da się zadeklarować o sobie, można ją tylko zmierzyć.
  • known_issues przyjmuje najwyżej 20 pozycji, każdą do 300 znaków; dłuższe dane są przycinane, a nie odrzucane.
  • Deklaracja jest oświadczeniem własnym podmiotu. Inkluso nie weryfikuje żadnej z podanych informacji i tekst mówi to wprost.
  • Błędy: 422 (nieprawidłowy adres, pusta nazwa podmiotu, niedozwolony conformance_status, błędny 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": "pl",
          "conformance_status": "partial",
          "known_issues": ["Two PDFs published before 2024 are not tagged."]}'

Status zamówienia

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

Bezpłatnie · limit 30 wywołań na godzinę z jednego IP · każda odpowiedź niesie X-Robots-Tag: noindex

Zamienia referencję zamówienia na stan realizacji, a po jej zakończeniu na adres raportu. Referencja powstaje przy tworzeniu zamówienia i nie jest tokenem raportu, ten nie istnieje aż do końca realizacji.

  • 404 {"detail": "Order not found"}: taka referencja nie istnieje; przestań pytać.
  • 202 {"status": "pending"}: zamówienie istnieje, realizacja jeszcze trwa.
  • 200 {"status": "fulfilled", "report_url": "/api/reports/{token}"}: gotowe.
  • Realizacja obejmuje skan całej witryny i wygenerowanie PDF, licz w minutach. Przy 30 wywołaniach na godzinę praktyczny pułap to jedno zapytanie co dwie minuty; jedno co pięć minut jest wzorcem bezpiecznym.
curl -sS -i https://inkluso.eu/api/orders/9f2c1d7a8b6e4f0c

HTTP/2 202
x-robots-tag: noindex

{"status": "pending"}

Kup audyt albo uruchom monitoring

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

Płatne · limit 10 wywołań na minutę z jednego IP

Tworzy sesję Stripe Checkout i zwraca jej adres. Sama płatność odbywa się w Stripe, nie tutaj: dane karty nigdy nie trafiają do tego endpointu. Pole tier wybiera produkt: scan_report to jednorazowy audyt (od 149 EUR lub równowartości w innej walucie); monitor / monitor_annual to cykliczna subskrypcja monitoringu, miesięczna lub roczna; agency jest prowadzone sprzedażowo (cena za tą wartością to tylko punkt odniesienia, nie cena oferowana, agencje powinny skorzystać ze ścieżki sprzedażowej); shoptet_audit to jednorazowy audyt sklepu na Shoptet (99 EUR / 2 490 Kč / 449 zł; waluta rozliczenia zależy od lang).

  • consent musi mieć wartość true. To wymóg prawny, a nie formalność: zakupiony poziom to treść cyfrowa/usługa dostarczana natychmiast, więc kupujący musi wyraźnie zgodzić się na natychmiastowe wykonanie i tym samym zrzec się 14-dniowego prawa odstąpienia obowiązującego w UE. Wartość false lub brak pola zwraca 422 i zamówienie nie powstaje. Nie wysyłaj true w imieniu człowieka bez jego faktycznej zgody.
  • Waluta wynika z pola lang: cs rozlicza się w CZK, pl w PLN, a pozostałe języki (de, en) w EUR. To nie jest przeliczenie jednej kwoty, każda waluta ma własny cennik. Jedynym źródłem prawdy jest price_for_tier() w backend.billing.stripe.
  • Opcjonalny nagłówek Idempotency-Key: wygeneruj samodzielnie świeżą, unikalną wartość dla KAŻDEGO zamiaru zakupu (np. UUID v4). Klucz jest powiązany z Twoim dokładnym żądaniem (e-mail, url, taryfa, język): powtórzenie z TAKIM SAMYM żądaniem w ciągu 24 godzin zwraca TAKI SAM order_ref, checkout_url, amount i currency; ten sam klucz z INNYMI danymi zwraca 422. Klucz użyty ponownie w trakcie przetwarzania zwraca 503, spróbuj ponownie za chwilę. Nigdy nie kopiuj klucza z dokumentacji ani z innego żądania.
  • Błędy: 422 (consent nie jest true, nieprawidłowy adres albo brakujące/błędne pole), 429 (limit), 503 (Idempotency-Key jest właśnie przetwarzany albo dostawca płatności jest chwilowo źle skonfigurowany), 500 (system płatności niedostępny).
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": "pl", "consent": true}'

Następnie odpytuj GET /api/orders/{order_ref} powyżej, aż stan zmieni się na "fulfilled".

Serwer MCP

Te same cztery możliwości istnieją też jako natywny serwer MCP dla klientów obsługujących Model Context Protocol (Claude, Cursor i inne środowiska agentowe), bez własnego kodu HTTP:

Endpoint:  https://inkluso.eu/mcp        (Streamable HTTP, tylko POST, bezstanowy)
Narzędzia: scan_accessibility, draft_accessibility_statement,
           start_audit_checkout, check_order_status
Auth:      brak

Karta serwera: /.well-known/mcp.json. Semantyka narzędzi dokładnie odzwierciedla endpointy HTTP: ta sama walidacja, te same limity na IP, to samo zachowanie Idempotency-Key (przekazywany jako argument idempotency_key narzędzia start_audit_checkout), a argument consent niesie tę samą wyraźną zgodę opisaną wyżej. start_audit_checkout zwraca URL płatności hostowany przez Stripe, na którym płaci człowiek, narzędzie samo nigdy nie pobiera płatności. Jedyna różnica wobec HTTP: narzędzia zwracają report_url jako absolutny URL, ponieważ wywołujący przez MCP nie ma origin, względem którego mógłby rozwiązać ścieżkę względną.

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

Kontakt

Operator: HEXENKRAFT s.r.o., matic@hexenkraft.cz. Niedziałający punkt końcowy, błędne mapowanie prawne albo limit blokujący uczciwą integrację zgłoś na ten adres.