Tool tree
gradeNot graded
askAction
Natural-language entry point. Accepts a shopping request ("running shoes under $100"), a dynamic-landing-page command ("#dlp gifts for a new dog owner | leashes; treats --max 60") or a slash command (/home /more /next /open 2 /buy 2 /up /down). Routes to the matching tool.
View tool JSON
{
"name": "ask",
"kind": "act",
"impl": "imperative",
"description": "Natural-language entry point. Accepts a shopping request (\"running shoes under $100\"), a dynamic-landing-page command (\"#dlp gifts for a new dog owner | leashes; treats --max 60\") or a slash command (/home /more /next /open 2 /buy 2 /up /down). Routes to the matching tool.",
"inputSchema": {
"type": "object",
"properties": {
"text": {
"type": "string",
"description": "What the user typed or said"
}
},
"required": [
"text"
]
}
}search_productsAnswer
Search the cross-merchant product catalog (Nohi global catalog, MCP tool search_global_catalog) with a natural-language shopping query. English queries work best. Renders a results grid.
View tool JSON
{
"name": "search_products",
"kind": "answer",
"impl": "imperative",
"description": "Search the cross-merchant product catalog (Nohi global catalog, MCP tool search_global_catalog) with a natural-language shopping query. English queries work best. Renders a results grid.",
"inputSchema": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Descriptive shopping query"
},
"max_price": {
"type": "number",
"description": "Upper price bound, USD"
},
"min_price": {
"type": "number",
"description": "Lower price bound, USD"
},
"vendor": {
"type": "string",
"description": "Brand / vendor filter"
},
"product_type": {
"type": "string"
},
"sort": {
"type": "string",
"enum": [
"relevance",
"price_asc",
"price_desc"
],
"description": "relevance (default), price_asc (cheapest first), price_desc"
}
},
"required": [
"query"
]
}
}open_landing_pageAction
Open a custom landing page for a shopping intent — the page a paid shopping click should land on instead of the generic catalog: a hero for the intent plus auto-built sections (editor's picks, under $X, worth the splurge, explicit sub-themes) assembled from the catalog in milliseconds. format "listicle" renders a ranked top-5 with a reason per pick (advertorial style). Links carry utm_medium=nile_paid.
View tool JSON
{
"name": "open_landing_page",
"kind": "act",
"impl": "imperative",
"description": "Open a custom landing page for a shopping intent — the page a paid shopping click should land on instead of the generic catalog: a hero for the intent plus auto-built sections (editor's picks, under $X, worth the splurge, explicit sub-themes) assembled from the catalog in milliseconds. format \"listicle\" renders a ranked top-5 with a reason per pick (advertorial style). Links carry utm_medium=nile_paid.",
"inputSchema": {
"type": "object",
"properties": {
"intent": {
"type": "string",
"description": "The intent / theme, e.g. \"gifts for a new dog owner\""
},
"sections": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional explicit section themes, each becomes a sub-search"
},
"max_price": {
"type": "number",
"description": "Upper price bound, USD"
},
"min_price": {
"type": "number",
"description": "Lower price bound, USD"
},
"format": {
"type": "string",
"enum": [
"collection",
"listicle"
],
"description": "collection (default) or listicle (ranked top 5 with reasons)"
}
},
"required": [
"intent"
]
}
}gamification_landingpageAction
Open a gamified landing page for a shopping intent — the "custom LP for paid shopping traffic" format: a scratch card reveals a reward (demo code), followed by curated picks to claim it on. Links carry utm_medium=nile_paid, utm_campaign=scratch_to_win.
View tool JSON
{
"name": "gamification_landingpage",
"kind": "act",
"impl": "imperative",
"description": "Open a gamified landing page for a shopping intent — the \"custom LP for paid shopping traffic\" format: a scratch card reveals a reward (demo code), followed by curated picks to claim it on. Links carry utm_medium=nile_paid, utm_campaign=scratch_to_win.",
"inputSchema": {
"type": "object",
"properties": {
"intent": {
"type": "string",
"description": "What the visitor came for, e.g. \"cozy fall home\""
},
"prize": {
"type": "string",
"description": "Optional reward text, e.g. \"15% off\"; random if omitted"
},
"max_price": {
"type": "number",
"description": "Upper price bound for the picks, USD"
}
},
"required": [
"intent"
]
}
}show_homeAction
Go back to the home feed (mixed product / editorial stream).
View tool JSON
{
"name": "show_home",
"kind": "act",
"impl": "imperative",
"description": "Go back to the home feed (mixed product / editorial stream).",
"inputSchema": {
"type": "object",
"properties": {}
}
}load_moreAction
Load the next page of the current search results.
View tool JSON
{
"name": "load_more",
"kind": "act",
"impl": "imperative",
"description": "Load the next page of the current search results.",
"inputSchema": {
"type": "object",
"properties": {}
}
}scroll_pageAction
Scroll the page: down, up, top or bottom. amount is a fraction of the viewport (default 0.8).
View tool JSON
{
"name": "scroll_page",
"kind": "act",
"impl": "imperative",
"description": "Scroll the page: down, up, top or bottom. amount is a fraction of the viewport (default 0.8).",
"inputSchema": {
"type": "object",
"properties": {
"direction": {
"type": "string",
"enum": [
"down",
"up",
"top",
"bottom"
]
},
"amount": {
"type": "number",
"description": "Viewport fraction, default 0.8"
}
},
"required": [
"direction"
]
}
}focus_productAction
Highlight a product card on screen: "next", "prev", "first", "last", a 1-based number, or a title fragment. Subsequent open_product / buy_now default to the focused card.
View tool JSON
{
"name": "focus_product",
"kind": "act",
"impl": "imperative",
"description": "Highlight a product card on screen: \"next\", \"prev\", \"first\", \"last\", a 1-based number, or a title fragment. Subsequent open_product / buy_now default to the focused card.",
"inputSchema": {
"type": "object",
"properties": {
"target": {
"description": "\"next\" | \"prev\" | \"first\" | \"last\" | number | title fragment"
}
},
"required": [
"target"
]
}
}open_productAction
Open the merchant product detail page ("Learn more") for the focused card or a given target, in a new tab.
View tool JSON
{
"name": "open_product",
"kind": "act",
"impl": "imperative",
"description": "Open the merchant product detail page (\"Learn more\") for the focused card or a given target, in a new tab.",
"inputSchema": {
"type": "object",
"properties": {
"target": {
"description": "Optional: same forms as focus_product; defaults to focused card"
}
}
}
}buy_nowAction
Jump to the merchant checkout ("Buy now") for the focused card or a given target, in a new tab. Nothing is purchased on this site; the merchant checkout handles payment.
View tool JSON
{
"name": "buy_now",
"kind": "act",
"impl": "imperative",
"description": "Jump to the merchant checkout (\"Buy now\") for the focused card or a given target, in a new tab. Nothing is purchased on this site; the merchant checkout handles payment.",
"inputSchema": {
"type": "object",
"properties": {
"target": {
"description": "Optional: same forms as focus_product; defaults to focused card"
}
}
}
}show_brandsAction
Open the brands page: every independent brand in the catalog with product counts; pick one to see its products.
View tool JSON
{
"name": "show_brands",
"kind": "act",
"impl": "imperative",
"description": "Open the brands page: every independent brand in the catalog with product counts; pick one to see its products.",
"inputSchema": {
"type": "object",
"properties": {}
}
}refine_resultsAction
Re-run the current search or landing page with a tighter price band: "cheaper" halves the median price as the new maximum, "pricier" uses it as the new minimum.
View tool JSON
{
"name": "refine_results",
"kind": "act",
"impl": "imperative",
"description": "Re-run the current search or landing page with a tighter price band: \"cheaper\" halves the median price as the new maximum, \"pricier\" uses it as the new minimum.",
"inputSchema": {
"type": "object",
"properties": {
"direction": {
"type": "string",
"enum": [
"cheaper",
"pricier"
]
}
},
"required": [
"direction"
]
}
}browse_allAction
Open the endless browse page over the whole catalog (optionally filtered by brand).
View tool JSON
{
"name": "browse_all",
"kind": "act",
"impl": "imperative",
"description": "Open the endless browse page over the whole catalog (optionally filtered by brand).",
"inputSchema": {
"type": "object",
"properties": {
"vendor": {
"type": "string",
"description": "Optional brand filter"
}
}
}
}describe_focusedAnswer
Return a one-sentence description (title, brand, price, type) of the focused product card.
View tool JSON
{
"name": "describe_focused",
"kind": "answer",
"impl": "imperative",
"description": "Return a one-sentence description (title, brand, price, type) of the focused product card.",
"inputSchema": {
"type": "object",
"properties": {}
}
}close_panelAction
Close the product sheet (or any open panel) and return to the list.
View tool JSON
{
"name": "close_panel",
"kind": "act",
"impl": "imperative",
"description": "Close the product sheet (or any open panel) and return to the list.",
"inputSchema": {
"type": "object",
"properties": {}
}
}helpAction
Show the input grammar and the list of registered WebMCP tools.
View tool JSON
{
"name": "help",
"kind": "act",
"impl": "imperative",
"description": "Show the input grammar and the list of registered WebMCP tools.",
"inputSchema": {
"type": "object",
"properties": {}
}
}