rove.chrisforyou.chatgpt.site
A shared fashion research workspace where people and browser agents build considered edits from real retailer links.
First seen 2026-11-05 · Last seen 2026-11-05 · Source: webmcp.com
Answer 9 · Act 17 · Transact 1 · Score: Not yet scored
Tool inspector
publish_candidates
Publish multiple products observed on a claimed retailer listing, or returned by Shop search_catalog for a claimed Shop catalogue target. For Shop results, set url to the featured variant url exactly as returned, image to its first media url, and copy product/variant/seller IDs into shop and product.options into shop.options so every size and colour is recorded; Rove converts shop.price minor units to a decimal price itself, but never converts currency: a non-CAD shop.price is rejected unless priceCad is a CAD price the seller actually shows. Every candidate must include its canonical product page URL, name, and a direct HTTP(S) product image URL so recommendations are never published without imagery. Rove derives canonical identity, retailer, source, and timestamp, then enforces target-domain, mission, department, category, retailer, budget, and CAD rules.
Input schema
| Property | Type | Required | Description |
|---|---|---|---|
searchId |
string | yes | — |
targetId |
string | yes | — |
candidates |
array | yes | — |
Raw JSON schema
{
"type": "object",
"properties": {
"searchId": {
"type": "string"
},
"targetId": {
"type": "string"
},
"candidates": {
"type": "array",
"minItems": 1,
"maxItems": 40,
"items": {
"type": "object",
"properties": {
"url": {
"type": "string"
},
"name": {
"type": "string"
},
"retailer": {
"type": "string",
"description": "Used only for unknown retailers found through discovery; known identity is derived from the domain."
},
"brand": {
"type": "string"
},
"nativePrice": {
"type": "number",
"minimum": 0.01
},
"nativeCurrency": {
"type": "string"
},
"priceCad": {
"type": "number",
"description": "Required for non-CAD listings and budget-constrained missions.",
"minimum": 0.01
},
"image": {
"type": "string",
"description": "Required direct HTTP(S) URL for the product image observed on the retailer page. Do not use the product page URL, a search result, or a placeholder."
},
"imageWidth": {
"type": "number",
"minimum": 1
},
"imageHeight": {
"type": "number",
"minimum": 1
},
"category": {
"type": "string",
"enum": [
"tops",
"bottoms",
"dresses",
"outerwear",
"footwear",
"accessories",
"activewear",
"swimwear",
"fragrance"
]
},
"shoppingDepartment": {
"type": "string",
"enum": [
"women",
"men",
"all"
]
},
"needIds": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 12,
"description": "Mission need IDs this observed product can fulfill. IDs must be present on the claimed target."
},
"sizes": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 60,
"description": "Retailer listings: every size label the product page or listing offers, exactly as shown. Shop candidates use shop.options instead."
},
"colors": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 60,
"description": "Retailer listings: every colour label offered, exactly as shown."
},
"shop": {
"type": "object",
"description": "Required for Shop catalogue targets and rejected elsewhere. Copy values unchanged from the search_catalog product and its featured variant.",
"properties": {
"productId": {
"type": "string",
"description": "Returned product id, e.g. gid://shopify/p/…."
},
"checkoutUrl": {
"type": "string",
"description": "Copy the exact featured variant checkout_url, when returned. Never construct it."
},
"variantId": {
"type": "string",
"description": "Featured variant id, e.g. gid://shopify/ProductVariant/…."
},
"sellerDomain": {
"type": "string",
"description": "variant.seller.domain (the myshopify domain Shop uses for carts)."
},
"sellerId": {
"type": "string"
},
"sellerName": {
"type": "string"
},
"sellerUrl": {
"type": "string",
"description": "variant.seller.url (the storefront)."
},
"price": {
"type": "object",
"description": "variant.price unchanged: integer minor units plus ISO currency.",
"properties": {
"amount": {
"type": "number",
"minimum": 1
},
"currency": {
"type": "string"
}
},
"required": [
"amount",
"currency"
],
"additionalProperties": false
},
"available": {
"type": "boolean",
"description": "variant.availability.available."
},
"options": {
"type": "array",
"maxItems": 12,
"description": "product.options names and value labels (with available/exists when returned), e.g. [{\"name\":\"Size\",\"values\":[{\"label\":\"S\"},{\"label\":\"M\"}]}]. Records every size and colour the person can choose.",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"values": {
"type": "array",
"maxItems": 60,
"items": {
"type": "object",
"properties": {
"label": {
"type": "string"
},
"available": {
"type": "boolean"
},
"exists": {
"type": "boolean"
}
},
"required": [
"label"
],
"additionalProperties": false
}
}
},
"required": [
"name",
"values"
],
"additionalProperties": false
}
},
"selectedOptions": {
"type": "array",
"maxItems": 6,
"description": "variant.options unchanged, e.g. [{\"name\":\"Size\",\"label\":\"M\"}].",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"label": {
"type": "string"
}
},
"required": [
"name",
"label"
],
"additionalProperties": false
}
}
},
"required": [
"productId",
"sellerDomain"
],
"additionalProperties": false
}
},
"required": [
"url",
"name",
"image"
],
"additionalProperties": false
}
}
},
"required": [
"searchId",
"targetId",
"candidates"
],
"additionalProperties": false
}
Similar websites
cleardose-webmcp-demo.netlify.app
See the ClearDose WebMCP use case, shared Vue and Pinia architecture, demo workflow, source repository, and submission readiness.
4over4.com
4OVER4.COM prints 1,000+ custom products on 60+ paper stocks in Queens, with same-day shipping on most orders and 150,000+ businesses served since 1999.
camdentools.com
Construction tools and equipment
autolab.run
Super intelligence for car lovers. A WebMCP vehicle configurator, an agentic owner's guide with a live digital twin, and the 3D creation engine that measures th…