Skip to main content
Glama

find_providers

Read-only

Paged, sortable, filterable provider list. Size filters need Understanding. Reference: apis://docs/tools/find_providers.

Input Schema

NameRequiredDescriptionDefault
qNoFree text over name + description, e.g. "sms".
areaNoArea slugs, e.g. ["security"].
bandNoexemplar | strong | developing | thin | minimal.
pageNoPage number, 1-based (default 1).
sortNoDefault: relevance with `q`, else composite.
tagsNoTag slugs, e.g. ["payments"]. On providers: what the company does (see api_tags).
viewNosummary (default, lean) or full.summary
facetNoFacet, e.g. governance; needs min_facet.
groupNoestate: one row per estate.
limitNoResults per page, 1-100 (default 25).
matchNoHow `tags` combine: any (default) or all.any
trendNoup | down | flat since last scoring.
fieldsNoOnly these top-level keys, e.g. ["slug","score"].
publicNoCallable with no signup (onboarding=open).
regionNoRegion slugs, e.g. ["north-america"].
contextNoOptional: one sentence on why you are asking. Never used to rank; read only if a result is wrong.
countryNoCountry slugs, e.g. ["united-kingdom"].
pricingNofree | freemium | free-trial | paid | enterprise, e.g. ["free"].
resolveNoon (default) uses a tag `q` names; off = text only.on
try_nowNoUsable at no cost right now (free/trial + self-serve/open).
api_tagsNoTags on its APIs, e.g. ["webhook"].
industryNoIndustry slugs, e.g. ["fintech"].
platformNoVendor slugs, e.g. ["mintlify"].
max_scoreNoMaximum composite, e.g. 60.
min_facetNoMinimum `facet` score, e.g. 70.
min_scoreNoMinimum Kin Score composite (0-100), e.g. 60.
providersNoProvider slugs, e.g. ["stripe"].
min_actingNoMinimum write operations, e.g. 5.
onboardingNoopen (no key) | self-serve | approval.
size_basisNoSize source, e.g. sec-edgar.
size_statusNoprobed | unprobed (use probed for small firms).
revenue_bandNoRevenue band(s), e.g. "$1-10M".
platform_areaNoPlatform area, e.g. hosting.
publishes_apiNotrue = publishes an API.
accepts_writesNotrue = has write operations; false = read-only.
artifact_typesNoArtifact types required, e.g. ["OpenAPI"].
employees_bandNoSize band(s), e.g. "1-10,11-50".
exclude_operatorNo
include_narrowerNoWith `tags`: add narrower-tag members.
onboarding_descriptorNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / onboarding_descriptor
      Added value: +{
      +  "type": "boolean"
      +}
  2. Changed1 schema field changed
    • addedInput schema / properties / exclude_operator
      Added value: +{
      +  "type": "boolean"
      +}
  3. Changed37 schema fields changed
    • changedInput schema / properties / accepts_writes / description
      Previous value: -"true = the provider has operations that ACT (create/update/send), so you can push something to it; false = measured and read-only. Use this when the question is \"where can I publish/send/post to\" — text search cannot tell direction, and without it a query about syndicating content returns RSS feeds and read-only APIs. Providers with no agentic-access reading are excluded either way: absent is unmeasured, not zero."New value: +"true = has write operations; false = read-only."
    • changedInput schema / properties / api_tags / description
      Previous value: -"Providers that publish an API, spec or OPERATION carrying these tags, without claiming it as their business. The complement of `tags`, and disjoint from it."New value: +"Tags on its APIs, e.g. [\"webhook\"]."
    • changedInput schema / properties / area / description
      Previous value: -"Area slugs, as find_areas returns them, e.g. [\"security\"]."New value: +"Area slugs, e.g. [\"security\"]."
    • changedInput schema / properties / artifact_types / description
      Previous value: -"Artifact types an API must carry, e.g. [\"OpenAPI\",\"AsyncAPI\",\"Postman\"]. Synonyms fold (MCPServer = MCP)."New value: +"Artifact types required, e.g. [\"OpenAPI\"]."
    • changedInput schema / properties / band / description
      Previous value: -"Rating bands: exemplar, strong, developing, thin, minimal."New value: +"exemplar | strong | developing | thin | minimal."
    • changedInput schema / properties / context / description
      Previous value: -"Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."New value: +"Optional: one sentence on why you are asking. Never used to rank; read only if a result is wrong."
    • changedInput schema / properties / country / description
      Previous value: -"Providers whose derived country membership includes these slugs (e.g. united-kingdom). Membership is partial — a count is a floor."New value: +"Country slugs, e.g. [\"united-kingdom\"]."
    • changedInput schema / properties / employees_band / description
      Previous value: -"Company size band(s), comma-separated: 1-10 | 11-50 | 51-200 | 201-1000 | 1001-5000 | 5000+ | 1000+ (the last is the open-ended band the inferred rung emits when it can tell \"big\" but not how big). ESTIMATES from free public sources — Wikidata, SEC EDGAR, the provider's own About page, our own signals — never a headcount. Understanding plan."New value: +"Size band(s), e.g. \"1-10,11-50\"."
    • changedInput schema / properties / facet / description
      Previous value: -"Quality facet to threshold on: discoverability, contract_quality, governance, operational_transparency, developer_ergonomics, commercial_clarity. Needs min_facet."New value: +"Facet, e.g. governance; needs min_facet."
    • changedInput schema / properties / fields / description
      Previous value: -"Return exactly these top-level keys (overrides view)."New value: +"Only these top-level keys, e.g. [\"slug\",\"score\"]."
    • changedInput schema / properties / group / description
      Previous value: -"estate = rank each corporate estate ONCE: keep the best-ranked member of each estate root (Cvent, Oracle, Amazon) in the order applied, and nest the other members of that estate found in this result set under it as `estate_members`, with `estate_member_count`. Rows outside any estate are unaffected. meta.query.ungrouped_total is the flat count. Off by default; every row carries `estate` and `estate_root` either way."New value: +"estate: one row per estate."
    • changedInput schema / properties / include_narrower / description
      Previous value: -"With `tags`: also return the members of each tag's CURATED narrower tags (the `narrower` list on get_tag — Payments under Fintech), after the tag's own members. Each added row carries `via: <narrower-tag>`. Off by default, and provider_count on the tag stays the tag's own membership; provider_count_with_narrower is this total. On a tag with senses (payments, media, supply-chain), every row is routed into a sense: it carries `sense: <tag>:<id>`, meta.query.senses counts own and added members per sense, and `sense=<tag>:<id>` with include_narrower=true (REST) reads one routed sense."New value: +"With `tags`: add narrower-tag members."
    • changedInput schema / properties / industry / description
      Previous value: -"Industry slugs, as find_industries returns them, e.g. [\"artificial-intelligence\"]."New value: +"Industry slugs, e.g. [\"fintech\"]."
    • changedInput schema / properties / match / description
      Previous value: -"How multiple `tags` combine: \"any\" (default, at least one) or \"all\" (every tag)."New value: +"How `tags` combine: any (default) or all."
    • changedInput schema / properties / max_score / description
      Previous value: -"Only providers at or below this composite. Pair with min_score for a band-free range."New value: +"Maximum composite, e.g. 60."
    • changedInput schema / properties / min_acting / description
      Previous value: -"Minimum number of acting (non-read) operations. Use to require real write depth rather than a single write endpoint."New value: +"Minimum write operations, e.g. 5."
    • changedInput schema / properties / min_facet / description
      Previous value: -"Minimum score on `facet`. Without `facet` this does nothing."New value: +"Minimum `facet` score, e.g. 70."
    • changedInput schema / properties / min_score / description
      Previous value: -"Only providers whose Kin Score composite is at or above this, 0-100, e.g. 60."New value: +"Minimum Kin Score composite (0-100), e.g. 60."
    • changedInput schema / properties / onboarding / description
      Previous value: -"Access model — how to start: open (no key), self-serve, approval. (providers only)"New value: +"open (no key) | self-serve | approval."
    • changedInput schema / properties / page / description
      Previous value: -"Page number, 1-based (default 1). Use with `limit` to walk a long list."New value: +"Page number, 1-based (default 1)."
    • changedInput schema / properties / platform / description
      Previous value: -"Providers running on these platform vendors, by registry key or catalog slug (mintlify, readme, gitbook, redocly, apigee, kong, cloudflare, vercel…). \"Who are Mintlify's customers\" = platform=mintlify; \"who runs on a competitor\" = platform=readme. Each row carries `platforms` with the evidence. Detection covers ~1,240 providers — absent means not detected, not \"none\"."New value: +"Vendor slugs, e.g. [\"mintlify\"]."
    • changedInput schema / properties / platform_area / description
      Previous value: -"Narrow `platform` (or all detected platforms) to one area: documentation, developer-portal, api-gateway, hosting, cdn, status-page, support, identity, mcp-hosting."New value: +"Platform area, e.g. hosting."
    • changedInput schema / properties / pricing / description
      Previous value: -"Access model — pricing: free, freemium, free-trial, paid, enterprise. (providers only)"New value: +"free | freemium | free-trial | paid | enterprise, e.g. [\"free\"]."
    • changedInput schema / properties / providers / description
      Previous value: -"Provider slugs to restrict results to, e.g. [\"stripe\",\"adyen\"]."New value: +"Provider slugs, e.g. [\"stripe\"]."
    • changedInput schema / properties / public / description
      Previous value: -"Only providers callable publicly with no signup (onboarding=open). (providers only)"New value: +"Callable with no signup (onboarding=open)."
    • changedInput schema / properties / publishes_api / description
      Previous value: -"true = the provider publishes at least one API (api_count > 0), including partner-gated APIs whose shape API Evangelist modeled; false = it publishes none. Product areas marked as not an API (unpublished_api_count) are not counted, so a company whose every entry is one reads false."New value: +"true = publishes an API."
    • changedInput schema / properties / q / description
      Previous value: -"Free text over name + description."New value: +"Free text over name + description, e.g. \"sms\"."
    • changedInput schema / properties / region / description
      Previous value: -"Region slugs, as find_regions returns them, e.g. [\"north-america\"]."New value: +"Region slugs, e.g. [\"north-america\"]."
    • changedInput schema / properties / resolve / description
      Previous value: -"When `q` exactly names a tag, apis.io uses it: on PROVIDERS a resource tag (order, webhook, image) replaces the text search with the companies that classify themselves there — 2,182 text matches for \"order\" become the 92 that claim it; on APIS the tag's members are ADDED to the text matches, never swapped for them. Market tags (payments) and tags almost no company claims are reported and not applied. Set `off` for pure text. The resolution is always echoed as `resolved_tag`."New value: +"on (default) uses a tag `q` names; off = text only."
    • changedInput schema / properties / revenue_band / description
      Previous value: -"Revenue band(s): <$1M | $1-10M | $10-100M | $100M-1B | $1B+. Estimates; filed where size_basis is sec-edgar or companies-house. Understanding plan."New value: +"Revenue band(s), e.g. \"$1-10M\"."
    • changedInput schema / properties / size_basis / description
      Previous value: -"Which rung produced the band: sec-edgar | companies-house | wikidata | editorial | derived | inferred | unknown. Ask for the filed ones when you need a defensible number. Understanding plan."New value: +"Size source, e.g. sec-edgar."
    • changedInput schema / properties / size_status / description
      Previous value: -"probed | unprobed. USE size_status=probed when filtering for small companies: without it, \"not enterprise\" sweeps in every provider we have not looked at yet and counts them as small. Absence of a band is not a measurement. Understanding plan."New value: +"probed | unprobed (use probed for small firms)."
    • changedInput schema / properties / sort / description
      Previous value: -"Order results. Default: relevance with a query, composite (quality) when browsing. `demand` = Fortune-1000 adoption, scoped to the query."New value: +"Default: relevance with `q`, else composite."
    • changedInput schema / properties / tags / description
      Previous value: -"Tag slugs. On PROVIDERS this is identity — what the company says it does, from its own apis.yml. A resource or operation term (webhook, saml, order, oai-pmh) will correctly match no provider; use find_apis?tags= for those, or find_providers?api_tags= to reach companies whose APIs merely touch it."New value: +"Tag slugs, e.g. [\"payments\"]. On providers: what the company does (see api_tags)."
    • changedInput schema / properties / trend / description
      Previous value: -"up | down | flat — direction of the composite since the previous scoring pass."New value: +"up | down | flat since last scoring."
    • changedInput schema / properties / try_now / description
      Previous value: -"Only providers a developer can start using at no cost right now (free/trial + self-serve/open). (providers only)"New value: +"Usable at no cost right now (free/trial + self-serve/open)."
    • changedInput schema / properties / view / description
      Previous value: -"summary (default) returns lean discovery records + *_count for dropped sections; full returns the whole record (use get_api / get_provider for one entity)."New value: +"summary (default, lean) or full."
  4. Changed9 schema fields changed
    • addedInput schema / properties / area / description
      Added value: +"Area slugs, as find_areas returns them, e.g. [\"security\"]."
    • addedInput schema / properties / artifact_types / description
      Added value: +"Artifact types an API must carry, e.g. [\"OpenAPI\",\"AsyncAPI\",\"Postman\"]. Synonyms fold (MCPServer = MCP)."
    • addedInput schema / properties / industry / description
      Added value: +"Industry slugs, as find_industries returns them, e.g. [\"artificial-intelligence\"]."
    • addedInput schema / properties / limit / description
      Added value: +"Results per page, 1-100 (default 25)."
    • addedInput schema / properties / match / description
      Added value: +"How multiple `tags` combine: \"any\" (default, at least one) or \"all\" (every tag)."
    • addedInput schema / properties / min_score / description
      Added value: +"Only providers whose Kin Score composite is at or above this, 0-100, e.g. 60."
    • addedInput schema / properties / page / description
      Added value: +"Page number, 1-based (default 1). Use with `limit` to walk a long list."
    • addedInput schema / properties / providers / description
      Added value: +"Provider slugs to restrict results to, e.g. [\"stripe\",\"adyen\"]."
    • addedInput schema / properties / region / description
      Added value: +"Region slugs, as find_regions returns them, e.g. [\"north-america\"]."
  5. Changed1 schema field changed
    • addedInput schema / properties / publishes_api
      Added value: +{
      +  "description": "true = the provider publishes at least one API (api_count > 0), including partner-gated APIs whose shape API Evangelist modeled; false = it publishes none. Product areas marked as not an API (unpublished_api_count) are not counted, so a company whose every entry is one reads false.",
      +  "type": "boolean"
      +}
  6. Changed4 schema fields changed
    • addedInput schema / properties / group
      Added value: +{
      +  "description": "estate = rank each corporate estate ONCE: keep the best-ranked member of each estate root (Cvent, Oracle, Amazon) in the order applied, and nest the other members of that estate found in this result set under it as `estate_members`, with `estate_member_count`. Rows outside any estate are unaffected. meta.query.ungrouped_total is the flat count. Off by default; every row carries `estate` and `estate_root` either way.",
      +  "enum": [
      +    "estate"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / include_narrower
      Added value: +{
      +  "description": "With `tags`: also return the members of each tag's CURATED narrower tags (the `narrower` list on get_tag — Payments under Fintech), after the tag's own members. Each added row carries `via: <narrower-tag>`. Off by default, and provider_count on the tag stays the tag's own membership; provider_count_with_narrower is this total. On a tag with senses (payments, media, supply-chain), every row is routed into a sense: it carries `sense: <tag>:<id>`, meta.query.senses counts own and added members per sense, and `sense=<tag>:<id>` with include_narrower=true (REST) reads one routed sense.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / platform
      Added value: +{
      +  "description": "Providers running on these platform vendors, by registry key or catalog slug (mintlify, readme, gitbook, redocly, apigee, kong, cloudflare, vercel…). \"Who are Mintlify's customers\" = platform=mintlify; \"who runs on a competitor\" = platform=readme. Each row carries `platforms` with the evidence. Detection covers ~1,240 providers — absent means not detected, not \"none\".",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / platform_area
      Added value: +{
      +  "description": "Narrow `platform` (or all detected platforms) to one area: documentation, developer-portal, api-gateway, hosting, cdn, status-page, support, identity, mcp-hosting.",
      +  "type": "string"
      +}
  7. Changed4 schema fields changed
    • addedInput schema / properties / employees_band
      Added value: +{
      +  "description": "Company size band(s), comma-separated: 1-10 | 11-50 | 51-200 | 201-1000 | 1001-5000 | 5000+ | 1000+ (the last is the open-ended band the inferred rung emits when it can tell \"big\" but not how big). ESTIMATES from free public sources — Wikidata, SEC EDGAR, the provider's own About page, our own signals — never a headcount. Understanding plan.",
      +  "type": "string"
      +}
    • addedInput schema / properties / revenue_band
      Added value: +{
      +  "description": "Revenue band(s): <$1M | $1-10M | $10-100M | $100M-1B | $1B+. Estimates; filed where size_basis is sec-edgar or companies-house. Understanding plan.",
      +  "type": "string"
      +}
    • addedInput schema / properties / size_basis
      Added value: +{
      +  "description": "Which rung produced the band: sec-edgar | companies-house | wikidata | editorial | derived | inferred | unknown. Ask for the filed ones when you need a defensible number. Understanding plan.",
      +  "type": "string"
      +}
    • addedInput schema / properties / size_status
      Added value: +{
      +  "description": "probed | unprobed. USE size_status=probed when filtering for small companies: without it, \"not enterprise\" sweeps in every provider we have not looked at yet and counts them as small. Absence of a band is not a measurement. Understanding plan.",
      +  "type": "string"
      +}
  8. Changed1 schema field changed
    • changedInput schema / properties / tags / description
      Previous value: -"Tag slugs. On PROVIDERS this is identity — what the company says it does, from its own apis.yml. A resource or operation term (webhook, saml, order, oai-pmh) will correctly match no provider; use find_apis?tags= for those, or api_tags below."New value: +"Tag slugs. On PROVIDERS this is identity — what the company says it does, from its own apis.yml. A resource or operation term (webhook, saml, order, oai-pmh) will correctly match no provider; use find_apis?tags= for those, or find_providers?api_tags= to reach companies whose APIs merely touch it."
  9. Changed1 schema field changed
    • addedInput schema / properties / resolve
      Added value: +{
      +  "default": "on",
      +  "description": "When `q` exactly names a tag, apis.io uses it: on PROVIDERS a resource tag (order, webhook, image) replaces the text search with the companies that classify themselves there — 2,182 text matches for \"order\" become the 92 that claim it; on APIS the tag's members are ADDED to the text matches, never swapped for them. Market tags (payments) and tags almost no company claims are reported and not applied. Set `off` for pure text. The resolution is always echoed as `resolved_tag`.",
      +  "enum": [
      +    "on",
      +    "off"
      +  ],
      +  "type": "string"
      +}
  10. Changed1 schema field changed
    • addedInput schema / properties / country
      Added value: +{
      +  "description": "Providers whose derived country membership includes these slugs (e.g. united-kingdom). Membership is partial — a count is a floor.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
  11. Changed4 schema fields changed
    • addedInput schema / properties / facet
      Added value: +{
      +  "description": "Quality facet to threshold on: discoverability, contract_quality, governance, operational_transparency, developer_ergonomics, commercial_clarity. Needs min_facet.",
      +  "type": "string"
      +}
    • addedInput schema / properties / max_score
      Added value: +{
      +  "description": "Only providers at or below this composite. Pair with min_score for a band-free range.",
      +  "type": "number"
      +}
    • addedInput schema / properties / min_facet
      Added value: +{
      +  "description": "Minimum score on `facet`. Without `facet` this does nothing.",
      +  "type": "number"
      +}
    • addedInput schema / properties / trend
      Added value: +{
      +  "description": "up | down | flat — direction of the composite since the previous scoring pass.",
      +  "type": "string"
      +}
  12. Changed2 schema fields changed
    • addedInput schema / properties / accepts_writes
      Added value: +{
      +  "description": "true = the provider has operations that ACT (create/update/send), so you can push something to it; false = measured and read-only. Use this when the question is \"where can I publish/send/post to\" — text search cannot tell direction, and without it a query about syndicating content returns RSS feeds and read-only APIs. Providers with no agentic-access reading are excluded either way: absent is unmeasured, not zero.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / min_acting
      Added value: +{
      +  "description": "Minimum number of acting (non-read) operations. Use to require real write depth rather than a single write endpoint.",
      +  "type": "integer"
      +}
  13. Changed2 schema fields changed
    • addedInput schema / properties / api_tags
      Added value: +{
      +  "description": "Providers that publish an API, spec or OPERATION carrying these tags, without claiming it as their business. The complement of `tags`, and disjoint from it.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • changedInput schema / properties / tags / description
      Previous value: -"Tag slugs."New value: +"Tag slugs. On PROVIDERS this is identity — what the company says it does, from its own apis.yml. A resource or operation term (webhook, saml, order, oai-pmh) will correctly match no provider; use find_apis?tags= for those, or api_tags below."
  14. Changed1 schema field changed
    • addedInput schema / properties / context
      Added value: +{
      +  "description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable.",
      +  "type": "string"
      +}
  15. Changed4 schema fields changed
    • addedInput schema / properties / onboarding
      Added value: +{
      +  "description": "Access model — how to start: open (no key), self-serve, approval. (providers only)",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / pricing
      Added value: +{
      +  "description": "Access model — pricing: free, freemium, free-trial, paid, enterprise. (providers only)",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / public
      Added value: +{
      +  "description": "Only providers callable publicly with no signup (onboarding=open). (providers only)",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / try_now
      Added value: +{
      +  "description": "Only providers a developer can start using at no cost right now (free/trial + self-serve/open). (providers only)",
      +  "type": "boolean"
      +}
  16. Changed4 schema fields changed
    • addedInput schema / properties / fields / description
      Added value: +"Return exactly these top-level keys (overrides view)."
    • addedInput schema / properties / sort / description
      Added value: +"Order results. Default: relevance with a query, composite (quality) when browsing. `demand` = Fortune-1000 adoption, scoped to the query."
    • addedInput schema / properties / sort / enum
      Added value: +[
      +  "relevance",
      +  "composite",
      +  "name",
      +  "created",
      +  "modified",
      +  "api_count",
      +  "demand"
      +]
    • addedInput schema / properties / view
      Added value: +{
      +  "default": "summary",
      +  "description": "summary (default) returns lean discovery records + *_count for dropped sections; full returns the whole record (use get_api / get_provider for one entity).",
      +  "enum": [
      +    "summary",
      +    "full"
      +  ],
      +  "type": "string"
      +}
  17. Changed1 schema field changed
    • addedInput schema / properties / area
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
  18. First observed

TDQS

C2.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the operation is safely understood as a scoped read. The description adds the useful structural traits (paged, sortable, filterable) and a caveat that size filters depend on an "Understanding" resource, plus a docs URI, but says nothing about result counts, totals across pages, or default behaviour of view/sort.

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

Conciseness4/5

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

Two very short sentences, front-loaded with the operation shape before the caveat. It is efficient, though the fragment "Size filters need Understanding" reads as ungrammatical shorthand and the external reference is left unexplained.

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

Completeness2/5

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

For a 40-parameter read tool with no output schema, the description is far too thin: it does not explain the summary vs full view, what a Kin Score/composite means, how paging metadata comes back, or what the provider record contains. It leans entirely on an external docs URI to fill gaps an agent may not be able to fetch.

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 description coverage is 95% across 40 parameters, so the schema itself carries nearly all semantic load and baseline 3 applies. The description's only parameter-level contribution is the opaque "Size filters need Understanding" note, which hints at a dependency for size_basis/size_status/employees_band but does not explain it.

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

Purpose3/5

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

The description says it returns a "provider list" that is paged, sortable and filterable, which is a step up from the bare name, but it never states a specific verb+scope (e.g. "search the provider catalog") and does not distinguish it from siblings such as find_similar_providers, match_providers, compare_providers or get_provider. An agent knows the shape of the response but not what corpus or selection logic makes this the right entry point.

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

Usage Guidelines2/5

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

There is no guidance on when to use this versus the many other provider-oriented siblings, no mention of required resources or pagination limits. "Size filters need Understanding" is the only conditional hint and it is too terse to act on without fetching the external reference.

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