Skip to main content
Glama

Search Nonprofits (Grantee Benchmarking)

search_nonprofits
Read-only

Search the ~2M-org universe of US nonprofits (IRS Business Master File) — the RECIPIENT / grantee side, distinct from search_funders (the grantmaker side). Use this to benchmark peer organizations, research a cause's landscape, or find well-funded peers and then look up WHO funds them.

Each result carries 990 financials (revenue, program-expense ratio, employees, governance score) and recipient-side funding signals: total_grants_received (tracked foundation $ received), funder_count (distinct funders), avg_grant_size_received, and funder_concentration_hhi.

CHOOSING THE RIGHT TOOL:

  • Want FUNDERS to apply to → use search_funders.

  • Want to research/benchmark RECIPIENT nonprofits (peers, "who received $X", landscape of a cause) → use search_nonprofits.

  • Found a well-funded peer and want their funders → note its funder_count, then use get_foundation_grants / search_funders to find who funds that work.

THESIS MODE (funder-side sourcing): pass thesis, a plain-language description of the organizations wanted ("early-stage nonprofits using AI to expand economic mobility in the US"). The corpus is ranked by meaning instead of by name, and each row carries similarity, technology_role / ai_usage (evidence-backed enums, 'unknown' when not yet assessed), evidence (verbatim quotes + source URLs), and the organization's own Form 990 Part III text as mission_990 + programs (filing year, source link), and funded_or_vetted_by: third-party facts with attribution and a link (grants a named funder committed: count, years, total when every grant states one; challenge applications with status, where 'applicant' = applied only). unavailable_fields names any of these that could not be read for the page. Combine with ruling_date_from (yyyymm; 201800 = ruled 2018+), ntee_codes, state, metro, revenue / received bounds. Default sort in thesis mode is 'relevance'; 'legibility_counterweight' adds a bounded bonus for small or lightly funded orgs. Only organizations with a semantic profile are reachable in thesis mode; query (name match) still reaches every organization.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
cityNoCase-insensitive exact city name.
limitNoMaximum number of results (1-50)
metroNoColloquial metro/region ("Bay Area", "NYC", "Chicago", "Greater Boston") or a city name ("Cleveland", "Portland, OR") → resolved to its MSA codes. Prefer over city for metro-area intent. An unrecognized name does not error: the search runs without the metro filter and the result carries `geo_notice`.
queryNoCase-insensitive substring match on the organization name.
stateNo2-letter US state code (e.g. "IL").
thesisNoPlain-language description for thesis mode (see above).
sort_byNoOmit for the default. Lexical: received (default) | revenue | funders | name. Thesis mode: relevance (default) | legibility_counterweight | received.
ai_usageNoThesis mode filter, same enum for AI specifically. Evidence-backed.
msa_codesNoExplicit CBSA codes if you already know them.
ntee_codesNoNTEE classification PREFIXES (e.g. ["K31"] food banks, ["E"] health, ["B20"] schools). Prefix match, so "K" = all food/agriculture, "K31" = food banks specifically.
active_onlyNoOnly IRS-active orgs (default True).
max_revenueNo
min_revenueNo
max_receivedNoMaximum total received.
min_receivedNoMinimum total grant dollars RECEIVED (the key grantee-benchmarking filter — "received over $1M").
min_employeesNoMinimum employee count.
technology_roleNoThesis mode filter, subset of core | assisted | none | unknown (is technology the organization's PRODUCT?). Evidence-backed.
min_funder_countNoMinimum distinct funders.
ruling_date_fromNoThesis mode: earliest IRS ruling date as yyyymm.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed8 schema fields changed
    • addedInput schema / properties / ai_usage
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Thesis mode filter, same enum for AI specifically. Evidence-backed."
      +}
    • addedInput schema / properties / ruling_date_from
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Thesis mode: earliest IRS ruling date as yyyymm."
      +}
    • addedInput schema / properties / sort_by / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / sort_by / default
      Previous value: -"received"New value: +null
    • changedInput schema / properties / sort_by / description
      Previous value: -"received (default) | revenue | funders | name."New value: +"Omit for the default. Lexical: received (default) | revenue | funders |\nname. Thesis mode: relevance (default) | legibility_counterweight | received."
    • removedInput schema / properties / sort_by / type
      Removed value: -"string"
    • addedInput schema / properties / technology_role
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Thesis mode filter, subset of core | assisted | none | unknown\n(is technology the organization's PRODUCT?). Evidence-backed."
      +}
    • addedInput schema / properties / thesis
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Plain-language description for thesis mode (see above)."
      +}
  2. Changed1 schema field changed
    • changedInput schema / properties / metro / description
      Previous value: -"Colloquial metro/region (\"Bay Area\", \"NYC\", \"Chicago\",\n\"Greater Boston\") → resolved to its MSA codes. Prefer over city\nfor metro-area intent."New value: +"Colloquial metro/region (\"Bay Area\", \"NYC\", \"Chicago\",\n\"Greater Boston\") or a city name (\"Cleveland\", \"Portland, OR\")\n→ resolved to its MSA codes. Prefer over city for metro-area\nintent. An unrecognized name does not error: the search runs\nwithout the metro filter and the result carries `geo_notice`."
  3. Added

TDQS

Score is being calculated.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources