Low Risk

get_foundation_grants

View grants made by a funder (US 990-PF + web-extracted records). Merges two stores. (1) IRS 990-PF filings — structured grant lines from the ~143K US private foundations that file 990s, keyed by EIN. (2) Web-extracted grant records — our enrichment pipeline crawls funder websites and an LLM extr...

Part of the Foundation Discovery server.

get_foundation_grants is read-only, but an agent in a loop can still rack up calls and cost. PolicyLayer caps every call before it runs. Live in minutes.

SECURE FOUNDATION DISCOVERY →

Free to start. No card required.

AI agents call get_foundation_grants to retrieve information from Foundation Discovery without modifying any data. This is common in research, monitoring, and reporting workflows where the agent needs context before taking action. Because read operations don't change state, they are generally safe to allow without restrictions -- but you may still want rate limits to control API costs.

Even though get_foundation_grants only reads data, uncontrolled read access can leak sensitive information or rack up API costs. An agent caught in a retry loop could make thousands of calls per minute. A rate limit gives you a safety net without blocking legitimate use.

Read-only tools are safe to allow by default. No rate limit needed unless you want to control costs.

policy.json
{
  "version": "1",
  "default": "deny",
  "tools": {
    "get_foundation_grants": {}
  }
}

See the full Foundation Discovery policy for all 10 tools.

Get this rule live on your own Foundation Discovery server in minutes. PolicyLayer enforces it on every call, before it runs.

ENFORCE ON MY FOUNDATION DISCOVERY →

View all 10 tools →

These attack patterns abuse exactly the kind of access get_foundation_grants gives an agent. Each links to the full case and the policy that stops it:

Browse the full MCP Attack Database →

Every attack above starts with a tool call. PolicyLayer checks each one against your policy first, so get_foundation_grants only ever does what you allow.

SECURE FOUNDATION DISCOVERY →

Other read tools across the catalogue. The same approach applies to each: allow, with a rate cap to control cost.

What does the get_foundation_grants tool do? +

