{
  "schema": "cybiq.offers/v1",
  "seller": {
    "name": "HEXENKRAFT s.r.o.",
    "registration": "IČO 29665931",
    "address": "V zahradách 2462/31, Libeň, 180 00 Praha 8, Czech Republic",
    "country": "CZ",
    "contact": "hello@cybiq.eu",
    "terms": "https://cybiq.eu/legal.html#terms"
  },
  "plans": [
    {
      "plan": "verification_checklist_49",
      "name": "Verification checklist pack",
      "price": 49,
      "currency": "EUR",
      "price_display": "€49",
      "vat": "price_is_final",
      "delivers": "Role-specific verification checklist with the exact documents to demand from manufacturers, an Art. 19(2) or Art. 20(2) pre-market verification table selected by your role, an Art. 21 self-test on the two questions that make an importer or distributor a manufacturer, plus your vulnerability-notification duties under Articles 19–20 (inform the manufacturer; escalate significant risks).",
      "checkout": "POST https://cybiq.eu/mcp, tool start_pack_checkout, {\"tier\":\"verification_checklist_49\"}",
      "checkout_url_template": "https://cybiq.eu/unlock?session_id={CHECKOUT_SESSION_ID}",
      "payment_link": "https://buy.stripe.com/5kQcN7gHMbOLfSX7O1dEs00"
    },
    {
      "plan": "compliance_pack_199",
      "name": "CRA compliance pack",
      "price": 199,
      "currency": "EUR",
      "price_display": "€199",
      "vat": "price_is_final",
      "delivers": "Classification memo, vulnerability-handling procedure, awareness-timestamp log, four Art. 14 notification templates (24 hour early warning, 72 hour notification, 14 day final report for an actively exploited vulnerability, and the severe-incident set), Art. 14(7) and Art. 16(1) routing section, SBOM policy, secure-by-default checklist, support-period statement, Annex V declaration index, Annex VII technical documentation index (drawn up under Art. 31) and a conformity-assessment readiness guide covering every Article 32 procedure. Templates and indexes you complete: Cybiq never files or transmits anything on your behalf. Print-ready documents.",
      "checkout": "POST https://cybiq.eu/mcp, tool start_pack_checkout, {\"tier\":\"compliance_pack_199\"}",
      "checkout_url_template": "https://cybiq.eu/unlock?session_id={CHECKOUT_SESSION_ID}",
      "payment_link": "https://buy.stripe.com/4gMcN73V07yv7mrc4hdEs01"
    }
  ],
  "vat": {
    "treatment": "price_is_final",
    "note": "The price is final. No VAT is added.",
    "seller_country": "CZ",
    "seller_vat_status": "identifikovaná osoba k DPH, DIČ CZ29665931, not a plátce DPH",
    "detail": "The seller is a Czech s.r.o. registered as an identifikovaná osoba k DPH (DIČ CZ29665931) and is NOT a plátce DPH, so it charges no Czech VAT on the sale. The listed price is therefore the whole amount charged: nothing is added at checkout, and the figure is not stated as VAT-inclusive, because that would assert a tax component the price does not carry. An EU business customer treats the purchase under its own VAT position, which for a cross-border supply of a digital service normally means accounting for it under the reverse charge, and uses the invoice Stripe issues. Nothing here is tax advice; a buyer that needs a VAT determination should take it from its own accountant.",
    "invoice": "Stripe issues the receipt for every purchase, in the buyer's own checkout session."
  },
  "delivery": {
    "form": "digital",
    "when": "Immediately after payment, in the buyer's own browser.",
    "how": "Stripe returns the buyer to /unlock?session_id=..., which signs a short-lived token; the documents are generated in that browser from the answers held there. Nothing is emailed and nothing is stored on a server.",
    "agent_role": "An agent may hand the published payment_link or call start_pack_checkout, which in v1 answers 422 checkout_creation_not_permitted with the same Payment Link. check_order_status needs a Checkout Session id and will not track a Payment-Link purchase; those are human-tracked. It must not open the unlock URL: the link works once, and the documents are for the human who paid."
  },
  "withdrawal": {
    "terms": "https://cybiq.eu/legal.html#withdrawal",
    "refunds": "https://cybiq.eu/legal.html#withdrawal",
    "consumer_right": "A consumer normally has 14 days to withdraw from a distance contract. For digital content not on a tangible medium that right expires once performance begins with the buyer's prior express consent and their acknowledgement that they thereby lose it (Art. 16(m) of Directive 2011/83/EU; Sec. 1837(l) of the Czech Civil Code).",
    "consent": "That consent is the terms checkbox on Stripe's own hosted page. An agent must never tick it on a buyer's behalf, and this server refuses to deliver a session that carries no acceptance.",
    "business_buyer": "A buyer purchasing as a business has no 14-day withdrawal right.",
    "defects": "Statutory rights for defective digital content are unaffected. A pack that fails to generate, cannot be downloaded, or does not match the answers submitted is remedied or refunded; write to hello@cybiq.eu. Consumer complaints are resolved within 30 days."
  },
  "errors": {
    "format": "application/problem+json (RFC 9457)",
    "documentation": "https://cybiq.eu/for-agents.html#errors",
    "codes": [
      {
        "code": "invalid_body",
        "status": 400,
        "title": "Malformed request body"
      },
      {
        "code": "body_too_large",
        "status": 413,
        "title": "Request body too large"
      },
      {
        "code": "unknown_field",
        "status": 422,
        "title": "Unknown field"
      },
      {
        "code": "method_not_allowed",
        "status": 405,
        "title": "Method not allowed"
      },
      {
        "code": "rate_limited",
        "status": 429,
        "title": "Too many requests"
      },
      {
        "code": "missing_answers",
        "status": 422,
        "title": "Answers missing"
      },
      {
        "code": "invalid_answers",
        "status": 422,
        "title": "Answers must be an object"
      },
      {
        "code": "unknown_answer_key",
        "status": 422,
        "title": "Unknown answer key"
      },
      {
        "code": "invalid_answer_value",
        "status": 422,
        "title": "Unknown answer value"
      },
      {
        "code": "invalid_locale",
        "status": 422,
        "title": "Unsupported locale"
      },
      {
        "code": "invalid_tier",
        "status": 422,
        "title": "Unknown pack tier"
      },
      {
        "code": "tier_not_configured",
        "status": 422,
        "title": "Tier not configured on this deployment"
      },
      {
        "code": "invalid_idempotency_key",
        "status": 422,
        "title": "Malformed idempotency key"
      },
      {
        "code": "idempotency_key_conflict",
        "status": 422,
        "title": "Idempotency key already used"
      },
      {
        "code": "idempotency_key_in_progress",
        "status": 409,
        "title": "Idempotent request in progress"
      },
      {
        "code": "checkout_creation_not_permitted",
        "status": 422,
        "title": "Checkout creation not permitted"
      },
      {
        "code": "checkout_not_available",
        "status": 422,
        "title": "Automated checkout not available"
      },
      {
        "code": "checkout_creation_failed",
        "status": 502,
        "title": "Checkout could not be created"
      },
      {
        "code": "invalid_session_id",
        "status": 422,
        "title": "Malformed Checkout Session id"
      },
      {
        "code": "unknown_session",
        "status": 404,
        "title": "Unknown Checkout Session"
      },
      {
        "code": "invalid_params",
        "status": 400,
        "title": "Invalid tool parameters"
      },
      {
        "code": "unknown_tool",
        "status": 404,
        "title": "No such tool"
      }
    ]
  },
  "related": {
    "openapi": "https://cybiq.eu/openapi.json",
    "mcp": "https://cybiq.eu/.well-known/mcp.json",
    "for_agents": "https://cybiq.eu/for-agents.html",
    "problem_type_base": "https://cybiq.eu/for-agents.html#error-",
    "decisions": "https://cybiq.eu/api/decisions.json"
  }
}
