Pro AI agenty

Inkluso pro AI agenty

Většina webu je psaná pro lidi. Tahle stránka je pro software, který nakupuje, porovnává nebo prověřuje dodavatele za někoho jiného. Popisuje pět endpointů, které Inkluso otevírá automatickým klientům, co přesně vracejí a jak často se smí volat.

Co je otevřené a co ne

Soubor robots.txt zakazuje celé /api/ a pak pěti pravidly typu Allow znovu otevírá právě pět cest: bezplatný sken, generátor prohlášení o přístupnosti, strojově čitelnou nabídku, nákup a dotaz na stav objednávky. Nic dalšího pod /api/ není určeno k automatickému volání: sken a report v plném rozsahu vyžadují přihlášení provozovatele, ostatní cesty obsluhují web, platby a zákaznický účet.

Žádný z těch pěti endpointů nepotřebuje klíč, registraci ani cookie. Požadavky i odpovědi jsou JSON. Strojově čitelná verze téhle stránky je v openapi.json (OpenAPI 3.1), v llms.txt a nabídka s cenami je na /api/offers.json.

Výsledky nepíše jazykový model

Nálezy pocházejí z axe-core, deterministického pravidlového enginu, a právní odkazy z pevné mapovací tabulky. Text reportu ani prohlášení negeneruje jazykový model. Stejná stránka proto při dvou skenech vrátí stejné nálezy a každé porušení nese "ai_generated": false.

Pět endpointů

Bezplatný sken jedné stránky

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

Zdarma · limit 5 volání za hodinu na IP · jen domovská stránka