View grants made by a funder (US 990-PF + web-extracted records). Merges two stores. (1) IRS 990-PF filings — structured grant lines from the ~143K US private foundations that file 990s, keyed by EIN. (2) Web-extracted grant records — our enrichment pipeline crawls funder websites and an LLM extracts their grant lists. This second store covers ~15K additional US foundations AND ~17K non-990 funders (European foundations, US community foundations, DAFs, corporate giving programs). Use this for ANY funder when the user asks about grants given, including European funders without an EIN (pass funder_id instead of ein). Each row in the response carries a source field ("990" for IRS data, "discovered_web" for crawled). When most rows for a funder lack dollar amounts (common for European funders that publish PDFs rather than open data), the response includes an amount_coverage_note in data_quality — surface that caveat in your reply. Note: recipient_country reflects the recipient organization's HQ country (where the grantee is registered), not necessarily where the program work is implemented. Args: ein: Foundation EIN (9 digits, hyphens OK). Required for US 990 path. Optional if funder_id is supplied for a non-990 funder. year: Optional year to filter by (filing_year for 990, grant_year for discovered). If not provided, returns all available years. ntee_code: Optional NTEE code to filter recipient organizations. Example: "B41" (Higher Education), "E" (Health). Use get_ntee_codes to browse available codes. recipient_country: Optional recipient country filter. Use ISO 3166-1 alpha-2 codes (e.g., "CH" Switzerland, "ZA" South Africa, "NG" Nigeria, "IN" India). Legacy FIPS 10-4 codes ("SZ", "SF", "NI") are also accepted for back-compat; output codes are emitted in ISO 3166. recipient_state: Optional 2-letter US state code to filter by recipient state (e.g., "CA", "NY"). purpose_keyword: Optional case-insensitive substring to match against the grant_purpose field. Useful for narrowing to a topic when recipient NTEE code is too coarse — e.g., purpose_keyword="vaccine" surfaces Gates grants whose purpose text mentions vaccines, even when the recipient is classified outside health (universities, think tanks, etc.). limit: Maximum number of grants to return. Default: 20, Minimum: 1, Maximum: 50 funder_id: Optional non-990 funder id. Accepts a bare UUID or prefixed id like n9f:<uuid> / non990:<uuid>. Use this for European funders, US community foundations, DAFs, and other funders that don't file IRS 990-PF. You can get it from search_funders or get_funder_profile. Returns: Dictionary containing: - ein: The normalized 9-digit EIN - foundation_name: Foundation name if found - grants_returned: Number of grants in response - grants: List of individual grants including: - recipient_name: Name of the grant recipient - grant_amount: Grant amount in dollars (raw and formatted) - grant_purpose: Stated purpose of the grant - filing_year: Tax year when grant was reported - recipient_ntee_code: NTEE code of recipient (if matched) - recipient_country: Recipient HQ country (omitted if null) - recipient_state: Recipient 2-letter US state (omitted if null) - aggregate_stats: Statistics about the returned grants: - total_amount_in_results: Sum of all grant amounts - average_grant_size: Mean grant amount - median_grant_size: Median grant amount - min/max_grant_size: Range of grant amounts - years_covered: List of filing years in results - top_recipient_ntee_codes: Most common recipient categories - query_params: The filter parameters used - note: Suggestions for related tools Examples: get_foundation_grants(ein="943136777") get_foundation_grants(ein="94-3136777", year=2023) get_foundation_grants(ein="943136777", ntee_code="B41", limit=10) get_foundation_grants(ein="562618866", recipient_country="IN", limit=10) get_foundation_grants(ein="562618866", recipient_state="CA", limit=10) get_foundation_grants(ein="562618866", purpose_keyword="vaccine", limit=10) get_foundation_grants(ein="562618866", purpose_keyword="digital health", limit=10) get_foundation_grants(funder_id="n9f:34563780-0b99-463e-89e6-7e7b634634fd", year=2024) Related tools: - get_funder_profile: Get foundation profile information - get_990_summary: Get financial trends over time - get_funder_stats: Get comprehensive giving statistics - get_ntee_codes: Browse NTEE classification codes. It is categorised as a Read tool in the Foundation Discovery MCP Server, which means it retrieves data without modifying state.

How do I enforce a policy on get_foundation_grants? +

Register the Foundation Discovery MCP server in PolicyLayer and add a rule for get_foundation_grants: allow, deny, rate-limit, or require approval. Point your MCP client at the PolicyLayer proxy URL and the rule is enforced on every call, before it reaches Foundation Discovery. Nothing to install.

What risk level is get_foundation_grants? +

get_foundation_grants is a Read tool with low risk. Read-only tools are generally safe to allow by default.

Can I rate-limit get_foundation_grants? +

Yes. Add a rate_limit block to the get_foundation_grants rule in your PolicyLayer policy. For example, setting max: 10 and window: 60 limits the tool to 10 calls per minute. Rate limits are tracked per agent session and reset automatically.

How do I block get_foundation_grants completely? +

Set action: deny in the PolicyLayer policy for get_foundation_grants. The AI agent will receive a policy violation error and cannot call the tool. You can also include a reason field to explain why the tool is blocked.

What MCP server provides get_foundation_grants? +

get_foundation_grants is provided by the Foundation Discovery MCP server (https://kindora-mcp.azurewebsites.net/mcp/). PolicyLayer sits as a proxy in front of this server to enforce policies before tool calls reach the server.

Enforce policy on every Foundation Discovery tool call.

Deterministic rules across all 10 Foundation Discovery tools. Per-identity grants. Full audit log. Live in minutes. Nothing to install.

Free to start. No card required.

4,600+ MCP servers and 31,000+ tools scanned and risk-classified.

// GET IN TOUCH

Have a question or want to learn more? Send us a message.

Message sent.

We'll get back to you soon.