{"document_kind":"kalicart_merchant_agent_bridge","profile":"https://dashboard.kalicart.com/.well-known/kalicart-merchant-discovery-profile.json","scope_type":"single_merchant_catalog","human_readable_summary":"Kalicart merchant discovery: one opaque token maps to one store. Follow public_catalog.* for read-only product data — no checkout and no API key on public surfaces. Not the multi-merchant global index (see global.kalicart.com /v1/global-catalog/). Optional Accept: application/vnd.kalicart.merchant-discovery+json. Inventory/prices reflect Kalicart sync snapshots and merchant-authoritative pricing, not live POS realtime. Storefront discovery tags must be present in the raw HTML document from the merchant origin (not only after JavaScript runs).","intent_flags":{"single_merchant_only":true,"global_indexable":false,"federated_search_source":false,"agent_read_surface":true},"crawler_policy":{"allow_llm_training":false,"allow_live_agent_reads":true,"allow_global_indexing":false},"capabilities":{"search":true,"offers":true,"availability":true,"cart":false,"checkout":false,"payments":false,"mutations":false,"read_only":true},"connector_capabilities":{"platform":"unknown","products":{"incremental":false,"incremental_basis":null,"full_fetch_supported":false,"source_existence_audit":false,"deleted_detection":"unsupported"},"shipping":{"platform_sync":false,"zones":false,"rates":false,"class_rates":false,"postcode_regions":false,"fallback":"home_only"},"coupons":{"sync":false,"product_scope":false,"category_scope":false,"public_visibility":{"imported_during_sync":true,"public_by_default":false,"merchant_opt_in_required":true,"first_sync_publication_state":"disabled","publication_applies_on":"next_successful_sync","public_payload_field":"promotions","rationale":"Coupon codes are commerce-sensitive. Kalicart may verify/import them, but agent-visible publication remains a conscious merchant choice."}}},"authentication":{"required":false,"scheme":"none","notes":"This discovery document and public_catalog.* require no API key. Private REST/MCP on this host uses header X-Api-Key — never embed in storefront HTML."},"private_api":{"required":true,"scheme":"api_key_header","header":"X-Api-Key","use_for":["rest_v1","mcp","taxonomy_admin"]},"freshness":{"inventory_freshness":"kalicart_sync_snapshot","price_freshness":"merchant_authoritative_at_last_sync","is_realtime_pos":false,"discovery_cache_ttl_seconds":300,"public_catalog_http_cache_max_age_seconds":300,"catalog_sync_interval_seconds":86400,"last_catalog_sync_at":"2026-05-28T06:58:15.730Z","inventory_snapshot":{"source":"kalicart_sync_snapshot","checked_at":"2026-05-28T06:58:15.730Z","ttl_seconds":86400,"stale":false}},"anti_global_semantics":{"orthogonal_to_federated_global_catalog":true,"do_not_follow_this_url_when_building_global_index":true},"content_negotiation":{"default_content_type":"application/json; charset=utf-8","kalicart_vendor_content_type":"application/vnd.kalicart.merchant-discovery+json; charset=utf-8","how_to_request_vendor":"Send Accept: application/vnd.kalicart.merchant-discovery+json on GET https://dashboard.kalicart.com/v1/agent-bridge/b379c60371010ab06b022f65c6216c5f0742ffd093239359 — identical JSON body; use with generic agents that key off Content-Type."},"agent_instructions":"0) Agent: GET the storefront page and parse the initial HTML response (view-source). Find &lt;link rel=\"kalicart-catalog\"&gt; and/or &lt;link rel=\"kalicart-agent\"&gt; with the same href; do not assume tags appear only after running merchant JavaScript. Merchant: paste the static &lt;head&gt; block from the Kalicart dashboard so the CMS/server emits profile + bridge &lt;link&gt; and &lt;meta&gt; in that HTML source. 1) GET https://dashboard.kalicart.com/v1/agent-bridge/b379c60371010ab06b022f65c6216c5f0742ffd093239359 — scoped to one shop; read agent_engagement before search. 2) Bootstrap discovery.agent_engagement — semantic_boundary + semantic_resolution before search. Agent interprets; Kalicart computes. Embeddings suggest — rules constrain. CATALOG LANGUAGE: The Kalicart catalog is in Italian/English. Whatever language the user speaks, normalize the utterance to Italian or English before calling resolve_commerce_intent. You are an LLM — translation is native to you. \"Badehose\" → \"boxer da mare\". \"maillot de bain\" → \"costume da bagno\". \"Schwimmhose\" → \"boxer nuoto\". Translate product terms; keep user constraints (budget, size) as-is. NEVER add budget_max to the payload unless the user explicitly stated a price limit in their message. Classify resolution_type: constraint vs evidence vs hint vs unresolved — do not fake computability. user_term → semantic_axis → leaf policy → resolution_status → then resolve payload. No semantic leakage: never utterance \"premium elegant dark heavy\" unresolved. Attach semantic_resolution_trace on resolve when ambiguous terms were resolved. Read agent_guidance.shipping before offers. Free-text-only resolve is legacy human UI. 3) Use public_catalog.* URLs — token-scoped, read-only (L1 fast path for this shop). 4) Budget, delivery, shipping truth, multi-merchant → https://global.kalicart.com/v1/global-catalog/intent/resolve (agent-first fields) — not HTML scrape. 5) Do not use this discovery URL as a node in the global federated index — use federated APIs only on https://global.kalicart.com/v1/global-catalog/. 6) Never expose X-Api-Key in HTML; it is separate from this opaque token.","well_known":{"discovery_profile_json":"https://dashboard.kalicart.com/.well-known/kalicart-merchant-discovery-profile.json","note":"RFC 8615 profile on the Kalicart dashboard host explains merchant vs global federation."},"architecture":{"discovery_host":"https://dashboard.kalicart.com","agent_bridge_path":"/v1/agent-bridge/{opaque_token}","global_federation_host":"https://global.kalicart.com","global_read_apis_under":"https://global.kalicart.com/v1/global-catalog","merchant_scope":"This discovery document never expands into other merchants. Rotating the token in the dashboard invalidates old storefront links."},"provider":"kalicart","schema_version":"1.1","discovery_kind":"kalicart_hosted","description":"Pointers to normalized catalog data on Kalicart (machine-readable layer for agents). This URL identifies your hosted discovery document; it is not your REST API key.","scope":{"type":"single_merchant_catalog","invariant":"This discovery document is scoped to one merchant catalog only. It does not link to or expand into the global multi-merchant catalog."},"link_relation":"kalicart-catalog","link_relations":["kalicart-catalog","kalicart-agent"],"discovery_document_url":"https://dashboard.kalicart.com/v1/agent-bridge/b379c60371010ab06b022f65c6216c5f0742ffd093239359","recommended_head_link_html":"<link rel=\"kalicart-catalog\" type=\"application/vnd.kalicart.merchant-discovery+json\" href=\"https://dashboard.kalicart.com/v1/agent-bridge/b379c60371010ab06b022f65c6216c5f0742ffd093239359\" />","recommended_head_markup_html":"<!-- Kalicart agent discovery: keep the following link/meta lines in server-rendered <head> so they appear in the raw HTML response; crawlers and many agents do not execute storefront JavaScript. -->\n<link rel=\"describedby\" type=\"application/vnd.kalicart.merchant-discovery-profile+json\" href=\"https://dashboard.kalicart.com/.well-known/kalicart-merchant-discovery-profile.json\" />\n<link rel=\"profile\" type=\"application/vnd.kalicart.merchant-discovery-profile+json\" href=\"https://dashboard.kalicart.com/.well-known/kalicart-merchant-discovery-profile.json\" />\n<link rel=\"kalicart-catalog\" type=\"application/vnd.kalicart.merchant-discovery+json\" href=\"https://dashboard.kalicart.com/v1/agent-bridge/b379c60371010ab06b022f65c6216c5f0742ffd093239359\" />\n<link rel=\"kalicart-agent\" type=\"application/vnd.kalicart.merchant-discovery+json\" href=\"https://dashboard.kalicart.com/v1/agent-bridge/b379c60371010ab06b022f65c6216c5f0742ffd093239359\" />\n<meta name=\"kalicart:scope\" content=\"single-merchant-catalog\" />","endpoints":{"api_info":"https://dashboard.kalicart.com/api/info","rest_base":"https://dashboard.kalicart.com/v1","mcp_http":"https://dashboard.kalicart.com/mcp","public_product_schema_template":"https://dashboard.kalicart.com/v1/schema/{p2209_id}"},"global_federation":{"host":"https://global.kalicart.com","discovery_url":"https://global.kalicart.com/v1/global-catalog/discovery","commerce_intent_resolve_post_url":"https://global.kalicart.com/v1/global-catalog/intent/resolve","commerce_intent_resolve_hint":"POST JSON { utterance, country, category_hint?, limit? } for multi-merchant delegated commerce reasoning. Prefer over guessing from this shop HTML alone.","read_apis_under":"https://global.kalicart.com/v1/global-catalog"},"public_catalog":{"products_url":"https://dashboard.kalicart.com/v1/public-catalog/b379c60371010ab06b022f65c6216c5f0742ffd093239359/products","product_url_template":"https://dashboard.kalicart.com/v1/public-catalog/b379c60371010ab06b022f65c6216c5f0742ffd093239359/product/{p2209_id}","categories_url":"https://dashboard.kalicart.com/v1/public-catalog/b379c60371010ab06b022f65c6216c5f0742ffd093239359/categories","search_url_template":"https://dashboard.kalicart.com/v1/public-catalog/b379c60371010ab06b022f65c6216c5f0742ffd093239359/search?q={query}","authentication":"none","read_only":true,"cache":"public, max-age=300"},"purchase_intent":{"status":"planned","note":"Future buyer-authorized checkout intents should use short-lived, scoped buyer consent tokens and merchant checkout URLs. Kalicart does not process payments."},"taxonomy":{"note":"Public category counts for this merchant are available without API key. Private taxonomy admin remains under /v1/taxonomy/* with X-Api-Key.","public_categories_url":"https://dashboard.kalicart.com/v1/public-catalog/b379c60371010ab06b022f65c6216c5f0742ffd093239359/categories","private_example_categories_url":"https://dashboard.kalicart.com/v1/taxonomy/categories"},"merchant":{"id":"climacasalottisrl-it","canonical_domain":"climacasalottisrl.it"},"merchant_id":"climacasalottisrl-it","agent_engagement":{"schema_version":"1.4.0","inherits":"global.agent_engagement","scope":"single_merchant_catalog","principle":"Kalicart is a computable catalog, not semantic search. The agent interprets language; Kalicart computes verifiable contract. Embeddings may recover — only resolved rules may constrain.","global_discovery_url":"https://global.kalicart.com/v1/global-catalog/discovery","global_resolve_url":"https://global.kalicart.com/v1/global-catalog/intent/resolve","how_to_search":["1) Read global agent_engagement at https://global.kalicart.com/v1/global-catalog/discovery — rules are universal.","2) This bridge scopes public_catalog.* to one merchant — use for unconstrained product browse/search on this shop only.","3) L1 fast path (this shop): https://dashboard.kalicart.com/v1/public-catalog/b379c60371010ab06b022f65c6216c5f0742ffd093239359/search?q=… or /products — no API key.","4) Budget, delivery/shipping truth, or comparing across merchants → POST https://global.kalicart.com/v1/global-catalog/intent/resolve or MCP resolve_commerce_intent — not HTML scrape.","5) Same location_hint rules: delivery intent only; product-name geography stays in utterance.","6) Read JSON responses; never infer stock/shipping from storefront HTML."],"merchant":{"id":"climacasalottisrl-it","canonical_domain":"climacasalottisrl.it","agent_bridge_url":"https://dashboard.kalicart.com/v1/agent-bridge/b379c60371010ab06b022f65c6216c5f0742ffd093239359"},"do_not":["Do not search or scrape merchant HTML when public_catalog JSON or resolve is available.","Do not use GET /search as the primary path when the user stated budget, delivery intent, or a setup task — resolve first.","Do not send only a product keyword when the user also stated delivery intent or budget — map them to struct fields.","Do not put geographic tokens from product names (Paris, Roma, Portofino, Geneva, …) into location_hint — those belong in utterance only.","Do not set location_hint unless the user expressed delivery/shipping to a place; when unsure, omit it.","Do not treat commerce_outcome browse_match or offer list as deliverable when agent_guidance.shipping.eligibility_state is not_serviced.","Do not ask the user for CAP/postcode when location_hint and country are enough for merchant region policy (SHIP-v1).","Do not infer stock, variants, shipping zones, or category from merchant HTML when reasoning_runtime.available is true.","Do not invent delivery availability — if no destination was passed, do not claim a city is or is not served.","Do not set budget_max, budget_min, or currency on constraints_global unless the human task states a numeric budget — Kalicart human parsers are ground truth; omit budget fields when absent.","Do not put product attributes (color, size, material, style) in constraints_global — especially not location_hint (e.g. location_hint: \"dark color\" is wrong). Use product_attributes or utterance after leaf-scoped resolution.","Do not pass raw ambiguous adjectives to utterance or JSON (pesante, premium, elegante, scuro, comodo) — resolve leaf-scoped first; color → product_attributes.color dark|light when applicable.","Do not invent catalog facets (premium: true, heavy: true, elegant: true) — only supported product_attributes and documented axes.","Do not treat embedding similarity as operational equivalence (elegante ≈ premium ≈ lusso) — constraints must be explicit and auditable.","Do not use semantic search intuition as a substitute for decomposition — Kalicart resolve is contract computation, not free interpretation.","Do not stack unresolved adjectives in utterance (semantic leakage) — e.g. utterance: \"premium elegant dark luxury heavy\".","Do not label resolution_type constraint when only utterance evidence exists — that fakes computability.","Do not query substrate when resolution_status is unsupported_semantic_axis or ambiguous_requires_clarification without clarification or dropping the term.","Do not treat this merchant bridge as the global federated index — multi-merchant reads use global.kalicart.com only."]}}