Zkontroluje zadanou adresu proti WCAG 2.1 AA a namapuje nálezy na zákon, který určuje pole lang. Nejzávažnější porušení dostanete celé i s právním odkazem; ostatní se vrátí jen jako závažnost a počet výskytů v poli locked_violations.

  • Volání trvá zhruba 30 sekund: server spustí skutečný prohlížeč a stránku vykreslí. Nastavte si klientský timeout aspoň 60 sekund.
  • Adresa musí směřovat na veřejný host. Chybějící schéma se doplní na https://, interní a lokální adresy se odmítnou s kódem 422.
  • Pole scan_status je vlastní diagnostika skenu. Hodnota "bot_challenge" znamená, že sken zablokoval WAF cílového webu, takový výsledek není dobré hodnocení, ale žádné hodnocení.
  • Chyby: 422 (neplatná adresa nebo nebylo co skenovat), 429 (limit), 503 (skener je zaneprázdněn), 504 (sken překročil časový strop 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": "cs"}'

Návrh prohlášení o přístupnosti

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

Zdarma · limit 20 volání za minutu na IP · nic se neukládá

Sestaví návrh prohlášení o přístupnosti z údajů, které pošlete. Neběží při tom žádný sken, nic se neukládá, neodesílá se e-mail a nevzniká účet. Odpověď má dvě pole: statement (strukturovaný objekt) a text (tentýž dokument jako prostý text k vložení do CMS).

  • conformance_status smí být jen "partial", "none" nebo "not_assessed". Hodnota "full" je záměrně nepřípustná: úplnou shodu nelze prohlásit o sobě, jen změřit.
  • known_issues bere nejvýš 20 položek, každou nejvýš 300 znaků; delší vstup se zkrátí, nikoli odmítne.
  • Prohlášení je vlastní prohlášení objednatele. Inkluso žádný z uvedených údajů neověřuje a text to výslovně říká.
  • Chyby: 422 (neplatná adresa, prázdný název subjektu, nepovolený conformance_status, vadný 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": "cs",
          "conformance_status": "partial",
          "known_issues": ["Two PDFs published before 2024 are not tagged."]}'

Stav objednávky

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

Zdarma · limit 30 volání za hodinu na IP · každá odpověď nese X-Robots-Tag: noindex

Přeloží referenci objednávky na stav plnění a po dokončení na adresu reportu. Reference vzniká při vytvoření objednávky a není totožná s tokenem reportu, ten do dokončení plnění neexistuje.

  • 404 {"detail": "Order not found"}: taková reference neexistuje; přestaňte se ptát.
  • 202 {"status": "pending"}: objednávka existuje, plnění ještě neskončilo.
  • 200 {"status": "fulfilled", "report_url": "/api/reports/{token}"}: hotovo.
  • Plnění zahrnuje sken celého webu a vygenerování PDF, počítejte s minutami. Při limitu 30 volání za hodinu je praktický strop jeden dotaz za dvě minuty; jeden dotaz za pět minut je bezpečný vzorec.
curl -sS -i https://inkluso.eu/api/orders/9f2c1d7a8b6e4f0c

HTTP/2 202
x-robots-tag: noindex

{"status": "pending"}

Koupit audit nebo spustit monitoring

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

Placené · limit 10 volání za minutu na IP

Vytvoří platební relaci Stripe Checkout a vrátí její adresu. Samotná platba proběhne na Stripe, ne zde: údaje o kartě se na tento endpoint nikdy neposílají. Pole tier vybírá produkt: scan_report je jednorázový audit (od 149 EUR nebo ekvivalentu v jiné měně); monitor / monitor_annual je opakovaná monitorovací předplatné, měsíčně nebo ročně; agency je řešeno obchodně (cena za touto hodnotou je jen záchytný bod, ne nabízená cena, agentury by měly použít obchodní kanál); shoptet_audit je jednorázový audit e-shopu na Shoptetu (99 EUR / 2 490 Kč / 449 zł; měna se řídí polem lang).

  • consent musí být true. Jde o právní požadavek, ne formalitu: zakoupený tarif je digitální obsah/služba dodaná okamžitě, takže kupující musí výslovně souhlasit s okamžitým plněním a tím se vzdát 14denní lhůty pro odstoupení. Hodnota false nebo chybějící pole vrátí 422 a objednávka nevznikne. Neposílejte true jménem člověka bez jeho skutečného souhlasu.
  • Měna se řídí polem lang: cs se účtuje v CZK, pl v PLN, ostatní jazyky (de, en) v EUR. Nejde o přepočet jedné částky, každá měna má vlastní ceník. Jediným zdrojem pravdy je funkce price_for_tier() v backend.billing.stripe.
  • Volitelná hlavička Idempotency-Key: vygenerujte si sami čerstvou jedinečnou hodnotu pro KAŽDÝ nákupní záměr (např. UUID v4). Klíč je svázán s vaším přesným požadavkem (e-mail, url, tarif, jazyk): opakování se STEJNÝM požadavkem do 24 hodin vrátí STEJNÉ order_ref, checkout_url, amount a currency; stejný klíč s JINÝMI údaji vrátí 422. Klíč použitý během zpracování vrátí 503, zkuste to za chvíli znovu. Klíč nikdy nekopírujte z dokumentace ani z jiného požadavku.
  • Chyby: 422 (consent není true, neplatná adresa nebo chybějící/vadné pole), 429 (limit), 503 (Idempotency-Key se právě zpracovává, nebo je platební poskytovatel dočasně špatně nakonfigurován), 500 (platební systém nedostupný).
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": "cs", "consent": true}'

Poté opakovaně volejte GET /api/orders/{order_ref} výše, dokud se stav nezmění na "fulfilled".

MCP server

Stejné čtyři schopnosti existují i jako nativní MCP server pro klienty s podporou Model Context Protocolu (Claude, Cursor a další agentní běhová prostředí), bez vlastního HTTP kódu:

Endpoint:  https://inkluso.eu/mcp        (Streamable HTTP, jen POST, bezstavový)
Nástroje:  scan_accessibility, draft_accessibility_statement,
           start_audit_checkout, check_order_status
Auth:      žádná

Karta serveru: /.well-known/mcp.json. Sémantika nástrojů přesně zrcadlí HTTP endpointy: stejná validace, stejné limity na IP, stejné chování Idempotency-Key (předává se jako argument idempotency_key nástroje start_audit_checkout) a argument consent nese týž výslovný souhlas popsaný výše. start_audit_checkout vrací platební URL hostovanou Stripem, kterou platí člověk, nástroj sám nikdy platbu neprovádí. Jediný rozdíl oproti HTTP: nástroje vracejí report_url jako absolutní URL, protože volající přes MCP nemá origin, vůči kterému by relativní cestu vyhodnotil.

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

Kontakt

Provozovatel: HEXENKRAFT s.r.o., matic@hexenkraft.cz. Nefunkční endpoint, chybné právní mapování nebo limit, který blokuje legitimní integraci, hlaste na tuto adresu.