Skip to content

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:

  1. Managed search configs, hosted by Hello Retail and served at core.helloretail.com/serve/search. Create them with createSearchConfig, inspect them with listSearchConfigs, and read or edit their templates, styles, and init code with getSearchDesign and updateSearchDesign.
  2. A fully custom frontend, built against the public Search API. Your frontend calls core.helloretail.com/serve/search directly, 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.

Show the search synonyms configured for my website and what each one expands to.

Stop words are stripped before search runs. Use them to drop noise words that dilute results.

List the search stop words for my website and suggest any noise words I should add.

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.

Check whether the search config with key "main-search" for my website is LIVE, and tell me where to publish it if not.

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
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "createSearchConfig",
    "arguments": {
      "websiteUuid": "<string>",
      "target": "BOTH"
    }
  }
}
[
  {
    "key": "<string>",
    "configId": 0,
    "name": "<string>",
    "state": "<string>",
    "lastModified": "<string>"
  }
]

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
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "getSearchDesign",
    "arguments": {
      "websiteUuid": "<string>",
      "key": "<string>"
    }
  }
}
{
  "key": "<string>",
  "name": "<string>",
  "state": "<string>",
  "inputTemplate": "<string>",
  "initializationCode": "<string>",
  "resultTemplate": "<string>",
  "resultStyles": "<string>"
}

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
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "updateSearchDesign",
    "arguments": {
      "websiteUuid": "<string>",
      "key": "<string>"
    }
  }
}
{
  "key": "<string>",
  "draftId": 0,
  "name": "<string>",
  "state": "<string>",
  "lastModified": "<string>"
}

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
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "getSearchFilters",
    "arguments": {
      "websiteUuid": "<string>",
      "key": "<string>"
    }
  }
}
{
  "key": "<string>",
  "name": "<string>",
  "state": "<string>",
  "filters": [
    {
      "field": "<string>",
      "type": "LIST",
      "title": "<string>",
      "trueText": null,
      "falseText": null
    }
  ],
  "availableFields": [
    {
      "field": "<string>",
      "type": "RANGE"
    }
  ]
}

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
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "updateSearchFilters",
    "arguments": {
      "websiteUuid": "<string>",
      "key": "<string>",
      "filters": [
        {
          "field": "brand",
          "title": "Brand"
        },
        {
          "field": "inStock",
          "title": "In stock",
          "trueText": "Yes",
          "falseText": "No"
        }
      ]
    }
  }
}
{
  "key": "<string>",
  "draftId": 0,
  "name": "<string>",
  "state": "<string>",
  "lastModified": "<string>"
}

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
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "getSearchInitialContent",
    "arguments": {
      "websiteUuid": "<string>",
      "key": "<string>"
    }
  }
}
{
  "key": "<string>",
  "name": "<string>",
  "state": "<string>",
  "entries": [
    {
      "title": "<string>",
      "subtitle": "<string>",
      "count": 0,
      "productSources": {
        "version": 1,
        "filterByGroupingKey": false,
        "sources": [
          {
            "productType": "<string>",
            "filters": [],
            "productLimit": 0
          }
        ],
        "filters": []
      }
    }
  ]
}

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
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "updateSearchInitialContent",
    "arguments": {
      "websiteUuid": "<string>",
      "key": "<string>",
      "entries": [
        {
          "title": "<string>",
          "subtitle": "<string>",
          "count": 0
        }
      ]
    }
  }
}
{
  "key": "<string>",
  "draftId": 0,
  "name": "<string>",
  "state": "<string>",
  "lastModified": "<string>"
}

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
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "getSearchLinkContent",
    "arguments": {
      "websiteUuid": "<string>",
      "key": "<string>"
    }
  }
}
{
  "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
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "updateSearchLinkContent",
    "arguments": {
      "websiteUuid": "<string>",
      "key": "<string>",
      "entries": [
        {
          "contentType": "BLOG_POST",
          "count": 0,
          "title": "<string>"
        }
      ]
    }
  }
}
{
  "key": "<string>",
  "draftId": 0,
  "name": "<string>",
  "state": "<string>",
  "lastModified": "<string>"
}

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
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "getSearchSorting",
    "arguments": {
      "websiteUuid": "<string>",
      "key": "<string>"
    }
  }
}
{
  "key": "<string>",
  "name": "<string>",
  "state": "<string>",
  "sorting": [
    {
      "field": "<string>",
      "ascendingText": "<string>",
      "descendingText": "<string>"
    }
  ],
  "availableFields": ["<string>"]
}

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
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "updateSearchSorting",
    "arguments": {
      "websiteUuid": "<string>",
      "key": "<string>",
      "sorting": [
        {
          "field": "price",
          "ascendingText": "Lowest price",
          "descendingText": "Highest price"
        }
      ]
    }
  }
}
{
  "key": "<string>",
  "draftId": 0,
  "name": "<string>",
  "state": "<string>",
  "lastModified": "<string>"
}

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
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "listSearchConfigs",
    "arguments": {
      "websiteUuid": "<string>"
    }
  }
}
[
  {
    "key": "<string>",
    "name": "<string>",
    "type": "<string>",
    "state": "<string>",
    "draft": false,
    "lastModified": "<string>"
  }
]

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
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "listSearchStopWords",
    "arguments": {
      "websiteUuid": "<string>"
    }
  }
}
["<string>"]

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.
Example request & response
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "listSearchSynonyms",
    "arguments": {
      "websiteUuid": "<string>"
    }
  }
}
[
  {
    "word": "<string>",
    "synonym": "<string>"
  }
]