{"id":326947,"date":"2026-06-18T07:52:48","date_gmt":"2026-06-18T07:52:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/kalicart-bridge\/"},"modified":"2026-09-28T17:05:48","modified_gmt":"2026-09-28T17:05:48","slug":"kalicart-bridge","status":"publish","type":"plugin","link":"https:\/\/zgh.wordpress.org\/plugins\/kalicart-bridge\/","author":23482077,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.139","stable_tag":"1.0.139","tested":"7.1.2","requires":"6.0","requires_php":"8.0","requires_plugins":null,"header_name":"KaliCart Bridge \u2013 Agentic Commerce Catalog, ChatGPT Product Feed & MCP","header_author":"KaliCart","header_description":"Makes your WooCommerce catalog machine-readable and agent-accessible. Exposes normalized product data via REST API \u2014 no LLM, no external service, no cloud dependency.","assets_banners_color":"0074f4","last_updated":"2026-09-28 17:05:48","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/bridge.kalicart.com","header_author_uri":"https:\/\/kalicart.com","rating":5,"author_block_rating":0,"active_installs":0,"downloads":2450,"num_ratings":2,"support_threads":1,"support_threads_resolved":1,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.100":{"tag":"1.0.100","author":"carthub","date":"2026-06-18 07:52:18","revision":3576758},"1.0.101":{"tag":"1.0.101","author":"carthub","date":"2026-06-18 09:03:11","revision":3576872},"1.0.102":{"tag":"1.0.102","author":"carthub","date":"2026-06-19 14:43:42","revision":3578815},"1.0.103":{"tag":"1.0.103","author":"carthub","date":"2026-06-21 19:02:01","revision":3580918},"1.0.104":{"tag":"1.0.104","author":"carthub","date":"2026-06-23 13:18:41","revision":3583313},"1.0.105":{"tag":"1.0.105","author":"carthub","date":"2026-06-24 06:23:35","revision":3584072},"1.0.106":{"tag":"1.0.106","author":"carthub","date":"2026-06-24 10:16:58","revision":3584482},"1.0.107":{"tag":"1.0.107","author":"carthub","date":"2026-06-25 13:30:02","revision":3586227},"1.0.108":{"tag":"1.0.108","author":"carthub","date":"2026-06-26 14:42:16","revision":3587370},"1.0.109":{"tag":"1.0.109","author":"carthub","date":"2026-06-27 18:39:18","revision":3588281},"1.0.110":{"tag":"1.0.110","author":"carthub","date":"2026-07-02 08:37:35","revision":3593615},"1.0.111":{"tag":"1.0.111","author":"carthub","date":"2026-07-02 11:45:22","revision":3593925},"1.0.112":{"tag":"1.0.112","author":"carthub","date":"2026-07-02 20:49:03","revision":3594524},"1.0.113":{"tag":"1.0.113","author":"carthub","date":"2026-07-03 13:03:31","revision":3595260},"1.0.114":{"tag":"1.0.114","author":"carthub","date":"2026-07-04 11:51:59","revision":3595941},"1.0.115":{"tag":"1.0.115","author":"carthub","date":"2026-07-10 13:25:41","revision":3602908},"1.0.116":{"tag":"1.0.116","author":"carthub","date":"2026-07-11 17:55:13","revision":3604219},"1.0.117":{"tag":"1.0.117","author":"carthub","date":"2026-07-12 13:06:42","revision":3604838},"1.0.118":{"tag":"1.0.118","author":"carthub","date":"2026-07-13 06:53:49","revision":3605559},"1.0.119":{"tag":"1.0.119","author":"carthub","date":"2026-07-14 08:43:34","revision":3607117},"1.0.120":{"tag":"1.0.120","author":"carthub","date":"2026-07-14 10:40:44","revision":3607299},"1.0.123":{"tag":"1.0.123","author":"carthub","date":"2026-07-22 07:06:25","revision":3618085},"1.0.124":{"tag":"1.0.124","author":"carthub","date":"2026-08-24 07:53:26","revision":3662852},"1.0.125":{"tag":"1.0.125","author":"carthub","date":"2026-09-02 19:42:57","revision":3678592},"1.0.126":{"tag":"1.0.126","author":"carthub","date":"2026-09-09 11:40:51","revision":3688224},"1.0.127":{"tag":"1.0.127","author":"carthub","date":"2026-09-10 06:41:35","revision":3689409},"1.0.128":{"tag":"1.0.128","author":"carthub","date":"2026-09-11 05:42:18","revision":3690848},"1.0.129":{"tag":"1.0.129","author":"carthub","date":"2026-09-11 12:29:11","revision":3691377},"1.0.130":{"tag":"1.0.130","author":"carthub","date":"2026-09-12 09:36:02","revision":3692522},"1.0.131":{"tag":"1.0.131","author":"carthub","date":"2026-09-13 12:19:20","revision":3693633},"1.0.132":{"tag":"1.0.132","author":"carthub","date":"2026-09-14 11:14:44","revision":3695047},"1.0.133":{"tag":"1.0.133","author":"carthub","date":"2026-09-15 18:20:17","revision":3697541},"1.0.134":{"tag":"1.0.134","author":"carthub","date":"2026-09-17 07:26:10","revision":3699688},"1.0.135":{"tag":"1.0.135","author":"carthub","date":"2026-09-18 12:00:49","revision":3701919},"1.0.136":{"tag":"1.0.136","author":"carthub","date":"2026-09-22 16:28:41","revision":3707759},"1.0.137":{"tag":"1.0.137","author":"carthub","date":"2026-09-26 11:09:51","revision":3714157},"1.0.138":{"tag":"1.0.138","author":"carthub","date":"2026-09-27 08:30:22","revision":3715158},"1.0.139":{"tag":"1.0.139","author":"carthub","date":"2026-09-28 17:05:48","revision":3717640}},"upgrade_notice":[],"ratings":{"1":0,"2":0,"3":0,"4":0,"5":2},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3576832,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3576832,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3576832,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3576832,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.100","1.0.101","1.0.102","1.0.103","1.0.104","1.0.105","1.0.106","1.0.107","1.0.108","1.0.109","1.0.110","1.0.111","1.0.112","1.0.113","1.0.114","1.0.115","1.0.116","1.0.117","1.0.118","1.0.119","1.0.120","1.0.123","1.0.124","1.0.125","1.0.126","1.0.127","1.0.128","1.0.129","1.0.130","1.0.131","1.0.132","1.0.133","1.0.134","1.0.135","1.0.136","1.0.137","1.0.138","1.0.139"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[250436,216196,242115,5418,254710],"plugin_category":[45],"plugin_contributors":[261605],"plugin_business_model":[],"class_list":["post-326947","plugin","type-plugin","status-publish","hentry","plugin_tags-agentic-commerce","plugin_tags-chatgpt","plugin_tags-mcp","plugin_tags-product-feed","plugin_tags-ucp","plugin_category-ecommerce","plugin_contributors-carthub","plugin_committers-carthub"],"banners":{"banner":"https:\/\/ps.w.org\/kalicart-bridge\/assets\/banner-772x250.png?rev=3576832","banner_2x":"https:\/\/ps.w.org\/kalicart-bridge\/assets\/banner-1544x500.png?rev=3576832","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/kalicart-bridge\/assets\/icon-128x128.png?rev=3576832","icon_2x":"https:\/\/ps.w.org\/kalicart-bridge\/assets\/icon-256x256.png?rev=3576832","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Make your WooCommerce catalog ready to be read and verified by AI shopping systems.<\/p>\n\n<p>KaliCart Bridge gives you an immediate catalog-readiness report inside WooCommerce: it identifies products with missing images, brand, usable description, category, price or SKU, and links you directly to the native Products screen to fix them. It then exposes your live catalog in a structured form for AI agents and can generate a validated product feed ready for ChatGPT merchant submission.<\/p>\n\n<p>No LLM runs on your site. No cloud service or customer data is sent anywhere by default. Prices, availability and product changes remain live on your WooCommerce store.<\/p>\n\n<p>The plugin does not promise traffic, ChatGPT placement or merchant approval. It prepares and exposes your catalog; OpenAI controls access to its own shopping surfaces and delivery channel.<\/p>\n\n<p><strong>What you get after installation<\/strong><\/p>\n\n<ul>\n<li>A catalog-readiness report with actionable product fixes.<\/li>\n<li>A current, structured catalog API for agents that reach your store.<\/li>\n<li>An optional ChatGPT feed, validated before export.<\/li>\n<li>Optional inclusion in KaliCart's federated catalog, only with explicit consent.<\/li>\n<\/ul>\n\n<p>Documentation: https:\/\/bridge.kalicart.com\/docs\/<\/p>\n\n<p><strong>For developers and AI integrations<\/strong><\/p>\n\n<p><strong>What it does:<\/strong><\/p>\n\n<ul>\n<li>Exposes a <code>\/discovery<\/code> endpoint \u2014 the single entry point any agent needs to understand your catalog<\/li>\n<li>Provides <code>\/catalog\/search<\/code>, <code>\/catalog\/products<\/code>, <code>\/catalog\/product\/{id}<\/code>, <code>\/catalog\/categories<\/code> endpoints<\/li>\n<li>Exposes a Model Context Protocol (MCP) server at <code>\/wp-json\/kalicart\/v1\/mcp<\/code> (JSON-RPC 2.0) so MCP-capable agents can call the catalog as tools \u2014 same data as the REST endpoints, no API key<\/li>\n<li>Gives AI chatbot and assistant builders a structured catalog source to ingest or call, instead of scraping product pages<\/li>\n<li>Computationally normalizes product data: prices (min\/max for variables, sale %, discount), stock, gender inference, color family mapping, size type detection<\/li>\n<li>Exposes WooCommerce shipping-zone policy for agent reasoning; checkout remains the final authority for exact destination\/cart shipping cost<\/li>\n<li>Exposes active product\/category-compatible coupons as conditional checkout savings; coupons never replace the catalog price<\/li>\n<li>Category tree nodes include direct <code>products_url<\/code> and <code>search_url_template<\/code> fields so agents can navigate without constructing URLs manually<\/li>\n<li>Dashboard issue cards and suggestions link to filtered product lists for direct remediation<\/li>\n<li>Uses <strong>your merchant taxonomy<\/strong> \u2014 no global remapping, products stay in your WooCommerce categories<\/li>\n<li>Injects a <code>&lt;link rel=\"kalicart-agent\"&gt;<\/code> in your site <code>&lt;head&gt;<\/code> for agent auto-discovery<\/li>\n<li>Adds an \"agent ready\" badge in the footer<\/li>\n<li>Injects <code>Allow: \/wp-json\/kalicart\/<\/code> in <code>robots.txt<\/code><\/li>\n<li>Generates <code>\/kalicart-sitemap.xml<\/code> linked from the WP sitemap index<\/li>\n<li>Shows a catalog health dashboard in wp-admin with quarantine tracking and improvement suggestions<\/li>\n<\/ul>\n\n<p><strong>What it does NOT do:<\/strong><\/p>\n\n<ul>\n<li>No LLM calls<\/li>\n<li>No cloud dependency for core functionality<\/li>\n<li>No data sent anywhere outside your server by default \u2014 the optional Federated Catalog and provider-specific distribution channels require separate explicit actions (see \"External services\" below)<\/li>\n<li>No API key required for public endpoints<\/li>\n<\/ul>\n\n<p><strong>Normalization engine:<\/strong><\/p>\n\n<ul>\n<li>Price: regular, sale, current, discount %, currency \u2014 variable products get min\/max ranges<\/li>\n<li>Stock: status, in_stock bool, quantity if managed, backorder policy<\/li>\n<li>Gender: inferred from <code>pa_gender<\/code> attribute, category paths, tags, product name (multilingual keywords: IT\/EN\/FR\/DE\/ES)<\/li>\n<li>Color: mapped to 13 color families via keyword matching on <code>pa_color<\/code>\/<code>pa_colore<\/code> and product metadata<\/li>\n<li>Size: detected from <code>pa_size<\/code>\/<code>pa_taglia<\/code>, type auto-detected (clothing S\/M\/L, numeric EU, shoes EU half-sizes)<\/li>\n<\/ul>\n\n<p><strong>Catalog health \/ quarantine:<\/strong><\/p>\n\n<p>Products are scored 0\u2013100 based on: title quality, description length, category assignment, price validity, image presence and SKU presence. Quarantine is reserved for blocking computability issues: ambiguous\/too-short titles, missing or very short descriptions, missing real categories, and missing or zero prices. Missing images and SKUs remain clickable improvement suggestions but do not quarantine products.<\/p>\n\n<p><strong>Checkout sessions (optional):<\/strong><\/p>\n\n<p>When enabled in WP Admin \u2192 KaliCart \u2192 Settings, agents can create checkout sessions containing one or more products. Each session returns cart_url (lands on WooCommerce cart for review) and checkout_url (goes directly to checkout). Sessions expire after 30 minutes. No OAuth, no PII, no payment on the agent side.<\/p>\n\n<p><strong>Model Context Protocol (MCP) endpoint:<\/strong><\/p>\n\n<p>The same read-only catalog is also exposed as an MCP server at <code>\/wp-json\/kalicart\/v1\/mcp<\/code> (JSON-RPC 2.0 over HTTP POST). MCP-capable agents and assistants connect to it and call the catalog as tools: <code>search_products<\/code>, <code>list_products<\/code>, <code>get_product<\/code>, <code>list_categories<\/code>, <code>get_meta<\/code>. It is read-only and needs no authentication, exactly like the public REST endpoints \u2014 it adds a second transport, not new data. No LLM, no external calls. Checkout and payment are never exposed over MCP.<\/p>\n\n<h3>ChatGPT Product Discovery Feed<\/h3>\n\n<ol>\n<li><strong>Configure and generate.<\/strong> Optionally set your return policy URL and target countries (derived from your WooCommerce selling locations) and, for own-label stores, a brand fallback. The plugin validates every row against the current OpenAI Product Feed specification - neither looser nor stricter: required fields are required, optional fields are included only when known and valid, products without image or brand are excluded and counted, and a failed run never destroys the last valid feed.<\/li>\n<li><strong>Apply at chatgpt.com\/merchants.<\/strong> Application and approval are required and decided by OpenAI.<\/li>\n<li><strong>Deliver after approval.<\/strong> Upload the generated file (stable filename, <code>jsonl.gz<\/code> supported) on the delivery channel OpenAI assigns. The plugin regenerates a full daily snapshot via WP-Cron.<\/li>\n<\/ol>\n\n<p>No acceptance or visibility is guaranteed by the plugin: approval, delivery access and final ranking are determined by OpenAI.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin works fully standalone. It connects to one external service <strong>only after an explicit administrator action<\/strong> in WP Admin \u2192 KaliCart Bridge. Federated Catalog participation and each provider-specific distribution authorization are separate choices; a provider channel cannot be authorized until the Federated Catalog is active.<\/p>\n\n<p><strong>Service:<\/strong> KaliCart Global (https:\/\/dashboard.kalicart.com)<\/p>\n\n<p><strong>When data is sent:<\/strong> When an administrator activates or revokes the Federated Catalog, requests its external-visibility status, or explicitly grants or revokes a named federated distribution channel. After a provider receipt exists, opening the plugin page requests its processing status using the public site URL and consent ID. A failed provider-receipt delivery may be retried twice, after approximately one minute and five minutes. While the Federated Catalog is active, the plugin also proves this installation's identity once and then sends a signed status signal about once a day; it sends a signed leaving signal when the plugin is deactivated or deleted, and a signed consent-off signal when federation is revoked. Nothing is sent merely because the plugin is installed or activated.<\/p>\n\n<p><strong>What is sent:<\/strong> Federated Catalog activation, revocation and visibility checks send the site's public URL (e.g. https:\/\/yourstore.com). A provider authorization receipt additionally sends its consent ID, provider, purpose, action, UTC timestamp, plugin and terms versions, consent locale, and SHA-256 evidence-chain hashes. The administrator's WordPress user ID and localized consent text remain only in the store's local evidence log. The identity signals send the site's host, a random installation ID, this installation's public key, a one-time verification code, the consent state and the consent text version, the plugin, WordPress and PHP versions, the status of the public catalog files (sequence number, file address and hashes, product count, whether complete, generation time) and whether the store is in WooCommerce \"coming soon\" or WordPress maintenance mode; when the plugin itself hit a fatal error, a normalized error code, the time and a short non-reversible hash - never the error message, file paths or stack traces. The private key never leaves the site. No customer, order, payment, credential or API-key data is transmitted.<\/p>\n\n<p><strong>What the service does:<\/strong> The URL tells KaliCart Global your store wishes to be discovered. KaliCart Global periodically reads your already-public catalog and includes it in federated agent search. For a separately authorized provider channel, KaliCart Global stores the minimal receipt and verifies the matching authorization against the store's public discovery document before the channel can become eligible. It only reads public catalog data; it never writes to your store. Since 1.0.139 it can also read the catalog from public files this plugin writes on your site, in <code>\/.well-known\/kalicart\/<\/code> (or in <code>wp-content\/uploads\/kalicart\/<\/code> when that folder cannot be written): the same public catalog data as the catalog API, without exact stock quantities. The files are updated when products are edited and deleted when the Federated Catalog is revoked or the plugin is deactivated or deleted. In its answer to the status signal, KaliCart Global reports how it reads the catalog; the plugin stores that report locally and shows it only in the plugin page and in Site Health. If the plugin folder is removed outside WordPress, the catalog files remain on the site, and KaliCart Global does not use them without a current signed status.<\/p>\n\n<p><strong>Retention:<\/strong> KaliCart Global keeps the current state while the store takes part; events and reading reports for 90 days, then only anonymous daily totals without site address, URL or IP address; server logs containing IP addresses for 30 days. 30 days after revocation or removal, the catalog, its copies, the events and the current identity state are deleted. Only a minimal revocation record (site address and revocation date, so that the store is not listed again by mistake) and the history of the installation's signing keys (public keys and verification dates, kept as a security record) remain. The Federated Catalog consent receipt stays in the store's WordPress database until the plugin is deleted and is not sent to KaliCart Global.<\/p>\n\n<p><strong>Privacy notice:<\/strong> https:\/\/bridge.kalicart.com\/privacy\/\n<strong>Terms \/ documentation:<\/strong> https:\/\/bridge.kalicart.com\/docs\/<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to <code>\/wp-content\/plugins\/kalicart-bridge\/<\/code><\/li>\n<li>Activate the plugin through the Plugins screen in WordPress<\/li>\n<li>Navigate to <strong>KaliCart<\/strong> in the admin menu<\/li>\n<li>The catalog is immediately accessible at <code>yourdomain.com\/wp-json\/kalicart\/v1\/discovery<\/code><\/li>\n<li>MCP-capable agents can connect to the MCP server at <code>yourdomain.com\/wp-json\/kalicart\/v1\/mcp<\/code><\/li>\n<\/ol>\n\n<p>Full operational documentation is always available at <code>https:\/\/bridge.kalicart.com\/docs\/<\/code>.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20the%20chatgpt%20feed%20work%20outside%20the%20u.s.%3F\"><h3>Does the ChatGPT feed work outside the U.S.?<\/h3><\/dt>\n<dd><p>The feed format is region-neutral. Merchant eligibility and shopping-surface availability are determined by OpenAI and may vary by market.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20handle%20checkout%3F\"><h3>Does the plugin handle checkout?<\/h3><\/dt>\n<dd><p>No, by design. The feed is discovery-only (<code>is_eligible_checkout=false<\/code>): customers buy on your storefront and you remain merchant of record. This matches OpenAI's own shift toward merchant-owned checkout.<\/p><\/dd>\n<dt id=\"does%20this%20share%20my%20data%20with%20kalicart%20or%20any%20third%20party%3F\"><h3>Does this share my data with KaliCart or any third party?<\/h3><\/dt>\n<dd><p>Not unless you choose to. By default the plugin runs entirely on your server and sends nothing externally. Activating the optional Federated Catalog sends your store's public URL to KaliCart Global. A provider-specific distribution channel is a second, separate opt-in: its tamper-evident receipt contains the public URL and authorization metadata and hashes, but never the administrator identity or localized consent text. No customer, order, payment or credential data is sent. See \"External services\" below, and the privacy notice at https:\/\/bridge.kalicart.com\/privacy\/.<\/p><\/dd>\n<dt id=\"do%20i%20need%20a%20kalicart%20account%3F\"><h3>Do I need a KaliCart account?<\/h3><\/dt>\n<dd><p>No. This plugin is fully standalone and free.<\/p><\/dd>\n<dt id=\"what%20is%20the%20federated%20catalog%3F\"><h3>What is the Federated Catalog?<\/h3><\/dt>\n<dd><p>The Federated Catalog is an optional discovery network operated by KaliCart Global. The Bridge makes your catalog readable by agents that already reach your domain; the Federated Catalog makes it discoverable by agents that do not know your store yet. It is opt-in, separate from the local Bridge endpoints, and revocable at any time.<\/p>\n\n<p>There are two discovery paths. Local signals \u2014 <code>.well-known<\/code> files, robots.txt entries, the <code>rel=\"kalicart-agent\"<\/code> head link and the badge \u2014 help an agent that lands on your own domain find the Bridge. They do not feed the federated index by themselves. The federated index is a separate cross-merchant index: after you activate it, KaliCart Global reads your already-public <code>\/discovery<\/code> and <code>\/catalog\/*<\/code> endpoints, and the public catalog files this plugin writes on your site, and lets agents search across participating stores.<\/p>\n\n<p>End to end: from WP Admin \u2192 KaliCart Bridge you activate the Federated Catalog; the plugin sends only your public site URL; KaliCart Global reads the public catalog (from the catalog API or from the public catalog files); matching results route agents back to your store. Authoritative price, availability and checkout stay on your WooCommerce site, served live by your Bridge. If you revoke consent, your catalog leaves federated results while direct agent access to your store remains active.<\/p><\/dd>\n<dt id=\"is%20this%20ucp%20or%20acp%20compatible%3F\"><h3>Is this UCP or ACP compatible?<\/h3><\/dt>\n<dd><p>ACP: the plugin builds the OpenAI-compatible product feed for ChatGPT product discovery (see \"ChatGPT Product Discovery Feed\" above).<\/p>\n\n<p>UCP: the plugin does not publish a UCP profile on your store, because it does not implement the UCP binding on your site. If you join the Federated Catalog, KaliCart Global serves your products to UCP shopping agents in the UCP Catalog format (specification 2026-08-25), with price and availability read live from your Bridge when an agent opens a product and your store answers in time. There is nothing extra to configure.<\/p><\/dd>\n<dt id=\"who%20can%20access%20the%20catalog%20endpoints%3F\"><h3>Who can access the catalog endpoints?<\/h3><\/dt>\n<dd><p>Public endpoints (discovery, search, products, categories) are accessible without authentication \u2014 same as the WooCommerce REST API public surfaces. The <code>\/health<\/code> endpoint requires <code>manage_woocommerce<\/code> capability.<\/p><\/dd>\n<dt id=\"can%20i%20disable%20the%20badge%20or%20robots.txt%20injection%3F\"><h3>Can I disable the badge or robots.txt injection?<\/h3><\/dt>\n<dd><p>Yes \u2014 all three signals (badge, robots.txt, sitemap) can be toggled individually in the KaliCart settings tab.<\/p><\/dd>\n<dt id=\"how%20often%20is%20the%20health%20report%20cached%3F\"><h3>How often is the health report cached?<\/h3><\/dt>\n<dd><p>5 minutes. You can force a refresh via the \"Refresh analysis\" button or the <code>?force=true<\/code> query parameter on the <code>\/health<\/code> endpoint.<\/p><\/dd>\n<dt id=\"how%20do%20i%20connect%20this%20to%20an%20ai%20assistant%20or%20mcp%20client%3F\"><h3>How do I connect this to an AI assistant or MCP client?<\/h3><\/dt>\n<dd><p>The catalog can be consumed two ways. Any agent can call the plain REST endpoints under <code>\/wp-json\/kalicart\/v1\/catalog\/<\/code> directly. MCP-capable clients can instead connect to the MCP server at <code>\/wp-json\/kalicart\/v1\/mcp<\/code> (JSON-RPC 2.0): the assistant connects to that URL \u2014 no API key \u2014 and gains the catalog tools (search_products, get_product, list_categories, get_meta, list_products). In clients that support remote MCP connectors, add it as a custom connector pointing to that URL.<\/p><\/dd>\n<dt id=\"can%20woocommerce%20chatbot%20services%20use%20the%20bridge%3F\"><h3>Can WooCommerce chatbot services use the Bridge?<\/h3><\/dt>\n<dd><p>Yes, when the chatbot service can ingest URLs, API documents or external knowledge sources. Give it the discovery URL first: <code>https:\/\/yourdomain.com\/wp-json\/kalicart\/v1\/discovery<\/code>. From there it can find the catalog endpoints, the OpenAPI description and the MCP endpoint. If the service supports live REST or MCP calls, it can query current catalog data directly. If it only imports a knowledge base, it may create a snapshot: useful for product answers, but final price, stock, coupons, shipping and checkout should still be verified on the merchant site.<\/p>\n\n<p>The benefit is practical: chatbot builders can read a structured, machine-readable WooCommerce catalog instead of scraping product pages. The Bridge does not add an LLM to your site and does not decide how the chatbot works; it supplies cleaner catalog data for tools that can consume it.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.139<\/h4>\n\n<p><strong>KaliCart Global can read the catalog even when the catalog API is not reachable from outside.<\/strong><\/p>\n\n<ul>\n<li>New: public catalog files. While the Federated Catalog is active, the plugin writes the public catalog as static files in <code>\/.well-known\/kalicart\/<\/code> (or in <code>wp-content\/uploads\/kalicart\/<\/code> when that folder cannot be written), updated when products are edited and once a day. They contain the same public data as the catalog API, without exact stock quantities, and are deleted when the Federated Catalog is revoked or the plugin is deactivated or deleted. Nothing is written without the Federated Catalog.<\/li>\n<li>Change: the Federated Catalog consent text (version 1.1) says that KaliCart Global also reads these public files and lists exactly what the daily status signal contains. Same data, same recipient: stores that already joined keep their consent. New activations record a local receipt (text version, time, user, text hashes) in a tamper-evident chain; the receipt stays on the site.<\/li>\n<li>New: the ChatGPT distribution channel can be chosen in the same screen as the Federated Catalog, with an unchecked box. It is still a separate authorization with its own receipt, and its text is unchanged.<\/li>\n<li>New: Site Health reports, as \"recommended\" at most, when the status signal has not been delivered for more than 3 days, when the catalog files cannot be written, are incomplete or are old, and when KaliCart Global reports that it cannot read the catalog. Each result says what was measured and what happens by itself.<\/li>\n<li>The report from KaliCart Global is data: only known fields are kept and it never triggers an action on the site.<\/li>\n<li>Deleting the plugin also deletes the local consent receipts.<\/li>\n<li>Translated in Italian, German, Spanish and French.<\/li>\n<\/ul>\n\n<h4>1.0.138<\/h4>\n\n<p><strong>The ChatGPT product feed follows the current OpenAI specification: neither looser nor stricter.<\/strong><\/p>\n\n<ul>\n<li>Change: products without a brand are no longer written to the ChatGPT feed. Brand is required by the OpenAI specification; affected products are excluded, counted and listed in the panel. A merchant-declared brand fallback for own-label stores still applies. The catalog, search, REST API and MCP are unaffected.<\/li>\n<li>Fix: additional product images are written as a list, as the specification requires in JSONL. They were written as one comma-separated text.<\/li>\n<li>Fix: return policy, store country and target countries are optional in the specification and no longer block feed generation when missing. When set, they are included and validated.<\/li>\n<li>Fix: a GTIN is included only with an accepted length (8, 12, 13 or 14 digits) and a valid check digit; otherwise the field is left out and the product stays in the feed.<\/li>\n<li>Fix: a sale price must be lower than the regular price, prices must be positive, star ratings use two decimals, and variant rows must carry their variant options - as the specification requires.<\/li>\n<li>Change: absolute http and https URLs are accepted (https preferred), and no length limit the specification does not state is applied to brand or seller name.<\/li>\n<li>New: installation identity. While the Federated Catalog is active, the plugin creates one signing key for this installation (the private key stays on the site, encrypted) and proves to KaliCart Global that it runs on this domain: KaliCart Global reads a one-time code the plugin publishes in its own discovery and in <code>\/.well-known\/kalicart-bridge.json<\/code>. This also works when an anti-bot service blocks dynamic pages but serves static files. Verified is not the same as listed: if KaliCart Global still cannot read the catalog from outside, the panel says so.<\/li>\n<li>New: a signed status signal about once a day and a signed leaving signal on deactivation or deletion, so KaliCart Global can tell a store that left from a store that is broken. No error messages or paths are sent: at most a normalized error code of this plugin. See \"External services\".<\/li>\n<li>New: the external visibility check shows the store identity (verified, pending or failed) and whether the catalog can be received.<\/li>\n<li>Nothing in the identity can block the plugin, the catalog or the feed; failures are retried automatically. It runs only on production sites installed at the domain root.<\/li>\n<li>Fix: the plugin description on the Plugins screen no longer says \"no external service\". The optional KaliCart Global connection is an external service and is described under \"External services\".<\/li>\n<li>Translated in Italian, German, Spanish and French.<\/li>\n<\/ul>\n\n<h4>Earlier releases<\/h4>\n\n<ul>\n<li>The complete release history is in changelog.txt, included with the plugin.<\/li>\n<\/ul>","raw_excerpt":"Agent-readable WooCommerce catalog: product feed checked against the OpenAI spec, MCP server, catalog API and UCP Catalog via KaliCart Global.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/zgh.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/326947","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zgh.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/zgh.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/zgh.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=326947"}],"author":[{"embeddable":true,"href":"https:\/\/zgh.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/carthub"}],"wp:attachment":[{"href":"https:\/\/zgh.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=326947"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/zgh.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=326947"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/zgh.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=326947"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/zgh.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=326947"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/zgh.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=326947"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/zgh.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=326947"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}