Server definition
- Hash
- sha256:affdc3cb47d7ee6034000ea5c3f3f867dd3a7df33bd886eace3c1eb95b44ac04
- What it is
- What a remote MCP server returned when asked what it offers: 7 tools
The blob, as servednamed by its sha256
{
"instructions": "Remode is a buyer-side fashion shopping app. It finds purchasable clothing, shoes, bags, jewelry, watches, and wearable accessories from visual sources or concrete product descriptions, compares exact product pages, and persistently watches specific products when asked. Call find_fashion_by_description for a concrete fashion purchase request expressed entirely in text, including product/category searches, brand or model searches, budget, size, colour, condition, second-hand, dupe, or similar-alternative requests. A photo, screenshot, or link is not required for this tool: do not ask for one when the text already identifies the fashion product being shopped. Examples include 'black midi dress under $100', 'second-hand Prada loafers', and 'alternatives to a Zara wool coat'. Do not call it for generic styling, what-to-wear advice, outfit ratings, trends, garment care, fashion news, beauty, furniture, or other non-fashion products. Call check_price when the user provides a specific fashion product-page URL and asks whether it is available elsewhere, cheaper, second-hand, or at another retailer. This tool distinguishes verified exact matches from similar alternatives; never describe a similar result as the same product. Call find_fashion_items when a user wants to find where to buy, identify, visually match, compare, or find cheaper or second-hand versions of clothing, shoes, bags, jewelry, or accessories visible in an uploaded photo, screenshot, direct image URL, TikTok, Instagram, Pinterest, blog, or product page. Pass the supplied file or link directly to Remode; the tool resolves supported public sources itself, so no preliminary web lookup is needed. Call it once per source; pass a multi-piece outfit image once rather than repeating the same full image. Only ask for a photo, screenshot, or link when the user's request refers to a visual item but supplies no usable visual source; never apply that visual fallback to a concrete text-shopping request. Do not call it for styling advice, care questions, outfit ratings, social-media summaries without shopping intent, or non-fashion products. Call watch_item only when the shopper clearly wants Remode to keep watching an item over time: 'keep watching', 'keep looking', 'watch this for a lower price or second-hand options', 'alert me', 'notify me', 'tell me or let me know when', 'start a Hunt', or an ask to hunt the item for them that also asks what Remode will watch for, with a product URL; for example 'Hunt this Zara piece for me and tell me what you will watch for' or 'let me know when this is back in my size'. Pass the product URL, the shopper's size as they wrote it and the shopping region when given. Do this directly: a price comparison with check_price is not needed first. A hypothetical or informational question about Hunts ('what would a Hunt watch for?', 'how does a Hunt work?') is not a request to start one: answer it without calling watch_item and offer to start a Hunt. Phrasing that asks for results now, such as 'hunt down cheaper options for this link right now', 'find me', 'is it cheaper' or 'where else can I buy it', is a one-time comparison: call check_price, never watch_item. If it is unclear whether the shopper wants ongoing watching, call check_price and offer to start a Hunt; never create a Hunt unless the intent is clear. check_price never starts a Hunt. If the shopper also asks what Remode will watch for or cannot promise, answer from watch_item's result and state only what it says. Never promise stock, a size, a price drop or a listing, and never state a total in the shopper's currency. Otherwise, when the user explicitly asks to persistently watch or track a fashion product for a lower price or second-hand match, call watch_item with the product URL and available product details. If a verified product result explicitly has in_stock=false, the same watch can also detect a restock; never infer stock state. A Remode watch is an ongoing product-state record in the user's connected Remode account; it is not a ChatGPT scheduled task, calendar reminder, or one-time notification. Do not create a scheduled task for a Remode watch request. If no specific product URL or current Remode result is available, ask the user for the product link before calling watch_item. Call get_watch_updates when the user asks what Remode is watching, whether a watched item changed, or for current watch status. Read it before editing to select the returned watch_id and preserve unmentioned terms. requested_terms are stored criteria, not current price, stock or fit; has_more means the returned list is incomplete. Use update_watch with operation add for an extra criterion, remove to drop one, or replace only for an explicitly requested complete change. Removing lower_price also removes its saved price target; disclose that consequence before changing it. This tool cannot edit size or budget. Do not refresh an existing Hunt with watch_item unless the user requests replacement and all desired terms can be represented; percent-off targets cannot be set there. After a timeout or watch_changed_retry, read the Hunt before deciding whether another write is needed. Never retry a write automatically. Call stop_watching_item when the user asks Remode to stop tracking a watched item. These watch lifecycle tools require the user's connected Remode account; request account connection through the tool when needed. Never start, change, or stop a watch unless the user asks. Present only the returned retailer names, prices, images, links, availability, and verified watch state. Treat search results as visual matches unless Remode explicitly marks identity as exact, and never invent commerce details.",
"tools": [
{
"description": "Use this when the user provides one specific fashion product-page URL and asks whether the same item is available elsewhere, cheaper, second-hand, or from another retailer. Remode compares the exact product first and labels merely similar alternatives separately. This is a one-time comparison: it never starts monitoring. Use it for requests that ask for results now, including 'hunt down cheaper options right now'. If the shopper clearly asks Remode to keep watching the item (keep looking, alert or notify me, tell me when, start a Hunt), call watch_item instead; if that is unclear, run this comparison and offer to start a Hunt. Pass the shopper's size when they state one. Do not use for a photo without a product URL, generic product discovery, styling advice, or non-fashion products.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"max_results": {
"maximum": 15,
"minimum": 1,
"type": "integer"
},
"product_url": {
"description": "Public retailer product-page URL for the exact fashion item to compare.",
"format": "uri",
"type": "string"
},
"region": {
"description": "Two-letter shopping region/country code, such as US, CH, DE, or GB.",
"maxLength": 8,
"minLength": 2,
"type": "string"
},
"size": {
"description": "The shopper's size exactly as they wrote it, such as M, XL or EU 50, when they stated one. Used to match second-hand listings; never assume it was applied unless the result's second_hand_gate says so.",
"maxLength": 24,
"minLength": 1,
"type": "string"
}
},
"required": [
"product_url"
],
"type": "object"
},
"name": "check_price",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {},
"properties": {
"app_url": {
"format": "uri",
"type": "string"
},
"assistant_platform": {
"type": "string"
},
"attribution_note": {
"type": "string"
},
"error": {
"type": "string"
},
"message": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"region": {
"type": "string"
},
"result_count": {
"type": "number"
},
"results": {
"items": {
"additionalProperties": false,
"properties": {
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"image": {
"anyOf": [
{
"format": "uri",
"type": "string"
},
{
"type": "null"
}
]
},
"in_stock": {
"type": "boolean"
},
"is_exact_match_hard": {
"type": "boolean"
},
"market_fit": {
"enum": [
"local",
"nearby",
"non_local",
"unknown"
],
"type": "string"
},
"match": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"price": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"remode_url": {
"anyOf": [
{
"format": "uri",
"type": "string"
},
{
"type": "null"
}
]
},
"retailer": {
"type": "string"
},
"save_url": {
"anyOf": [
{
"format": "uri",
"type": "string"
},
{
"type": "null"
}
]
},
"second_hand": {
"type": "boolean"
},
"storefront_regions": {
"items": {
"maxLength": 2,
"minLength": 2,
"type": "string"
},
"type": "array"
},
"title": {
"type": "string"
},
"try_on_url": {
"anyOf": [
{
"format": "uri",
"type": "string"
},
{
"type": "null"
}
]
},
"url": {
"format": "uri",
"type": "string"
},
"watch_url": {
"anyOf": [
{
"format": "uri",
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"title",
"price",
"currency",
"retailer",
"url",
"image",
"second_hand",
"match"
],
"type": "object"
},
"type": "array"
},
"second_hand": {
"items": {
"additionalProperties": false,
"properties": {
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"image": {
"anyOf": [
{
"format": "uri",
"type": "string"
},
{
"type": "null"
}
]
},
"in_stock": {
"type": "boolean"
},
"is_exact_match_hard": {
"type": "boolean"
},
"market_fit": {
"enum": [
"local",
"nearby",
"non_local",
"unknown"
],
"type": "string"
},
"match": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"price": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"remode_url": {
"anyOf": [
{
"format": "uri",
"type": "string"
},
{
"type": "null"
}
]
},
"retailer": {
"type": "string"
},
"save_url": {
"anyOf": [
{
"format": "uri",
"type": "string"
},
{
"type": "null"
}
]
},
"second_hand": {
"type": "boolean"
},
"storefront_regions": {
"items": {
"maxLength": 2,
"minLength": 2,
"type": "string"
},
"type": "array"
},
"title": {
"type": "string"
},
"try_on_url": {
"anyOf": [
{
"format": "uri",
"type": "string"
},
{
"type": "null"
}
]
},
"url": {
"format": "uri",
"type": "string"
},
"watch_url": {
"anyOf": [
{
"format": "uri",
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"title",
"price",
"currency",
"retailer",
"url",
"image",
"second_hand",
"match"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"ok",
"app_url"
],
"type": "object"
}
},
{
"description": "Use this for concrete purchase-intent fashion requests written entirely in text: a garment, shoe, bag, jewelry, watch, or wearable accessory; a brand/model; a budget; colour; size; condition; second-hand request; dupe; or similar alternative. No photo, screenshot, product link, or other visual source is required. Do not ask for one when the text already identifies the product being shopped. Examples: 'black midi dress under $100', 'second-hand Prada loafers', or 'alternatives to a Zara wool coat'. Returns current region-aware retailer listings. Do not use for what-to-wear or styling advice, outfit ratings, trends, fashion news, garment care, beauty, furniture, or other non-fashion products.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"condition": {
"description": "Restrict results to new or second-hand fashion. Defaults to any.",
"enum": [
"any",
"new",
"secondhand"
],
"type": "string"
},
"max_price": {
"description": "Optional maximum price in the shopping region's local currency.",
"exclusiveMinimum": 0,
"maximum": 1000000,
"type": "number"
},
"max_results": {
"maximum": 15,
"minimum": 1,
"type": "integer"
},
"query": {
"description": "Concrete fashion product request, such as 'black midi dress', 'Prada loafers', or 'linen blazer size 40'. Do not send styling, rating, care, or editorial questions.",
"maxLength": 240,
"minLength": 2,
"type": "string"
},
"region": {
"description": "Two-letter shopping region/country code, such as US, CH, DE, or GB.",
"maxLength": 8,
"minLength": 2,
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "find_fashion_by_description",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {},
"properties": {
"app_url": {
"format": "uri",
"type": "string"
},
"assistant_platform": {
"type": "string"
},
"attribution_note": {
"type": "string"
},
"error": {
"type": "string"
},
"message": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"region": {
"type": "string"
},
"result_count": {
"type": "number"
},
"results": {
"items": {
"additionalProperties": false,
"properties": {
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"image": {
"anyOf": [
{
"format": "uri",
"type": "string"
},
{
"type": "null"
}
]
},
"in_stock": {
"type": "boolean"
},
"is_exact_match_hard": {
"type": "boolean"
},
"market_fit": {
"enum": [
"local",
"nearby",
"non_local",
"unknown"
],
"type": "string"
},
"match": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"price": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"remode_url": {
"anyOf": [
{
"format": "uri",
"type": "string"
},
{
"type": "null"
}
]
},
"retailer": {
"type": "string"
},
"save_url": {
"anyOf": [
{
"format": "uri",
"type": "string"
},
{
"type": "null"
}
]
},
"second_hand": {
"type": "boolean"
},
"storefront_regions": {
"items": {
"maxLength": 2,
"minLength": 2,
"type": "string"
},
"type": "array"
},
"title": {
"type": "string"
},
"try_on_url": {
"anyOf": [
{
"format": "uri",
"type": "string"
},
{
"type": "null"
}
]
},
"url": {
"format": "uri",
"type": "string"
},
"watch_url": {
"anyOf": [
{
"format": "uri",
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"title",
"price",
"currency",
"retailer",
"url",
"image",
"second_hand",
"match"
],
"type": "object"
},
"type": "array"
},
"second_hand": {
"items": {
"additionalProperties": false,
"properties": {
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"image": {
"anyOf": [
{
"format": "uri",
"type": "string"
},
{
"type": "null"
}
]
},
"in_stock": {
"type": "boolean"
},
"is_exact_match_hard": {
"type": "boolean"
},
"market_fit": {
"enum": [
"local",
"nearby",
"non_local",
"unknown"
],
"type": "string"
},
"match": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"price": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"remode_url": {
"anyOf": [
{
"format": "uri",
"type": "string"
},
{
"type": "null"
}
]
},
"retailer": {
"type": "string"
},
"save_url": {
"anyOf": [
{
"format": "uri",
"type": "string"
},
{
"type": "null"
}
]
},
"second_hand": {
"type": "boolean"
},
"storefront_regions": {
"items": {
"maxLength": 2,
"minLength": 2,
"type": "string"
},
"type": "array"
},
"title": {
"type": "string"
},
"try_on_url": {
"anyOf": [
{
"format": "uri",
"type": "string"
},
{
"type": "null"
}
]
},
"url": {
"format": "uri",
"type": "string"
},
"watch_url": {
"anyOf": [
{
"format": "uri",
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"title",
"price",
"currency",
"retailer",
"url",
"image",
"second_hand",
"match"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"ok",
"app_url"
],
"type": "object"
}
},
{
"description": "Use this only when the user has supplied a photo, screenshot, direct image URL, social post, blog, or product page containing fashion to identify, visually match, or shop. A visual source is required. Pass that source directly because Remode resolves supported public links without a preliminary web lookup. Returns current region-aware retailer and resale listings with product images, verified prices when available, and direct buy links. Do not use this tool for a concrete text-only product request; use find_fashion_by_description instead. Do not use for styling advice, garment care, outfit ratings, or non-fashion products.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"image_file": {
"additionalProperties": {},
"description": "Image file uploaded by the user. ChatGPT supplies this via _meta.openai/fileParams.",
"properties": {
"download_url": {
"description": "Temporary HTTPS URL supplied by the assistant host for an uploaded image.",
"format": "uri",
"type": "string"
},
"file_id": {
"description": "Stable file identifier supplied by the assistant host when available.",
"minLength": 1,
"type": "string"
},
"file_name": {
"type": "string"
},
"mime_type": {
"type": "string"
}
},
"required": [
"download_url"
],
"type": "object"
},
"image_url": {
"description": "Direct HTTPS image URL to run through Remode visual search.",
"format": "uri",
"type": "string"
},
"link": {
"description": "Fashion source URL: TikTok, Instagram, Pinterest, retailer product page, blog, or direct image.",
"format": "uri",
"type": "string"
},
"max_results": {
"description": "Maximum new retail matches to return. Defaults to the backend setting.",
"maximum": 15,
"minimum": 1,
"type": "integer"
},
"region": {
"description": "Two-letter shopping region/country code, such as US, CH, DE, or GB.",
"maxLength": 8,
"minLength": 2,
"type": "string"
}
},
"type": "object"
},
"name": "find_fashion_items",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {},
"properties": {
"app_url": {
"format": "uri",
"type": "string"
},
"assistant_platform": {
"type": "string"
},
"attribution_note": {
"type": "string"
},
"error": {
"type": "string"
},
"message": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"region": {
"type": "string"
},
"result_count": {
"type": "number"
},
"results": {
"items": {
"additionalProperties": false,
"properties": {
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"image": {
"anyOf": [
{
"format": "uri",
"type": "string"
},
{
"type": "null"
}
]
},
"in_stock": {
"type": "boolean"
},
"is_exact_match_hard": {
"type": "boolean"
},
"market_fit": {
"enum": [
"local",
"nearby",
"non_local",
"unknown"
],
"type": "string"
},
"match": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"price": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"remode_url": {
"anyOf": [
{
"format": "uri",
"type": "string"
},
{
"type": "null"
}
]
},
"retailer": {
"type": "string"
},
"save_url": {
"anyOf": [
{
"format": "uri",
"type": "string"
},
{
"type": "null"
}
]
},
"second_hand": {
"type": "boolean"
},
"storefront_regions": {
"items": {
"maxLength": 2,
"minLength": 2,
"type": "string"
},
"type": "array"
},
"title": {
"type": "string"
},
"try_on_url": {
"anyOf": [
{
"format": "uri",
"type": "string"
},
{
"type": "null"
}
]
},
"url": {
"format": "uri",
"type": "string"
},
"watch_url": {
"anyOf": [
{
"format": "uri",
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"title",
"price",
"currency",
"retailer",
"url",
"image",
"second_hand",
"match"
],
"type": "object"
},
"type": "array"
},
"second_hand": {
"items": {
"additionalProperties": false,
"properties": {
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"image": {
"anyOf": [
{
"format": "uri",
"type": "string"
},
{
"type": "null"
}
]
},
"in_stock": {
"type": "boolean"
},
"is_exact_match_hard": {
"type": "boolean"
},
"market_fit": {
"enum": [
"local",
"nearby",
"non_local",
"unknown"
],
"type": "string"
},
"match": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"price": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"remode_url": {
"anyOf": [
{
"format": "uri",
"type": "string"
},
{
"type": "null"
}
]
},
"retailer": {
"type": "string"
},
"save_url": {
"anyOf": [
{
"format": "uri",
"type": "string"
},
{
"type": "null"
}
]
},
"second_hand": {
"type": "boolean"
},
"storefront_regions": {
"items": {
"maxLength": 2,
"minLength": 2,
"type": "string"
},
"type": "array"
},
"title": {
"type": "string"
},
"try_on_url": {
"anyOf": [
{
"format": "uri",
"type": "string"
},
{
"type": "null"
}
]
},
"url": {
"format": "uri",
"type": "string"
},
"watch_url": {
"anyOf": [
{
"format": "uri",
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"title",
"price",
"currency",
"retailer",
"url",
"image",
"second_hand",
"match"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"ok",
"app_url"
],
"type": "object"
}
},
{
"description": "Read the linked user's active Hunts, stored requested criteria and recorded historical alerts. Use before editing an existing Hunt to preserve unmentioned terms and select its returned watch_id. Stored requested sizes/budgets and alert clocks do not prove current price, stock, fit or delivery. Returns a bounded list; has_more=true means additional Hunts are omitted. Use when the user asks what Remode is watching or whether anything changed.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"maximum": 25,
"minimum": 1,
"type": "integer"
},
"watch_id": {
"maxLength": 80,
"minLength": 1,
"type": "string"
}
},
"type": "object"
},
"name": "get_watch_updates",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"has_more": {
"type": "boolean"
},
"ok": {
"const": true,
"type": "boolean"
},
"updates": {
"items": {
"additionalProperties": false,
"properties": {
"created_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"currency": {
"type": "string"
},
"current_availability": {
"const": "unknown",
"type": "string"
},
"delivery_accepted_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"delivery_status": {
"enum": [
"pending",
"unknown",
"accepted",
"unconfirmed"
],
"type": "string"
},
"kind": {
"type": "string"
},
"mandate_evidence": {
"const": "historical_not_current_revision_proof",
"type": "string"
},
"new_price": {
"anyOf": [
{},
{
"type": "null"
}
]
},
"old_price": {
"anyOf": [
{},
{
"type": "null"
}
]
},
"price_evidence": {
"const": "historical_alert",
"type": "string"
},
"store": {
"type": "string"
},
"title": {
"type": "string"
},
"update_id": {
"type": "string"
},
"url": {
"type": "string"
},
"verified_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"watch_id": {
"type": "string"
}
},
"required": [
"update_id",
"watch_id",
"kind",
"title",
"url",
"store",
"currency",
"created_at"
],
"type": "object"
},
"type": "array"
},
"watch_ids": {
"items": {
"type": "string"
},
"type": "array"
},
"watches": {
"items": {
"additionalProperties": false,
"properties": {
"active": {
"type": "boolean"
},
"currency": {
"type": "string"
},
"image_url": {
"type": "string"
},
"last_checked_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"preferences": {
"items": {
"enum": [
"lower_price",
"second_hand"
],
"type": "string"
},
"type": "array"
},
"price": {
"type": "string"
},
"region": {
"type": "string"
},
"requested_terms": {
"additionalProperties": false,
"properties": {
"color": {
"maxLength": 40,
"type": "string"
},
"condition": {
"enum": [
"new",
"pre_owned",
"any"
],
"type": "string"
},
"evidence": {
"const": "stored_mandate",
"type": "string"
},
"price_target": {
"oneOf": [
{
"additionalProperties": false,
"properties": {
"amount": {
"exclusiveMinimum": 0,
"maximum": 10000000,
"type": "number"
},
"currency": {
"pattern": "^[A-Z]{3}$",
"type": "string"
},
"mode": {
"const": "absolute",
"type": "string"
}
},
"required": [
"mode",
"amount",
"currency"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"amount": {
"exclusiveMinimum": 0,
"maximum": 10000000,
"type": "number"
},
"currency": {
"pattern": "^[A-Z]{3}$",
"type": "string"
},
"mode": {
"const": "percent_off",
"type": "string"
},
"percent_off": {
"exclusiveMaximum": 100,
"exclusiveMinimum": 0,
"type": "number"
}
},
"required": [
"mode",
"amount",
"currency",
"percent_off"
],
"type": "object"
}
]
},
"size": {
"maxLength": 24,
"type": "string"
}
},
"required": [
"evidence"
],
"type": "object"
},
"status": {
"type": "string"
},
"title": {
"type": "string"
},
"updated_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"url": {
"type": "string"
},
"watch_id": {
"type": "string"
}
},
"required": [
"watch_id",
"status",
"active",
"title",
"url",
"image_url",
"price",
"currency",
"region",
"preferences",
"last_checked_at",
"updated_at"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"ok",
"watches",
"updates",
"watch_ids"
],
"type": "object"
}
},
{
"description": "Stop an existing Remode watch. Use only after the user asks to stop tracking an item. Requires the stable watch_id returned by Remode.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"watch_id": {
"maxLength": 80,
"minLength": 1,
"type": "string"
}
},
"required": [
"watch_id"
],
"type": "object"
},
"name": "stop_watching_item",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"ok": {
"const": true,
"type": "boolean"
},
"removed_from_saved": {
"type": "boolean"
},
"stopped": {
"type": "boolean"
},
"watch_id": {
"type": "string"
}
},
"required": [
"ok",
"watch_id",
"stopped",
"removed_from_saved"
],
"type": "object"
}
},
{
"description": "Edit criteria for an existing Hunt using its returned watch_id. Read get_watch_updates first. Use operation add to preserve existing criteria when the shopper asks for another lane; remove to drop a lane; replace only for an explicit complete change. Removing lower_price also deletes its saved price target; disclose that consequence before the change. No size or budget editing is supported here. Never change a Hunt unless the user asks, and read its state after a timeout or conflict before deciding whether to retry.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"operation": {
"description": "Use add for 'also find second-hand', remove to drop a criterion, or replace for an explicitly requested full change. Defaults to replace for existing clients. Removing lower_price also removes its saved price target.",
"enum": [
"add",
"remove",
"replace"
],
"type": "string"
},
"preferences": {
"description": "Criteria to add, remove or replace. For replace, send the complete desired set; omitted criteria are removed.",
"items": {
"enum": [
"lower_price",
"second_hand"
],
"type": "string"
},
"maxItems": 2,
"minItems": 1,
"type": "array"
},
"watch_id": {
"maxLength": 80,
"minLength": 1,
"type": "string"
}
},
"required": [
"watch_id",
"preferences"
],
"type": "object"
},
"name": "update_watch",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"ok": {
"const": true,
"type": "boolean"
},
"watch": {
"additionalProperties": false,
"properties": {
"active": {
"type": "boolean"
},
"currency": {
"type": "string"
},
"image_url": {
"type": "string"
},
"last_checked_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"preferences": {
"items": {
"enum": [
"lower_price",
"second_hand"
],
"type": "string"
},
"type": "array"
},
"price": {
"type": "string"
},
"region": {
"type": "string"
},
"requested_terms": {
"additionalProperties": false,
"properties": {
"color": {
"maxLength": 40,
"type": "string"
},
"condition": {
"enum": [
"new",
"pre_owned",
"any"
],
"type": "string"
},
"evidence": {
"const": "stored_mandate",
"type": "string"
},
"price_target": {
"oneOf": [
{
"additionalProperties": false,
"properties": {
"amount": {
"exclusiveMinimum": 0,
"maximum": 10000000,
"type": "number"
},
"currency": {
"pattern": "^[A-Z]{3}$",
"type": "string"
},
"mode": {
"const": "absolute",
"type": "string"
}
},
"required": [
"mode",
"amount",
"currency"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"amount": {
"exclusiveMinimum": 0,
"maximum": 10000000,
"type": "number"
},
"currency": {
"pattern": "^[A-Z]{3}$",
"type": "string"
},
"mode": {
"const": "percent_off",
"type": "string"
},
"percent_off": {
"exclusiveMaximum": 100,
"exclusiveMinimum": 0,
"type": "number"
}
},
"required": [
"mode",
"amount",
"currency",
"percent_off"
],
"type": "object"
}
]
},
"size": {
"maxLength": 24,
"type": "string"
}
},
"required": [
"evidence"
],
"type": "object"
},
"status": {
"type": "string"
},
"title": {
"type": "string"
},
"updated_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"url": {
"type": "string"
},
"watch_id": {
"type": "string"
}
},
"required": [
"watch_id",
"status",
"active",
"title",
"url",
"image_url",
"price",
"currency",
"region",
"preferences",
"last_checked_at",
"updated_at"
],
"type": "object"
}
},
"required": [
"ok",
"watch"
],
"type": "object"
}
},
{
"description": "Create or refresh an account-linked Hunt for a specific fashion product URL. Call this only when the shopper clearly wants Remode to keep watching this item over time: keep watching or looking, watch it for a lower price or second-hand options, alert or notify me, tell me or let me know when, start a Hunt, or an ask to hunt it for them that also asks what Remode will watch for, for example 'Hunt this for me and tell me what you will watch for, my size is M, I live in Switzerland': pass url, size exactly as the shopper wrote it, and region as a country code. A hypothetical or informational question about Hunts ('what would a Hunt watch for?', 'how does a Hunt work?') is not a request to start one: answer it without a write and offer to start a Hunt. A request for results now ('hunt down cheaper options for this link right now', 'find me', 'is it cheaper') is a one-time comparison: use check_price and never create a Hunt. If it is unclear whether the shopper wants ongoing watching, use check_price and offer to start a Hunt. After the call, tell the shopper what the returned text says Remode will watch for and what it cannot promise, and add nothing else. A new hunt request needs no earlier read; read existing Hunts first only when the shopper refers to a Hunt they already have, because this can replace an existing Hunt's terms. Use update_watch for criteria edits; do not re-create an existing Hunt unless the shopper explicitly requests a replacement and all desired terms can be represented. Percent-off targets cannot be set here. Exact item only: the Hunt never widens to similar items. Optional terms: same-currency max_price, condition, and size supported by a retailer variant record. Explicit in_stock=false can enable restock monitoring; never infer stock. Persisted state and ongoing monitoring are inside Remode; this is not a ChatGPT Scheduled task or a one-time notification; do not schedule it.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"color": {
"description": "The exact item's colour as the store names it. When the store sells the item in several colours, a size is applied only together with one of the store's own colour labels; on a single-colour product page the size is applied without a colour.",
"maxLength": 40,
"minLength": 1,
"type": "string"
},
"condition": {
"description": "Say-when condition for this exact item: new (new listings only; second-hand listings never count), pre_owned (second hand), or any (both). Use instead of preferences.",
"enum": [
"new",
"pre_owned",
"any"
],
"type": "string"
},
"image_url": {
"format": "uri",
"maxLength": 4096,
"type": "string"
},
"in_stock": {
"type": "boolean"
},
"max_price": {
"description": "Price finish line for this exact item: alert only at or below this price, in this currency. Must be the item's own currency; Remode never converts currencies. Requires condition new or any.",
"properties": {
"amount": {
"exclusiveMinimum": 0,
"maximum": 10000000,
"type": "number"
},
"currency": {
"description": "ISO currency code, such as CHF, EUR, USD.",
"pattern": "^[A-Za-z]{3}$",
"type": "string"
}
},
"required": [
"amount",
"currency"
],
"type": "object"
},
"preferences": {
"description": "What Remode should look for. Defaults to lower price and second hand.",
"items": {
"enum": [
"lower_price",
"second_hand"
],
"type": "string"
},
"maxItems": 2,
"minItems": 1,
"type": "array"
},
"price": {
"description": "Visible current price including currency when known.",
"maxLength": 40,
"type": "string"
},
"region": {
"description": "Shopping country code, such as US, CH, DE, or GB.",
"maxLength": 8,
"minLength": 2,
"type": "string"
},
"size": {
"description": "The shopper's size as the store labels it. Remode applies it only when it can read the store's own per-size stock; otherwise the watch continues for the exact item without a size and the result says so.",
"maxLength": 24,
"minLength": 1,
"type": "string"
},
"title": {
"maxLength": 200,
"minLength": 1,
"type": "string"
},
"url": {
"description": "Retailer product URL from a Remode result.",
"format": "uri",
"maxLength": 4096,
"type": "string"
},
"use_saved_size": {
"description": "Use the shopper's saved usual size for this category as the size, when size is not given. Read-only; never changes the saved sizes.",
"enum": [
"tops",
"bottoms",
"shoes"
],
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"name": "watch_item",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"ok": {
"const": true,
"type": "boolean"
},
"preferences": {
"items": {
"enum": [
"lower_price",
"second_hand"
],
"type": "string"
},
"type": "array"
},
"price_target": {
"additionalProperties": false,
"properties": {
"amount": {
"type": "number"
},
"currency": {
"type": "string"
}
},
"required": [
"amount",
"currency"
],
"type": "object"
},
"region": {
"type": "string"
},
"size": {
"additionalProperties": false,
"properties": {
"applied": {
"type": "boolean"
},
"color_options": {
"items": {
"type": "string"
},
"type": "array"
},
"evidence": {
"type": "string"
},
"note": {
"maxLength": 400,
"type": "string"
},
"origin": {
"enum": [
"request",
"profile"
],
"type": "string"
},
"reason": {
"type": "string"
},
"requested": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"scope": {
"const": "search_criterion",
"type": "string"
},
"source": {
"const": "shopper",
"type": "string"
},
"store_label": {
"type": "string"
},
"store_restock_promise": {
"const": false,
"type": "boolean"
}
},
"required": [
"requested",
"origin",
"applied"
],
"type": "object"
},
"watch_id": {
"type": "string"
},
"watched": {
"const": true,
"type": "boolean"
}
},
"required": [
"ok",
"watched",
"watch_id",
"region",
"preferences"
],
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:affdc3cb47d7ee6034000ea5c3f3f867dd3a7df33bd886eace3c1eb95b44ac04 | sha256sum