kalicart-global
Federated commerce search across independent WooCommerce merchants. Keyless, read-only MCP server.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"kalicart-global": {
"url": "https://dashboard.kalicart.com/mcp-public"
}
}
}Remote endpoints
https://dashboard.kalicart.com/mcp-publicstreamable-httphttps://global.kalicart.com/mcp-publicstreamable-httpWhat it can do
Tool inventory
Tools (5)
🟢global_search(q, leaf, brand, gender, color, ...)
Use this when a user wants to find or compare product candidates across participating WooCommerce merchants. Search with q and/or a canonical category leaf; results contain snapshot price and stock, match evidence, provenance, and merchant Bridge handoff links. Do not use this as final price, variant, stock, checkout, or payment authority; verify the selected offer through its handoff.
Input Schema
{
"type": "object",
"properties": {
"q": {
"type": "string",
"description": "Free-text product query. Each term must match as a whole word in the native merchant catalog text (name, short description, description) or in the canonical category path, so English category terms reach catalogs written in other languages: q=\"mattress\" returns products under home.bedroom.mattress even when their text is Italian. There is no server-side translation of product text; for language-neutral retrieval by category use leaf and the canonical filters."
},
"leaf": {
"type": "string",
"description": "Canonical category node. Accepts a terminal leaf (e.g. beverages.alcohol.sparkling_prosecco) or any parent node (e.g. jewellery, home.bedroom): a parent matches the node and its whole subtree, so you can widen or narrow the search by moving up or down the tree. Use list_categories to browse the tree."
},
"brand": {
"type": "string",
"description": "Brand facet filter (normalized, e.g. \"nike\")"
},
"gender": {
"type": "string",
"enum": [
"female",
"male",
"unisex"
],
"description": "Canonical gender facet. Filtering is discovery-tolerant: untagged and unisex products can remain candidates, so verify the chosen product. Allowed values: female, male, unisex."
},
"color": {
"type": "string",
"description": "Bridge color family (e.g. \"blue\"). Common aliases are resolved to a family available in the active index. A family match does not guarantee an exact shade; read filter_semantics.color and verify the chosen product via handoff.bridge_product_url."
},
"in_stock": {
"type": "boolean",
"description": "true filters product-level stock in the indexed snapshot. Does not verify a selected variant or a booking slot."
},
"min_price": {
"type": "number",
"minimum": 0,
"description": "Lower bound in major currency units (for example 50 means EUR 50 for EUR offers). Matches overlapping variant price ranges in each offer currency; no FX conversion. Verify the chosen variant."
},
"max_price": {
"type": "number",
"minimum": 0,
"description": "Upper bound in major currency units (for example 1550 means EUR 1,550 for EUR offers). A matching range may include variants above this bound; verify the chosen variant. Per-offer currency, no FX conversion."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 25,
"description": "Max offers to return (1-25, default 10). No pagination; raise to get more in one call"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"federated": {
"type": "boolean"
},
"scope": {
"type": "object",
"properties": {
"type": {
"type": "string"
}
},
"required": [
"type"
],
"additionalProperties": true
},
"coverage": {
"type": "object",
"properties": {
"returned": {
"type": "integer",
"minimum": 0
},
"limit": {
"type": "integer",
"exclusiveMinimum": 0
},
"total_known": {
"type": "boolean"
},
"more_results_possible": {
"type": "boolean"
}
},
"required": [
"returned",
"limit",
"total_known",
"more_results_possible"
],
"additionalProperties": true
},
"result_count": {
"type": "integer",
"minimum": 0
},
"applied_filters": {
"type": "object",
"additionalProperties": {}
},
"offers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"p2209_id": {
"type": "string"
},
"merchant_domain": {
"type": "string"
},
"name": {
"type": "string"
},
"price": {},
"availability_status": {
"type": [
"string",
"null"
]
},
"category_leaf": {
"type": [
"string",
"null"
]
},
"provenance": {},
"handoff": {}
},
"required": [
"p2209_id",
"merchant_domain",
"name"
],
"additionalProperties": true
}
},
"error": {
"type": "string"
},
"guidance_code": {
"type": "string"
}
},
"additionalProperties": true,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢lookup_merchant(domain)
Use this when the user already knows a merchant domain and needs to check whether it publishes a KaliCart Bridge catalog, its latest observed access state, or its federation consent. This tool only reads the Global registry and never probes or modifies the merchant. Do not use it to discover products; use global_search instead.
Input Schema
{
"type": "object",
"properties": {
"domain": {
"type": "string",
"minLength": 4,
"description": "Merchant domain, e.g. shop.example.com"
}
},
"required": [
"domain"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"registered": {
"type": "boolean"
},
"domain": {
"type": "string"
},
"bridge_detected": {
"type": "boolean"
},
"bridge_version": {
"type": [
"string",
"null"
]
},
"merchant_discovery_url": {
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"type": "null"
}
]
},
"consent": {},
"federation_status": {
"type": "string"
},
"bridge_access": {
"type": "string"
},
"observed_at": {
"anyOf": [
{
"anyOf": [
{
"type": "string"
},
{
"type": "string",
"format": "date-time"
}
]
},
{
"type": "null"
}
]
},
"probe": {
"type": "string"
}
},
"required": [
"registered",
"domain"
],
"additionalProperties": true,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_product(p2209_id)
Use this after global_search when the selected candidate needs indexed details that are not already on its search card. The p2209_id must come from global_search. This remains a snapshot, not live merchant verification; follow the returned handoff before confirming variant, price, or stock. Skip this call when the search card already answers the question.
Input Schema
{
"type": "object",
"properties": {
"p2209_id": {
"type": "string",
"minLength": 1,
"description": "KaliCart product ID (e.g. prod_duinshop-it_432395)"
}
},
"required": [
"p2209_id"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"p2209_id": {
"type": "string"
},
"error": {
"type": "string"
},
"scope": {
"type": "object",
"properties": {
"type": {
"type": "string"
}
},
"required": [
"type"
],
"additionalProperties": true
},
"name": {
"type": "string"
},
"category": {
"type": [
"string",
"null"
]
},
"merchant_id": {
"type": "string"
},
"storefront_url": {
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"type": "null"
}
]
},
"product_url": {
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"type": "null"
}
]
},
"price": {},
"availability": {},
"attributes": {},
"variants": {},
"provenance": {},
"handoff": {},
"updated_at": {
"anyOf": [
{
"anyOf": [
{
"type": "string"
},
{
"type": "string",
"format": "date-time"
}
]
},
{
"type": "null"
}
]
}
},
"required": [
"p2209_id"
],
"additionalProperties": true,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_merchants(limit)
Use this to inspect which WooCommerce merchants currently participate in the searchable KaliCart Global catalog and how much catalog coverage each contributes. It returns stable merchant identifiers, domains, storefront URLs, product counts, and sync time. Do not use it to find products; use global_search instead.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"default": 20,
"description": "Max merchants to return (default 20, max 50), ordered by product count descending. No pagination"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"merchants": {
"type": "array",
"items": {
"type": "object",
"properties": {
"merchant_id": {
"type": "string"
},
"merchant_domain": {
"type": [
"string",
"null"
]
},
"storefront_url": {
"type": "string",
"format": "uri"
},
"platform": {
"type": "string"
},
"product_count": {
"type": "integer",
"minimum": 0
},
"last_sync": {
"anyOf": [
{
"anyOf": [
{
"type": "string"
},
{
"type": "string",
"format": "date-time"
}
]
},
{
"type": "null"
}
]
}
},
"required": [
"merchant_id",
"merchant_domain",
"platform",
"product_count",
"last_sync"
],
"additionalProperties": false
}
},
"total": {
"type": "integer",
"minimum": 0
},
"returned_count": {
"type": "integer",
"minimum": 0
},
"truncated": {
"type": "boolean"
}
},
"required": [
"merchants",
"total",
"returned_count",
"truncated"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_categories(parent)
Use this to discover the canonical category paths currently represented in KaliCart Global before calling global_search with leaf. An optional parent returns that node and its full subtree. This lists category vocabulary and counts; it does not return products.
Input Schema
{
"type": "object",
"properties": {
"parent": {
"type": "string",
"description": "Optional canonical node to restrict results to that node and its subtree (for example apparel or home.bedroom)"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"categories": {
"type": "array",
"items": {
"type": "object",
"properties": {
"leaf": {
"type": "string"
},
"product_count": {
"type": "integer",
"minimum": 0
}
},
"required": [
"leaf",
"product_count"
],
"additionalProperties": false
}
},
"total": {
"type": "integer",
"minimum": 0
},
"returned_count": {
"type": "integer",
"minimum": 0
},
"truncated": {
"type": "boolean"
},
"complete_via": {
"type": "string",
"format": "uri"
},
"next_step": {
"type": "string"
},
"filtered_by": {
"type": [
"string",
"null"
]
}
},
"required": [
"categories",
"total",
"returned_count",
"truncated",
"filtered_by"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Community
Evidence