Opensearch MCP tools
Use this reference to find a tool and its inputs. Connect an MCP client before calling tools. Tool visibility depends on discovery and permissions.
For actions that send messages, spend credits, delete data, or start execution, review the intended records and confirm the action before proceeding. Obtain IDs from a prior result; do not invent them. A registered tool does not guarantee that its supporting service is available in every organization.
g8_opensearch_aggregate
Generic GROUP BY over a whitelisted mashup index — the TAM matrix-walk primitive. Counts company/contact distributions across 1-3 dimensions in one call (e.g. NAICS x state x employee band). Aggregations on contact/company mashup indices automatically apply the organization’s deliverability protection policy. Args: index: One of “mashup_contacts”, “mashup_companies”, “hem2contact”, “ip2company”. group_by: 1-3 RAW UPPERCASE keyword fields to group on, e.g. [“COMPANY_NAICS”, “COMPANY_STATE”]. Capped at 3 dimensions. filters: Pre-aggregation equality filters (same shape as search). agg: Metrics per group. Each item is {“function”: …, “field”: …, “alias”: …}. function in count/uniqExact/sum/avg/min/max. count needs no field; the rest require one. Defaults to a single count. For unique companies: {“function”: “uniqExact”, “field”: “COMPANY_ID”, “alias”: “companies”}. having: Post-aggregation group filter keyed by alias, e.g. {“count”: {“gte”: 50}}. Operators: eq, gte, lte, gt, lt. sort: Sort groups by an alias, e.g. [{“count”: “desc”}]. limit: Max groups returned (default 100, server-capped at 1000).
Inputs
| Input | Required | Type | Description |
|---|---|---|---|
index | Yes | string | See the schema below for constraints and defaults. |
group_by | Yes | array | See the schema below for constraints and defaults. |
filters | No | object / null | See the schema below for constraints and defaults. |
agg | No | array / null | See the schema below for constraints and defaults. |
having | No | object / null | See the schema below for constraints and defaults. |
sort | No | array / null | See the schema below for constraints and defaults. |
limit | No | integer | See the schema below for constraints and defaults. |
Complete input schema
{ "properties": { "index": { "title": "Index", "type": "string" }, "group_by": { "items": { "type": "string" }, "title": "Group By", "type": "array" }, "filters": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "default": null, "title": "Filters" }, "agg": { "anyOf": [ { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Agg" }, "having": { "anyOf": [ { "additionalProperties": { "additionalProperties": { "type": "number" }, "type": "object" }, "type": "object" }, { "type": "null" } ], "default": null, "title": "Having" }, "sort": { "anyOf": [ { "items": { "additionalProperties": { "type": "string" }, "type": "object" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Sort" }, "limit": { "default": 100, "title": "Limit", "type": "integer" } }, "required": [ "index", "group_by" ], "title": "g8_opensearch_aggregateArguments", "type": "object"}g8_opensearch_count
Exact match count for a whitelisted mashup index (TAM cell sizing). Same index + filters shape as g8_opensearch_search, but returns just {index, count} via the native OpenSearch _count API — NOT capped at the 10000 ceiling that search’s
totalsaturates at. Counts on contact/company mashup indices automatically apply the organization’s deliverability protection policy. Note: mashup_companies and mashup_contacts are the SAME contact-grained index, so a count on mashup_companies counts contact rows, not unique companies. For a unique-company total use g8_opensearch_aggregate with uniqExact on COMPANY_ID. Args: index: One of “mashup_contacts”, “mashup_companies”, “hem2contact”, “ip2company”. filters: Field equality filters, AND-joined. RAW UPPERCASE field names, e.g. {“COMPANY_NAICS”: [“3311”, “3311.00000”], “COMPANY_COUNTRY”: [“US”, “United States”]}.
Inputs
| Input | Required | Type | Description |
|---|---|---|---|
index | Yes | string | See the schema below for constraints and defaults. |
filters | No | object / null | See the schema below for constraints and defaults. |
Complete input schema
{ "properties": { "index": { "title": "Index", "type": "string" }, "filters": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "default": null, "title": "Filters" } }, "required": [ "index" ], "title": "g8_opensearch_countArguments", "type": "object"}g8_opensearch_resolve_ids
Bulk HEM -> CONTACT_ID or IP -> COMPANY_ID resolution. Take a batch of opaque IDs and get back the canonical graph8 CONTACT_ID / COMPANY_ID. Args: kind: “hem_to_contact” or “ip_to_company”. ids: Up to 500 input IDs. The response includes EVERY input as a key (null for misses) so you can iterate without re-querying.
Inputs
| Input | Required | Type | Description |
|---|---|---|---|
kind | Yes | string | See the schema below for constraints and defaults. |
ids | Yes | array | See the schema below for constraints and defaults. |
Complete input schema
{ "properties": { "kind": { "title": "Kind", "type": "string" }, "ids": { "items": { "type": "string" }, "title": "Ids", "type": "array" } }, "required": [ "kind", "ids" ], "title": "g8_opensearch_resolve_idsArguments", "type": "object"}g8_opensearch_search
Structured search against the graph8 OpenSearch mashup indices. Use when the higher-level CRM tools (g8_find_contacts, g8_lookup_person) don’t surface the filter you need. For ID-only resolution prefer g8_opensearch_resolve_ids (single round trip). For a count with no rows prefer g8_opensearch_count; for GROUP BY use g8_opensearch_aggregate. Contact/company mashup results automatically apply the organization’s deliverability protection policy. Args: index: Logical index name. One of: “mashup_contacts” (person-level enrichment), “mashup_companies” (company-level enrichment), “hem2contact” (HEM -> CONTACT_ID), “ip2company” (IP -> COMPANY_ID). filters: Field equality filters, AND-joined. List values become a terms clause. E.g. {“COMPANY_DOMAIN”: “acme.com”}, {“COMPANY_INDUSTRY”: [“SaaS”, “Fintech”]}. Use RAW UPPERCASE field names (e.g. COMPANY_INDUSTRY, not “industry”). fields: Optional _source columns to return. Omit for full document. limit: Max hits (default 50, server-capped at 200). sort: Optional sort spec, e.g. [{“COMPANY_REVENUE”: “desc”}]. Required if paginating via cursor. cursor: search_after token from a prior call (the sort field of the last hit). Pass back to fetch the next page. track_total_hits: Optional exact-count ceiling for
total(e.g. 100000). Omit for the default 10000-saturating behaviour.
Inputs
| Input | Required | Type | Description |
|---|---|---|---|
index | Yes | string | See the schema below for constraints and defaults. |
filters | No | object / null | See the schema below for constraints and defaults. |
fields | No | array / null | See the schema below for constraints and defaults. |
limit | No | integer | See the schema below for constraints and defaults. |
sort | No | array / null | See the schema below for constraints and defaults. |
cursor | No | array / null | See the schema below for constraints and defaults. |
track_total_hits | No | integer / null | See the schema below for constraints and defaults. |
Complete input schema
{ "properties": { "index": { "title": "Index", "type": "string" }, "filters": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "default": null, "title": "Filters" }, "fields": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Fields" }, "limit": { "default": 50, "title": "Limit", "type": "integer" }, "sort": { "anyOf": [ { "items": { "additionalProperties": { "type": "string" }, "type": "object" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Sort" }, "cursor": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": null, "title": "Cursor" }, "track_total_hits": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Track Total Hits" } }, "required": [ "index" ], "title": "g8_opensearch_searchArguments", "type": "object"}