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 withcreateSearchConfig, inspect them withlistSearchConfigs, and read or edit their templates, styles, and init code withgetSearchDesignandupdateSearchDesign. - 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
Synonyms expand a query, so a search for the word also returns results matching the synonym.
Stop words are stripped before search runs. Use them to drop noise words that dilute results.
Initial content fills the search UI before the visitor types; link content shows matching categories, pages, blog posts, or brands next to product results.
Show the initial content of my overlay search config, then add a panel with this season's best sellers.
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.
Show the filters and sort options on my overlay search config, then translate all their texts to German.
A custom frontend returning no results, or unexpected ones, is usually because the config isn't LIVE yet. listSearchConfigs'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}. getWebsiteInfo gives you the companyId and websiteUuid.
createSearchConfig¶
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 updateSearchDesign. 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 getWebsiteInfo or listWebsitesForCompany 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
getSearchDesign¶
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 updateSearchDesign 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 getWebsiteInfo 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 listSearchConfigs to find available keys. |
Example request & response
updateSearchDesign¶
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; listSearchConfigs'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 getWebsiteInfo 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 listSearchConfigs 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
getSearchFilters¶
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 updateSearchFilters 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 getProductFields and updateProductFieldsIndexing). Use getSearchFilterUsage 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 getWebsiteInfo 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 listSearchConfigs to find available keys. |
Example request & response
updateSearchFilters¶
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 getSearchFilters 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 getWebsiteInfo 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 listSearchConfigs 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 getSearchFilters's availableFields. extraData fields must first be indexed for search (see 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
getSearchInitialContent¶
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 updateSearchInitialContent to read the current state.
| Name | Type | Required | Description |
|---|---|---|---|
websiteUuid | string | Yes | The UUID of the customer's website in Hello Retail. Use getWebsiteInfo 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 listSearchConfigs to find available keys. |
Example request & response
updateSearchInitialContent¶
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 getSearchInitialContent 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 getWebsiteInfo 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 listSearchConfigs 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 getSearchInitialContent 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
getSearchLinkContent¶
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 updateSearchLinkContent.
| Name | Type | Required | Description |
|---|---|---|---|
websiteUuid | string | Yes | The UUID of the customer's website in Hello Retail. Use getWebsiteInfo 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 listSearchConfigs 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
}
]
}
updateSearchLinkContent¶
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 getWebsiteInfo 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 listSearchConfigs 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 getSearchLinkContent'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 getSearchLinkContent can be passed back unchanged — the extra engineName field is ignored — so read, tweak one entry, and write back.
Example request & response
getSearchSorting¶
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 updateSearchSorting 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 getProductFields and updateProductFieldsIndexing). Use getSearchSortingUsage 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 getWebsiteInfo 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 listSearchConfigs to find available keys. |
Example request & response
updateSearchSorting¶
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 getSearchSorting 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 getWebsiteInfo 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 listSearchConfigs 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 getSearchSorting's availableFields. extraData fields must first be indexed for search (see 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
listSearchConfigs¶
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 getWebsiteInfo to look up available websites, or find it in my.helloretail.com under Settings → Website Settings → Website Unique Id. |
Example request & response
listSearchStopWords¶
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 getWebsiteInfo to look up available websites, or find it in my.helloretail.com under Settings → Website Settings → Website Unique Id. |
Example request & response
listSearchSynonyms¶
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 getWebsiteInfo to look up available websites, or find it in my.helloretail.com under Settings → Website Settings → Website Unique Id. |