Search¶
Inspect and manage a website's search configuration: synonyms, stop words, search configs, the rendered search designs, filters and sort options, initial content ("before you search" product panels), and link content (content search).
There are two ways to build a search experience on Hello Retail:
- Managed search configs, hosted by Hello Retail and served at
core.helloretail.com/serve/search. Create them withsearch_createConfig, inspect them withsearch_listConfigs, and read or edit their templates, styles, and init code withsearch_getDesignandsearch_updateDesign. - A fully custom frontend, built against the public Search API. Your frontend calls
core.helloretail.com/serve/searchdirectly, against the website's LIVE config. These MCP tools don't run search queries for you; test against that live endpoint directly while you build.
Tips & tricks¶
Pick the card that matches what you're doing. Each prompt is ready to paste into your assistant.
Expand what a query matches
Synonyms expand a query, so a search for the word also returns results matching the synonym.
Strip the noise
Stop words are stripped before search runs. Use them to drop noise words that dilute results.
Fill the UI before typing
Initial content fills the search UI before the visitor types; link content shows matching categories, pages, blog posts, or brands next to product results.
Every visible text is set
Filters and sort options are configured per search config, and every text a visitor sees (filter titles, sort labels) is set explicitly, so they're easy to translate in one go.
Check the config is LIVE
A custom frontend returning no results, or unexpected ones, is usually because the config isn't LIVE yet. search_listConfigs's state and draft fields tell you: only state: LIVE with draft: false is served publicly. Publish a config to LIVE from my.helloretail.com/company/app/{companyId}/websites/{websiteUuid}/search/config/{configId}. website_getInfo gives you the companyId and websiteUuid.
search_createConfig¶
Create a search configuration for a website, optionally with a best-practice Hello-Retail-hosted design attached: embedded search for desktop, mobile search for mobile, or both. A search configuration always has a key; the design (templates, styles, init code) is attached to it unless target is NONE. Use target: NONE for a bare configuration with no design, when building a fully custom frontend against the public Search API instead of using a Hello-Retail-hosted design.
Write operation
This tool creates a new search configuration as a draft. Publishing to LIVE requires My Hello Retail. Your assistant will ask for confirmation before this runs.
Configs are created as drafts that cannot be published through this tool: INTERNAL_REVIEW for Hello Retail supervisors, REVIEW (awaiting business approval) for other users. Edit a managed design afterward with search_updateDesign. Mobile and desktop are separate per-device configs that coexist at runtime, so target: BOTH creates two configs and returns two entries.
| Name | Type | Required | Description |
|---|---|---|---|
websiteUuid | string | Yes | The UUID of the customer's website in Hello Retail. Use website_getInfo or website_listForCompany to look up available websites, or find it in my.helloretail.com under Settings → Website Settings → Website Unique Id. |
target | string | Yes | Which best-practice design(s) to create: MOBILE (mobile search), DESKTOP (embedded search), BOTH, or NONE for a bare configuration with no design. |
Example request & response
search_getDesign¶
Retrieve the design fields (templates, styles, initialization code) of a search configuration for a customer website using Hello Retail. Returns the draft version if one exists, otherwise the LIVE version. Use this before search_updateDesign to read the current state of the design.
| Name | Type | Required | Description |
|---|---|---|---|
websiteUuid | string | Yes | The UUID of the customer's website in Hello Retail. Use website_getInfo to look up available websites, or find it in my.helloretail.com under Settings → Website Settings → Website Unique Id. |
key | string | Yes | The stable key of the search config. Use search_listConfigs to find available keys. |
Example request & response
search_updateDesign¶
Update the design fields (templates, styles, initialization code) of a search configuration for a customer website using Hello Retail. Directly edits any config that is in INTERNAL_REVIEW or REVIEW state; if no editable config exists, creates a new draft from the current LIVE config and applies the edits to it. All parameters are optional and updates are partial: omitted fields are left unchanged.
Write operation
This tool edits your search configuration or creates a new draft from the current LIVE config. Publishing to LIVE requires My Hello Retail. Your assistant will ask for confirmation before this runs.
This edits a Hello-Retail-hosted (managed) search config served via core.helloretail.com/serve/search. To instead build a fully custom search frontend against the public Search API, see the public Search API; those frontends aren't edited here. Only a LIVE config is queryable there; search_listConfigs's state and draft fields tell you if this one isn't yet.
| Name | Type | Required | Description |
|---|---|---|---|
websiteUuid | string | Yes | The UUID of the customer's website in Hello Retail. Use website_getInfo to look up available websites, or find it in my.helloretail.com under Settings → Website Settings → Website Unique Id. |
key | string | Yes | The stable key of the search config to update. Use search_listConfigs to find available keys. |
inputTemplate | string | No | HTML template for rendering the search input field on the page. |
initializationCode | string | No | JavaScript run when the search UI initialises. |
resultTemplate | string | No | HTML/Liquid template used to render search results. |
resultStyles | string | No | CSS styles applied to the search result container. |
Example request & response
search_getFilters¶
Get the filters of a search configuration for a customer website using Hello Retail. Filters are the facets visitors can narrow search results by (e.g. brand, price, category), returned in the order shown to visitors. Returns the draft version if one exists, otherwise the LIVE version. Use this before search_updateFilters to read the current state.
A filter's type decides how it renders: LIST offers the field's values as options, RANGE offers a min-max slider, BOOLEAN offers a yes/no choice. trueText and falseText label the two choices of a BOOLEAN filter and are null for other types.
The response also lists every field available for filtering on the website: the standard Hello Retail fields plus any extraData fields indexed for search (manage indexing with dataFields_getProductFields and dataFields_updateProductFieldsIndexing). Use search_getFilterUsage to see which filters visitors actually use.
| Name | Type | Required | Description |
|---|---|---|---|
websiteUuid | string | Yes | The UUID of the customer's website in Hello Retail. Use website_getInfo to look up available websites, or find it in my.helloretail.com under Settings → Website Settings → Website Unique Id. |
key | string | Yes | The stable key of the search config. Use search_listConfigs to find available keys. |
Example request & response
search_updateFilters¶
Replace the filters of a search configuration for a customer website using Hello Retail. This is a full replacement: the provided list becomes the complete set of filters, shown to visitors in the given order, and previously enabled filters not in the list are disabled. Pass an empty list to disable all filters, and use search_getFilters first to read the current entries when only adding or changing one.
Write operation
This tool edits your search configuration or creates a new draft from the current LIVE config. Publishing to LIVE requires My Hello Retail. Your assistant will ask for confirmation before this runs.
Directly edits any config that is in INTERNAL_REVIEW or REVIEW state; if no editable config exists, creates a new draft from the current LIVE config and applies the change to it.
| Name | Type | Required | Description |
|---|---|---|---|
websiteUuid | string | Yes | The UUID of the customer's website in Hello Retail. Use website_getInfo to look up available websites, or find it in my.helloretail.com under Settings → Website Settings → Website Unique Id. |
key | string | Yes | The stable key of the search config to update. Use search_listConfigs to find available keys. |
filters | array | Yes | The complete ordered list of filters. Fields per entry are described below. |
Each entry has these fields:
| Name | Type | Required | Description |
|---|---|---|---|
field | string | Yes | A field available for filtering on this website, from search_getFilters's availableFields. extraData fields must first be indexed for search (see dataFields_updateProductFieldsIndexing). Each field can appear at most once. |
title | string | Yes | The heading shown above the filter. |
trueText | string | BOOLEAN fields | Label of the "yes" choice. Required for BOOLEAN fields, and must be omitted for other field types. |
falseText | string | BOOLEAN fields | Label of the "no" choice. Required for BOOLEAN fields, and must be omitted for other field types. |
Example request & response
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "search_updateFilters",
"arguments": {
"websiteUuid": "<string>",
"key": "<string>",
"filters": [
{
"field": "brand",
"title": "Brand"
},
{
"field": "inStock",
"title": "In stock",
"trueText": "Yes",
"falseText": "No"
}
]
}
}
}
search_getInitialContent¶
Retrieve the initial content of a search configuration for a customer website using Hello Retail. Initial content is the product panels the search UI shows before the visitor has typed a query ("before you search" content). Each entry has a title, a subtitle, a product count, and a productSources document selecting which products to show. Returns the draft version if one exists, otherwise the LIVE version. Use this before search_updateInitialContent to read the current state.
| Name | Type | Required | Description |
|---|---|---|---|
websiteUuid | string | Yes | The UUID of the customer's website in Hello Retail. Use website_getInfo to look up available websites, or find it in my.helloretail.com under Settings → Website Settings → Website Unique Id. |
key | string | Yes | The stable key of the search config. Use search_listConfigs to find available keys. |
Example request & response
search_updateInitialContent¶
Replace the initial content of a search configuration for a customer website using Hello Retail — the product panels the search UI shows before the visitor has typed a query. This is a full replacement: the provided entries become the complete initial content list, in the given order. Pass an empty list to remove all initial content, and use search_getInitialContent first to read the current entries when only adding or changing one.
Write operation
This tool edits your search configuration or creates a new draft from the current LIVE config. Publishing to LIVE requires My Hello Retail. Your assistant will ask for confirmation before this runs.
Directly edits any config that is in INTERNAL_REVIEW or REVIEW state; if no editable config exists, creates a new draft from the current LIVE config and applies the change to it.
| Name | Type | Required | Description |
|---|---|---|---|
websiteUuid | string | Yes | The UUID of the customer's website in Hello Retail. Use website_getInfo to look up available websites, or find it in my.helloretail.com under Settings → Website Settings → Website Unique Id. |
key | string | Yes | The stable key of the search config to update. Use search_listConfigs to find available keys. |
entries | array | Yes | The complete new initial content list. Fields per entry are described below. |
Each entry has these fields:
| Name | Type | Required | Description |
|---|---|---|---|
title | string | Yes | Title rendered above the panel. The dashboard editor suggests keeping it under 99 characters. |
subtitle | string | No | Subtitle rendered under the title. |
count | integer | Yes | How many products to show. |
productSources | object | No | Selects which products to show. Omit it entirely to use the default: the visitor's retargeted products filled up with top products — the same default new search configs are seeded with. When provided, it must contain a non-empty sources array. |
The productSources shape is {"version": 1, "filterByGroupingKey": <boolean>, "filters": [{"key", "operator", "value"}], "sources": [{"productType", "productLimit", "filters", ...}]}, where operator is one of EQUALS, NOT_EQUALS, GREATER_THAN, LESS_THAN, IN, NOT_IN, ALL, and productType is e.g. TOP, MOST_BOUGHT, MOST_VIEWED, RETARGETED, RECENTLY_BOUGHT, RECENTLY_CREATED, RANDOM, MANUAL (with productIds), or SEARCH (with searchTerm). version is always 1 (the current document version) and defaults to 1 when omitted. Read the current value with search_getInitialContent for a live example.
A filter value is always a string: a scalar literal ("Nike"), a JSON-encoded list like "[\"Nike\", \"Adidas\"]" for IN/NOT_IN — not a bare JSON array — or a $-prefixed variable like "$brand", resolved from the visitor's context at serve time.
Example request & response
search_getLinkContent¶
Retrieve the link content of a search configuration for a customer website using Hello Retail. Link content is content search: alongside product results, the search UI also searches the website's content (categories, site pages, blog posts, brands) and renders the matches as links. Each entry selects one content type, how many results to show, the title and subtitle rendered above them, and the content search engine that executes the query. Returns the draft version if one exists, otherwise the LIVE version. Also lists the website's content search engines, for picking an engineId in search_updateLinkContent.
| Name | Type | Required | Description |
|---|---|---|---|
websiteUuid | string | Yes | The UUID of the customer's website in Hello Retail. Use website_getInfo to look up available websites, or find it in my.helloretail.com under Settings → Website Settings → Website Unique Id. |
key | string | Yes | The stable key of the search config. Use search_listConfigs to find available keys. |
Example request & response
{
"key": "<string>",
"name": "<string>",
"state": "<string>",
"entries": [
{
"contentType": "<string>",
"count": 0,
"title": "<string>",
"subtitle": "<string>",
"engineId": 0,
"engineName": "<string>"
}
],
"availableEngines": [
{
"id": 0,
"name": "<string>",
"contentType": "<string>",
"archived": false
}
]
}
search_updateLinkContent¶
Replace the link content (content search) of a search configuration for a customer website using Hello Retail — the content types (categories, site pages, blog posts, brands) the search UI searches alongside products and renders as links. This is a full replacement: the provided entries become the complete link content list, in the given order. Pass an empty list to disable content search. Each content type can appear at most once.
Write operation
This tool edits your search configuration or creates a new draft from the current LIVE config. Publishing to LIVE requires My Hello Retail. Your assistant will ask for confirmation before this runs.
Directly edits any config that is in INTERNAL_REVIEW or REVIEW state; if no editable config exists, creates a new draft from the current LIVE config and applies the change to it.
| Name | Type | Required | Description |
|---|---|---|---|
websiteUuid | string | Yes | The UUID of the customer's website in Hello Retail. Use website_getInfo to look up available websites, or find it in my.helloretail.com under Settings → Website Settings → Website Unique Id. |
key | string | Yes | The stable key of the search config to update. Use search_listConfigs to find available keys. |
entries | array | Yes | The complete new link content list. Fields per entry are described below. |
Each entry has these fields:
| Name | Type | Required | Description |
|---|---|---|---|
contentType | string | Yes | One of: CATEGORY, SITE_PAGE, BLOG_POST, BRAND. At most one entry per content type. |
count | integer | No | How many results to show. Default: 10. |
title | string | No | Title rendered above the links. At most 125 characters. Defaults to a standard text for the content type. |
subtitle | string | No | Subtitle rendered above the links. At most 125 characters. Defaults to a standard text for the content type. |
engineId | integer | No | A non-archived content search engine of the same content type, from search_getLinkContent's availableEngines. When omitted, the website's existing engine for the content type is reused, or a default engine is created when none exists. |
Entries returned by search_getLinkContent can be passed back unchanged — the extra engineName field is ignored — so read, tweak one entry, and write back.
Example request & response
search_getSorting¶
Get the sort options of a search configuration for a customer website using Hello Retail. Sort options are the orderings visitors can pick, each offering an ascending and/or descending direction with its own display text, returned in the order shown to visitors. A direction is offered to visitors exactly when its text is set; a null text means that direction isn't available. Returns the draft version if one exists, otherwise the LIVE version. Use this before search_updateSorting to read the current state.
The response also lists every field available for sorting on the website: the standard Hello Retail fields plus any extraData fields indexed for search (manage indexing with dataFields_getProductFields and dataFields_updateProductFieldsIndexing). Use search_getSortingUsage to see which sort options visitors actually use.
| Name | Type | Required | Description |
|---|---|---|---|
websiteUuid | string | Yes | The UUID of the customer's website in Hello Retail. Use website_getInfo to look up available websites, or find it in my.helloretail.com under Settings → Website Settings → Website Unique Id. |
key | string | Yes | The stable key of the search config. Use search_listConfigs to find available keys. |
Example request & response
search_updateSorting¶
Replace the sort options of a search configuration for a customer website using Hello Retail. This is a full replacement: the provided list becomes the complete set of sort options, shown to visitors in the given order, and previously enabled sort options not in the list are disabled. Pass an empty list to disable all sorting, and use search_getSorting first to read the current entries when only adding or changing one.
Write operation
This tool edits your search configuration or creates a new draft from the current LIVE config. Publishing to LIVE requires My Hello Retail. Your assistant will ask for confirmation before this runs.
Directly edits any config that is in INTERNAL_REVIEW or REVIEW state; if no editable config exists, creates a new draft from the current LIVE config and applies the change to it.
| Name | Type | Required | Description |
|---|---|---|---|
websiteUuid | string | Yes | The UUID of the customer's website in Hello Retail. Use website_getInfo to look up available websites, or find it in my.helloretail.com under Settings → Website Settings → Website Unique Id. |
key | string | Yes | The stable key of the search config to update. Use search_listConfigs to find available keys. |
sorting | array | Yes | The complete ordered list of sort options. Fields per entry are described below. |
Each entry has these fields:
| Name | Type | Required | Description |
|---|---|---|---|
field | string | Yes | A field available for sorting on this website, from search_getSorting's availableFields. extraData fields must first be indexed for search (see dataFields_updateProductFieldsIndexing). Each field can appear at most once. |
ascendingText | string | See below | Display text of the ascending direction, e.g. "Lowest price". |
descendingText | string | See below | Display text of the descending direction, e.g. "Highest price". |
A direction is offered to visitors exactly when its text is provided, so each entry needs ascendingText, descendingText, or both.
Example request & response
search_listConfigs¶
List search configurations for a customer website. Each entry is one search UI instance: a full-page search, instant/autocomplete, or overlay. One entry is returned per key; when a key has multiple lifecycle versions, the editable version (INTERNAL_REVIEW or REVIEW) takes priority, then LIVE, then archived. The draft flag indicates an unpublished draft of an existing LIVE configuration.
type is one of: Full search, Instant search, Overlay search, Other. state is one of: INTERNAL_REVIEW (internal draft), REVIEW (awaiting business approval), LIVE (serving users), ARCHIVED, or INTERNAL_ARCHIVED.
| Name | Type | Required | Description |
|---|---|---|---|
websiteUuid | string | Yes | The UUID of the customer's website in Hello Retail. Use website_getInfo to look up available websites, or find it in my.helloretail.com under Settings → Website Settings → Website Unique Id. |
Example request & response
search_listStopWords¶
List all search stop words for a customer website using Hello Retail. Stop words are stripped from the visitor's query before search is executed, which is useful for filtering out noise words (e.g. "and", "the", "with") that would otherwise dilute results. Stop words are stored and matched case-insensitively and are configured per website.
| Name | Type | Required | Description |
|---|---|---|---|
websiteUuid | string | Yes | The UUID of the customer's website in Hello Retail. Use website_getInfo to look up available websites, or find it in my.helloretail.com under Settings → Website Settings → Website Unique Id. |
Example request & response
search_listSynonyms¶
List all search synonyms for a customer website using Hello Retail. Each synonym expands a search query: when a visitor searches for word, results matching synonym are also included.
| Name | Type | Required | Description |
|---|---|---|---|
websiteUuid | string | Yes | The UUID of the customer's website in Hello Retail. Use website_getInfo to look up available websites, or find it in my.helloretail.com under Settings → Website Settings → Website Unique Id. |