Product Search and Enrich
product_search_and_enrich — search / discover / hydrate products & technologies from the HG Insights catalog. One tool, two actions. action='search' (free) returns a slim, paginated hit list of product_ids matching name/vendor/category/attribute filters — use it to disambiguate a fuzzy product name or browse products under a vendor/category. action='enrich' (1 credit per successful match) hydrates 1-50 known product_ids into full catalog records: product_details, category_info, vendor_info. Typical flow: search to find the id, then enrich the chosen id(s). Unmatched enrich ids are silently omitted and consume no credits. When filtering by category, prefer resolving the exact category first via get_product_category and passing category_id — category_name does a substring match that can silently pick the wrong category (e.g. 'CRM' can match a BPO/outsourcing category). Same guidance applies to attributes via get_product_attribute (use attribute_ids) and vendors via get_vendor_information (use vendor_id). Do NOT use for pricing, competitor narrative, or user reviews. This tool returns HG catalog taxonomy (category/vendor/attributes/install signals) only.
Credits
1 — 1 per enriched product returned. See the full credit table for how AI Credits work.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
action Required | string | - | Required discriminator selecting the operation. 'search' = free, returns a paginated list of matching product_ids (use with filters/sort/limit/offset). 'enrich' = 1 credit per successful match, hydrates known product_ids into full catalog records (use with products[]). |
filters | object | - | search-only, all fields optional and AND-combined. Flat HG catalog filters: product_name, description, category_name, attribute_name, vendor_name (substring matches — imprecise), category_id (32-char uppercase hex, resolve via get_product_category), attribute_ids (resolve via get_product_attribute), vendor_id (resolve via get_vendor_information), has_install (true = only products with observed installs). Resolve category_id via get_product_category first and pass it here — category_name does a substring match that can silently pick the wrong category. Prefer id filters over the *_name substring filters. Unknown keys and legacy nested shapes are rejected. |
filters.product_name | string | - | |
filters.description | string | - | |
filters.category_name | string | - | |
filters.attribute_name | string | - | |
filters.vendor_name | string | - | |
filters.category_id | string | - | |
filters.attribute_ids | array | - | |
filters.vendor_id | integer | - | |
filters.has_install | boolean | - | |
sort | array | - | search-only. Ordered list of up to 3 sort specs (first is primary). Each: field ∈ {relevance, product_name, vendor_name, category_name, last_verified_at}, order ∈ {asc, desc}. Omit for the server's default relevance ranking. |
sort[].field Required | string | - | |
sort[].order Required | string | - | |
limit | integer | - | search-only. Max results per page, 1-100. Server default: 50. |
offset | integer | - | search-only. Zero-based pagination offset (>=0) into the result set; page N = offset N*limit. Server default: 0. |
products | array | - | enrich-only, required for enrich. 1-50 product_ids to hydrate, each as {product_id}. Get ids from a prior action='search' call. Duplicates are deduped by upstream. Unmatched ids are silently omitted from the response and consume no credits (no per-row error is returned). |
products[].product_id Required | integer | - |
Required Integrations
This tool is only available when your organization has the following integration configured in the HG Insights Integrations settings:
- HG Insights (Data API) (
hginsights_v2_data_api)
Use Cases
- Resolve a fuzzy product name into a concrete product_id — action='search' with filters.product_name
- List every product a vendor ships in the catalog — action='search' with filters.vendor_id (resolved via get_vendor_information)
- Browse products within a category — action='search' with filters.category_id (resolved via get_product_category)
- Fetch full catalog metadata (product/category/vendor details) for known ids — action='enrich' with products[]
- Narrow a category to products that actually have installs — action='search' with filters.has_install:true
Example Usage
Search products by name (free, returns product_ids)
{
"tool": "product_search_and_enrich",
"arguments": {
"action": "search",
"filters": {
"product_name": "Salesforce"
},
"limit": 10
}
}
Search a resolved category, installs only, sorted by name
{
"tool": "product_search_and_enrich",
"arguments": {
"action": "search",
"filters": {
"category_id": "1418B319B0BF64082F35286B055DDCC1",
"has_install": true
},
"sort": [
{
"field": "product_name",
"order": "asc"
}
]
}
}
Enrich two known product_ids with full catalog details
{
"tool": "product_search_and_enrich",
"arguments": {
"action": "enrich",
"products": [
{
"product_id": 43310
},
{
"product_id": 43311
}
]
}
}
Response Format
| Field | Type | Description |
|---|---|---|
products | array | search: slim product hit list ({product_id, product_name, ...}). enrich: one hydrated row per matched product_id. |
products[].product_id | number | null | |
products[].product_name | string | null | |
products[].product_description | string | null | |
products[].vendor_id | number | null | |
products[].vendor_name | string | null | |
products[].category_id | string | null | |
products[].category_name | string | null | |
products[].product_details | object | null | |
products[].category_info | object | null | |
products[].vendor_info | object | null | |
count | number | search only. Total matching products before pagination. |
Related Tools
get_product_category, get_product_attribute, get_vendor_information, company_technographic