Skip to main content
Glama

Find enrichment providers

search_providers
Read-onlyIdempotent

Search current enrichment provider records by natural-language interests in a required region: pass the place the family names (a US city with its state, a ZIP code, a neighborhood or area) or a region ID. A region ID, a town a region lists, or any other US town or ZIP code is placed directly; other place text is mapped onto a covered region by Jev in parallel with embedding the query. Outside the configured regions, search covers providers within 40 km of the town or ZIP (response region place:). Location words in the query are not used for filtering. PostgreSQL retrieves the 120 providers in the area whose descriptions are closest in meaning to the query, the named town first, and Jev keeps and ranks those that fit. Returns relevance scores, the catalog categories of the providers returned (selected_types) and limitations; does not verify program availability. Each caller has its own search rate limit inside one shared by all callers. Search text is processed by Google Gemini and Jev; operational search analytics are stored. Do not include child names or private details.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "query": "<query>",
      "region": "<region>"
    },
    "name": "search_providers"
  }
}

Input Schema

NameRequiredDescriptionDefault
limitNo
queryYes
regionYesWhere the family is looking, as they said it: a city, neighborhood or area such as "Leander, TX" or "Brooklyn", a ZIP code, or a region ID. Any US town with its state or ZIP code works: outside the configured regions, search covers 40 km around it. The response region is what was searched.

Output Schema

NameRequiredDescriptionDefault
regionYesThe region searched, or place:<town or ZIP> for a search by distance outside the regions.
providersYes
limitationsYes
model_versionYes
rubric_versionYes
selected_typesYes
evaluated_countYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • changedInput schema / properties / region / description
      Previous value: -"Where the family is looking, as they said it: a city, neighborhood or area such as \"Leander, TX\" or \"Brooklyn\", or a region ID. Mapped onto a covered region; the response region is the one searched."New value: +"Where the family is looking, as they said it: a city, neighborhood or area such as \"Leander, TX\" or \"Brooklyn\", a ZIP code, or a region ID. Any US town with its state or ZIP code works: outside the configured regions, search covers 40 km around it. The response region is what was searched."
    • addedOutput schema / properties / region / anyOf
      Added value: +[
      +  {
      +    "enum": [
      +      "austin",
      +      "baltimore",
      +      "boise",
      +      "boston",
      +      "buffalo",
      +      "charleston",
      +      "chicago",
      +      "cincinnati",
      +      "cleveland",
      +      "columbus",
      +      "dallas-fort-worth",
      +      "dc",
      +      "denver",
      +      "detroit",
      +      "houston",
      +      "indianapolis",
      +      "kansas-city",
      +      "madison",
      +      "miami",
      +      "milwaukee",
      +      "minneapolis-st-paul",
      +      "new-york",
      +      "oklahoma-city",
      +      "orlando",
      +      "philadelphia",
      +      "phoenix",
      +      "pittsburgh",
      +      "portland",
      +      "raleigh-durham",
      +      "salt-lake-city",
      +      "san-antonio",
      +      "seattle",
      +      "sf-bay",
      +      "socal",
      +      "st-louis",
      +      "tampa",
      +      "tucson",
      +      "connecticut",
      +      "providence"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "format": "starts_with",
      +    "pattern": "^place:.*",
      +    "type": "string"
      +  }
      +]
    • addedOutput schema / properties / region / description
      Added value: +"The region searched, or place:<town or ZIP> for a search by distance outside the regions."
    • removedOutput schema / properties / region / enum
      Removed value: -[
      -  "austin",
      -  "baltimore",
      -  "boise",
      -  "boston",
      -  "buffalo",
      -  "charleston",
      -  "chicago",
      -  "cincinnati",
      -  "cleveland",
      -  "columbus",
      -  "dallas-fort-worth",
      -  "dc",
      -  "denver",
      -  "detroit",
      -  "houston",
      -  "indianapolis",
      -  "kansas-city",
      -  "madison",
      -  "miami",
      -  "milwaukee",
      -  "minneapolis-st-paul",
      -  "new-york",
      -  "oklahoma-city",
      -  "orlando",
      -  "philadelphia",
      -  "phoenix",
      -  "pittsburgh",
      -  "portland",
      -  "raleigh-durham",
      -  "salt-lake-city",
      -  "san-antonio",
      -  "seattle",
      -  "sf-bay",
      -  "socal",
      -  "st-louis",
      -  "tampa",
      -  "tucson",
      -  "connecticut",
      -  "providence"
      -]
    • removedOutput schema / properties / region / type
      Removed value: -"string"
  2. First observed

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, so the safety profile is covered structurally. The description adds real value beyond that: per-caller rate limiting nested inside a global limit, query text processed by Google Gemini and Jev, stored search analytics, a 120-candidate retrieval-then-rerank pipeline, and a PII warning against including child names. Missing are failure modes (what happens on an unresolvable region) and whether ranking is stable across calls. Strong additions, but not exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first sentence, which is good, but the body drifts into internal implementation plumbing ('PostgreSQL retrieves the 120 providers... Jev keeps and ranks those that fit') and jargon like 'placed directly' that costs the agent reading effort for modest gain. The region-mapping sentence also largely restates the schema's region description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a semantically complex search tool with an output schema, the description covers the hard parts: region resolution rules, ranking behavior, privacy constraints, data processors, and rate limits. The remaining gap is the undocumented limit parameter and no guidance on handling an out-of-region result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 33% — region is documented, while query and limit are bare types. The description compensates for query (natural-language interests, location words in the query are explicitly NOT used for filtering, a genuinely non-obvious semantic) and reinforces region handling. However, the limit parameter (default 10, max 25) is never mentioned anywhere, leaving one of three parameters fully unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening clause states a specific verb and resource: 'Search current enrichment provider records by natural-language interests in a required region.' It also draws a boundary ('does not verify program availability'), but it never names or contrasts with sibling tools like get_provider or list_regions, leaving the agent to infer differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly frames the use case (natural-language interest search scoped to a required region) and enumerates accepted region forms: city+state, ZIP, neighborhood/area, or region ID. It stops short of explicit when-not guidance or naming an alternative for provider detail lookup or region enumeration.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources