Ivory River — Agent Commerce
Search, configure, quote, recommend gaming PCs and components. Hands user to in-browser checkout.
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": {
"agent-commerce": {
"url": "https://mcp.ivoryriver.store/sse"
}
}
}Remote endpoints
https://mcp.ivoryriver.store/ssesseWhat it can do
Tool inventory
Tools (8)
🟢search_products(query, limit, in_stock)
Search the Ivory River catalog with semantic + keyword hybrid ranking. Use for natural-language queries like "rtx 5090 laptop under $3000" or "case for AM5 build with tempered glass".
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Free-text search query."
},
"limit": {
"type": "integer",
"default": 10,
"minimum": 1,
"maximum": 50
},
"in_stock": {
"type": "boolean",
"default": true,
"description": "Whether to exclude out-of-stock items. Default true."
}
},
"required": [
"query"
]
}🟢get_product(id, fields)
Get full detail for a single product by ID. Includes price, stock, attributes, and (for BYOPC builds) a configurator summary.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "WooCommerce product ID."
},
"fields": {
"type": "string",
"description": "Optional comma-separated field projection."
}
},
"required": [
"id"
]
}🟢list_builds
List the four BYOPC tiers (Squire, Knight, DragonSlayer, Archangel) with their base prices and aggregate component summaries. Use this to overview what custom-build options exist before drilling into a specific tier.
Input Schema
{
"type": "object",
"properties": {}
}🟢list_build_options(tier_id)
Pull the full configurator schema for a single BYOPC tier: every field (Processor, Motherboard, GPU, RAM, Storage, etc.) with all child product options including price, stock, and IDs. Use this to see what selections are available before quoting.
Input Schema
{
"type": "object",
"properties": {
"tier_id": {
"type": "integer",
"description": "BYOPC tier product ID. 378 Squire, 459 Knight, 371 DragonSlayer, 460 Archangel."
}
},
"required": [
"tier_id"
]
}⚪quote_build(tier_id, selections)
Itemize a configured BYOPC build: returns line totals + grand total + pairwise compatibility check. Empty selections are valid -- the server auto-fills the cheapest in-stock option for any required field.
Input Schema
{
"type": "object",
"properties": {
"tier_id": {
"type": "integer"
},
"selections": {
"type": "object",
"description": "Object mapping field_id (string) → child_product_id (integer). E.g. {\"123\": 456, \"789\": 101}.",
"additionalProperties": {
"type": "integer"
}
}
},
"required": [
"tier_id"
]
}🟢check_compatibility(product_id_1, product_id_2)
Pairwise socket / DDR / form-factor compatibility check between two products. Returns { compatible, reason }. Use before recommending a CPU + motherboard pairing or RAM + motherboard.
Input Schema
{
"type": "object",
"properties": {
"product_id_1": {
"type": "integer"
},
"product_id_2": {
"type": "integer"
}
},
"required": [
"product_id_1",
"product_id_2"
]
}🟢recommend_build(use_case, budget)
Recommend BYOPC desktop tiers, optionally filtered by budget. `use_case` is informational (echoed in metadata) and helps the agent reason; the result is sorted by total ascending. For laptop recommendations, call search_products with category="laptops" instead.
Input Schema
{
"type": "object",
"properties": {
"use_case": {
"type": "string",
"description": "Free-form e.g. \"competitive FPS gaming\", \"video editing\"."
},
"budget": {
"type": "number",
"description": "USD ceiling. Builds with total > budget are dropped."
}
}
}🟡get_aivy_handoff_link(agent_name, recommendation, context)
Build the URL the agent hands to the user to finalize a recommendation. Lands the user on ivoryriver.store with the chat widget auto-opened, the agent's recommendation pre-staged, and quick-reply chips: [Yes, add to cart] [Show me the breakdown] [Modify components]. Use this AFTER you've recommended a build (via recommend_build / list_build_options / quote_build) and the user wants to proceed. The user always finishes the purchase in the browser; you never check out.
Input Schema
{
"type": "object",
"properties": {
"agent_name": {
"type": "string",
"description": "How the agent should be named in the handoff greeting (e.g. \"Claude Desktop\", \"Cursor\", \"your AI assistant\"). Cosmetic; defaults to \"your AI assistant\"."
},
"recommendation": {
"type": "object",
"description": "The recommendation to hand off.",
"properties": {
"kind": {
"type": "string",
"enum": [
"byopc",
"product",
"generic"
],
"description": "byopc = a BYOPC tier with selections; product = a specific WooCommerce product (laptop, GPU, etc.); generic = no specific product, conversation context only."
},
"tier_id": {
"type": "integer",
"description": "BYOPC tier product ID (kind=byopc)."
},
"tier_name": {
"type": "string",
"description": "Human-readable tier name shown in the chat (kind=byopc)."
},
"selections": {
"type": "object",
"additionalProperties": {
"type": "integer"
},
"description": "field_id → child_product_id (kind=byopc)."
},
"product_id": {
"type": "integer",
"description": "WooCommerce product ID (kind=product)."
},
"product_name": {
"type": "string",
"description": "Human-readable product name shown in the chat (kind=product)."
},
"quoted_total": {
"type": "number",
"description": "USD total quoted to the user. Cosmetic in the greeting; the server re-quotes when the user confirms."
}
},
"required": [
"kind"
]
},
"context": {
"type": "string",
"description": "Optional one-line summary of what the user originally asked (e.g. \"streaming + 4K editing under $2K\"). Shown to the chat backend so Aivy understands the original ask."
}
},
"required": [
"recommendation"
]
}Community
Evidence