{
  "$schema_note": "Hand-written, but every value is compared to its source in code by tests/public-offers.test.ts: the prices and copy from src/ui/checkout.ts, the currency and contact from src/ui/config.ts, the seller identity from design/chrome.ts and design/schema.ts, the refusal vocabulary from server/api-errors.mts and the tool names from server/mcp.mts. This file format is our own; there is no ratified standard for a machine-readable offer contract.",
  "version": "1.0.0",
  "updated": "2026-09-22",
  "product": "Kybriq",
  "product_url": "https://kybriq.cz",
  "description": "What an autonomous agent can buy from Kybriq, at what price, with what tax treatment, delivered how, and refused with which codes. Kybriq decides the applicability of the Czech Cybersecurity Act (zákon č. 264/2025 Sb., the NIS2 transposition) and prepares the paperwork; registration of a regulated service happens on Portál NÚKIB (https://portal.nukib.gov.cz/) and we never file it for you.",
  "seller": {
    "legal_name": "HEXENKRAFT s.r.o.",
    "ico": "29665931",
    "country": "CZ",
    "address": {
      "street_address": "V zahradách 2462/31",
      "locality": "Praha 8",
      "postal_code": "180 00",
      "country": "CZ"
    },
    "contact": "matic@hexenkraft.cz",
    "vat_id": "CZ29665931",
    "seller_vat_status": "vat_payer",
    "vat_status": "VAT payer; VAT treatment stated on the invoice"
  },
  "currency": "CZK",
  "plans": [
    {
      "id": "standard",
      "name": "Kybriq na rok",
      "price": 19900,
      "currency": "CZK",
      "price_label_cs": "19 900 Kč za první rok, poté 14 900 Kč ročně",
      "billing_interval": "one_off",
      "vat": {
        "seller_vat_status": "vat_payer",
        "price_is_final": true,
        "price_basis": "gross",
        "vat_rate_cz": 21,
        "note_cs": "Nabídka je určena pouze podnikatelům.",
        "customer_cz_business": "Domestic supply to a Czech business: the listed price is final; VAT treatment is stated on the invoice.",
        "customer_eu_business": "Supply to a business in another EU member state with a valid VAT ID: invoiced without Czech VAT under the reverse-charge mechanism (Art. 196 Directive 2006/112/EC); the customer accounts for the VAT.",
        "customer_consumer": "Not sold to consumers over this surface. The buyer is expected to be a business."
      },
      "delivers": {
        "summary": "Opatření po opatření (§ 14): stav, priorita, doporučený krok. Statutární přehled bezpečnostních opatření podle přílohy č. 1 vyhlášky č. 410/2025 Sb., stránka pro vedení, runbook hlášení incidentů. V režimu nižších povinností navíc samostatný soubor s dokumenty, které vyhláška jmenuje. Platba navíc otevře pracovní prostor pro průběžnou správu na 12 měsíců.",
        "format": "HTML report plus, in the lower-obligations regime, a separate file of the documents vyhláška č. 410/2025 Sb. names.",
        "documents": [
          "Bezpečnostní politika a přehled bezpečnostní dokumentace",
          "Pravidla používání a manipulace s technickými aktivy",
          "Požadavky na smluvní ujednání s dodavateli",
          "Bezpečnostní požadavky pro akvizici, vývoj a údržbu technických aktiv",
          "Jmenování osoby pověřené kybernetickou bezpečností",
          "Politika bezpečného chování uživatelů",
          "Přehled o provedených školeních a seznamy školených osob",
          "Plán kontinuity činností a obnovy",
          "Metodika posuzování kybernetických bezpečnostních událostí a incidentů",
          "Kritéria únosné míry újmy a oblasti pro posouzení významnosti dopadu"
        ],
        "delivery": "Immediately after payment. Stripe returns the buyer to the success URL below, which carries a signed unlock token; nothing is unlocked by a URL a caller can type."
      },
      "checkout": {
        "mcp_endpoint": "https://kybriq.cz/mcp",
        "mcp_tool": "start_checkout",
        "status_tool": "check_order_status",
        "returns": [
          "checkout_url",
          "session_id",
          "amount",
          "currency"
        ],
        "success_url_template": "https://kybriq.cz/unlock?session_id={CHECKOUT_SESSION_ID}",
        "paid_by": "A human. start_checkout returns a Stripe-hosted URL; no card detail ever reaches Kybriq and no tool completes a payment.",
        "price_decided_by": "The server, from its configured price id. An amount, a currency, a price id or a tier sent in the arguments is refused as invalid_input, never honoured.",
        "idempotency": "start_checkout accepts an optional idempotency_key. It is bound to a SHA-256 of the request, to the calling address and to a stored nonce, and it expires after 24 hours. Same key and same arguments replays the stored session; different arguments is 422 idempotency_mismatch; a key whose first call is still running is 409 in_progress."
      }
    }
  ],
  "note": "Renewal (14 900 Kč per year) is sold only inside the licensed workspace at https://kybriq.cz/sprava.html, once a customer already holds a licence key from the year purchase above. It is deliberately absent here: start_checkout can only create a session for the year price above, so listing renewal would advertise something this surface cannot order.",
  "error_format": "Every refusal is an RFC 9457 problem document. Over HTTP it is the body and the media type is application/problem+json; over MCP the identical document is the structuredContent of a tools/call result with isError true. Branch on error.code, which is the closed vocabulary below.",
  "errors": {
    "bad_request": {
      "status": 400,
      "title": "Malformed request",
      "type": "https://kybriq.cz/for-agents.html#problem-bad_request",
      "meaning": "The body is not valid JSON, or not a JSON object."
    },
    "invalid_input": {
      "status": 422,
      "title": "Input refused by validation",
      "type": "https://kybriq.cz/for-agents.html#problem-invalid_input",
      "meaning": "A field was refused: unknown key, out-of-vocabulary value, or a date that is not a real calendar date. Nothing is coerced and nothing is ignored."
    },
    "not_found": {
      "status": 404,
      "title": "No such resource",
      "type": "https://kybriq.cz/for-agents.html#problem-not_found",
      "meaning": "No such path, no such tool, or no such Stripe Checkout Session."
    },
    "method_not_allowed": {
      "status": 405,
      "title": "Method not allowed",
      "type": "https://kybriq.cz/for-agents.html#problem-method_not_allowed",
      "meaning": "The endpoint accepts POST only. GET on /mcp is 405 because the stateless profile opens no event stream."
    },
    "payload_too_large": {
      "status": 413,
      "title": "Request body too large",
      "type": "https://kybriq.cz/for-agents.html#problem-payload_too_large",
      "meaning": "The request body exceeded 64 KB."
    },
    "rate_limited": {
      "status": 429,
      "title": "Rate limit exceeded",
      "type": "https://kybriq.cz/for-agents.html#problem-rate_limited",
      "meaning": "The per-address bucket for this operation is empty. The buckets are shared between /api/v1/* and /mcp, so switching transport buys no extra allowance."
    },
    "idempotency_mismatch": {
      "status": 422,
      "title": "Idempotency key reused with different arguments",
      "type": "https://kybriq.cz/for-agents.html#problem-idempotency_mismatch",
      "meaning": "This idempotency_key was already used for different arguments. Generate a fresh key. The refusal never says what the key is bound to."
    },
    "in_progress": {
      "status": 409,
      "title": "Idempotent request still in progress",
      "type": "https://kybriq.cz/for-agents.html#problem-in_progress",
      "meaning": "A checkout with this idempotency_key is still being created. Retry shortly rather than sending a second request."
    },
    "checkout_unavailable": {
      "status": 503,
      "title": "Checkout cannot be created here",
      "type": "https://kybriq.cz/for-agents.html#problem-checkout_unavailable",
      "meaning": "This deployment cannot create a Checkout Session. Send a human to the public Payment Link named in the error, when one is configured."
    },
    "upstream_unavailable": {
      "status": 502,
      "title": "Payment provider unavailable",
      "type": "https://kybriq.cz/for-agents.html#problem-upstream_unavailable",
      "meaning": "The payment provider could not be reached. No Stripe message is ever quoted back."
    },
    "server_error": {
      "status": 500,
      "title": "Unexpected server error",
      "type": "https://kybriq.cz/for-agents.html#problem-server_error",
      "meaning": "Unexpected failure. Nothing about the internal state is published."
    }
  },
  "terms": {
    "url": "https://kybriq.cz/legal.html",
    "status": "Obchodní podmínky (terms of sale) jsou sepsány, ale zatím nezveřejněné. Do té doby platí zákonná úprava a podmínky uvedené přímo u nabídky; nic zde netvrdí, že obchodní podmínky už něco upravují.",
    "withdrawal_cs": "Spotřebitel má zpravidla právo odstoupit od distanční smlouvy do 14 dnů. U digitálního obsahu dodaného před uplynutím té lhůty toto právo zaniká, pokud s dodáním výslovně souhlasil a byl poučen, že tím právo na odstoupení ztrácí (mechanismus § 1837 zákona č. 89/2012 Sb.). Nakupuje-li kupující jako podnikatel, právo na odstoupení do 14 dnů se na něj nevztahuje.",
    "refund": "No contractual money-back rule is published for the one-off plan. Ask before buying if you need one in writing.",
    "cancellation": "A one-off purchase has nothing to cancel; there is no recurring charge."
  },
  "links": {
    "openapi": "https://kybriq.cz/openapi.json",
    "mcp_server_card": "https://kybriq.cz/.well-known/mcp.json",
    "mcp_endpoint": "https://kybriq.cz/mcp",
    "llms_txt": "https://kybriq.cz/llms.txt",
    "for_agents": "https://kybriq.cz/for-agents.html",
    "scope_api": "https://kybriq.cz/api/v1/scope",
    "timeline_api": "https://kybriq.cz/api/v1/timeline",
    "incident_clocks_api": "https://kybriq.cz/api/v1/incident-clocks",
    "registration_portal": "https://portal.nukib.gov.cz/"
  },
  "disclaimer": "Toto není právní rada. Kybriq je rozhodovací podpora; konečné posouzení vždy náleží NÚKIB či vašemu advokátovi. Registrace regulované služby probíhá výhradně na Portálu NÚKIB."
}
