Impact Plexus
Server Details
Find Canadian and US funders and funding opportunities from public charity and grant filings.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
TDQS
Scored across 4 tools
The four tools cleanly split by entity (funder vs. opportunity) and operation (search vs. detail/profile). There is no meaningful overlap: search tools return lists, while detail tools return a single record by slug.
All names use snake_case with a consistent entity-first pattern: funder_search, funder_profile, opportunity_search, opportunity_detail. The only minor inconsistency is calling the single-funder operation 'profile' while the analogous opportunity operation is 'detail'.
Four tools is well-scoped for a focused funding lookup server: two search tools and two single-record detail tools. Each tool has a clear, non-redundant role.
The surface covers the core read-only lifecycle for both funders and opportunities: search then retrieve details. Minor gaps remain, such as no explicit way to list all opportunities for a given funder or browse available filter values, but the main lookup workflows are supported.
Available Tools
4 toolsfunder_profileGet public funder profileARead-onlyIdempotentInspect
Return one funder's plain-language profile, computed from active global observations. Each fact carries its public source name and the date it was last verified.
| Name | Required | Description | Default |
|---|---|---|---|
| funder_slug | Yes | Public URL slug from a funder_search result. Not an internal database identifier. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| slug | Yes | |
| facts | Yes | |
| summary | Yes | Plain-language narrative only. |
| geography | Yes | |
| size_band | Yes | Average annual giving over the last five reported years, in the funder's reporting currency. small is under 100,000; medium is 100,000 to 1,000,000; large is over 1,000,000; unknown means no public giving figure. Band limits are proposed and must be confirmed before G0 freeze. |
| cause_areas | Yes | |
| website_url | Yes | The funder's own website, if public. |
| jurisdiction | Yes | |
| region_codes | Yes | |
| source_names | Yes | |
| last_verified_date | Yes | Most recent verification date across the facts shown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and closed-world behavior, so the safety profile is covered. The description adds real context beyond that: facts are computed from active observations and each carries a public source name and last-verified date, which tells the agent what the returned data represents. Missing: behavior for an unknown slug.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler, and the core identity of the tool is front-loaded before the provenance detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and the annotations carry the safety profile. What remains unstated is edge-case behavior (nonexistent or non-public slug result), a minor gap for an otherwise well-covered read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of the single parameter, including the important note that funder_slug is a public URL slug rather than an internal id. The description adds nothing further about the parameter, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Return one funder's plain-language profile.' The singular 'one funder' implicitly separates it from the sibling funder_search, though no sibling is named explicitly, leaving differentiation to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the phrase 'one funder's profile' suggests a follow-up lookup after searching, but the description never states when to use this versus funder_search or opportunity_detail. The routing hint ('from a funder_search result') lives only in the schema, not the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
funder_searchSearch public fundersARead-onlyIdempotentInspect
Find funders by jurisdiction, cause area, size band and region. Results are ordered by how much each funder has given toward the requested cause and region in its recent public filings: larger, steadier and more widely giving funders first; funders that give mostly to one recipient or to their own related organizations, and donation platforms that pass donors' directed gifts through, come later; ties by name, then slug. This orders public giving records; it is not a fit assessment for any organization. Use the slug of a result with funder_profile to read the full profile.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, starting at 1. | |
| page_size | No | Results per page, 1 to 50. | |
| size_band | No | Funder size by average annual giving over the last five reported years. See the SizeBand schema for band limits. | |
| cause_area | No | Canonical cause area. Values match the platform taxonomy (core/cra_to_canonical.py, core/ntee_to_canonical.py). | |
| region_code | No | ISO 3166-2 province or state code, for example CA-ON or US-WA. Matches funders and opportunities that serve that region, including national ones. | |
| jurisdiction | No | Country of operation or grantmaking (CA or US). |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| pagination | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the safety profile (readOnly/idempotent/non-destructive), and the description goes well beyond that with the ranking model: giving volume toward the requested cause and region, tie-breaks by name then slug, and explicit deprioritization of single-recipient givers, related-organization funders and pass-through donation platforms. That ranking behavior is not derivable from the schema or annotations and materially affects how an agent should present results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, each doing distinct work: purpose, ranking and tie-break logic, scope limitation, and handoff. Front-loaded with the capability before the ordering detail, with no restatement of the name or title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, and the description covers the remaining unknowns an agent needs: how results are ordered, what that ordering does and does not mean, and how to continue into funder_profile. Nothing required to call or interpret the tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds non-obvious semantics: cause_area and region_code do not merely filter, they drive the relevance ordering. It does not clarify that all six parameters are optional and that omitting them yields an unfiltered ranked list, which would have earned a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource plus the exact filter dimensions ('Find funders by jurisdiction, cause area, size band and region'), which immediately separates it from funder_profile and opportunity_search. The closing sentence makes the sibling relationship explicit by naming funder_profile as the retrieval step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear on when to use it (filtering the funder corpus) and explicitly bounds interpretation with 'it is not a fit assessment for any organization', plus a concrete next step via funder_profile with the returned slug. No guidance on how it relates to opportunity_search or why one would pick it over a profile lookup, so it stops short of full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
opportunity_detailGet public opportunity detailsARead-onlyIdempotentInspect
Return one opportunity: plain-language eligibility, deadline, and a link to the funder's own page.
| Name | Required | Description | Default |
|---|---|---|---|
| opportunity_slug | Yes | Public URL slug from an opportunity_search result. Not an internal database identifier. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| slug | Yes | |
| status | Yes | |
| summary | Yes | Plain-language narrative only. |
| deadline | Yes | Next fixed deadline. Null when deadline_type is rolling or unknown. |
| geography | Yes | |
| source_url | Yes | The funder's own page for this opportunity. |
| cause_areas | Yes | |
| funder_name | Yes | |
| funder_slug | Yes | Slug for funder_profile, or null when the funder has no public profile. |
| jurisdiction | Yes | |
| region_codes | Yes | |
| source_names | Yes | |
| deadline_type | Yes | |
| last_verified_date | Yes | |
| eligibility_summary | Yes | Plain-language eligibility, not an inferred fit score. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds only a light content summary (eligibility, deadline, funder link), which largely duplicates the output schema rather than adding traits like missing-record behavior or whether the link is external.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no filler, front-loaded with the verb and resource and finishing with the returned fields. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter read tool with full annotations and an output schema, this is close to sufficient — the agent knows it reads one record safely. The missing piece is an explicit pointer that the slug must come from a prior search call, though the schema covers it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema already explains the slug format, provenance, and that it is not an internal identifier. The description contributes nothing about the parameter, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Return one opportunity') and enumerates what comes back: eligibility, deadline, funder link. It implies single-record lookup versus the list-oriented opportunity_search sibling, but never names that sibling to make the distinction explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only weakly implied — 'one opportunity' signals lookup rather than search, but there is no statement of when to prefer it over opportunity_search or funder_profile. The key prerequisite (obtain the slug from a prior opportunity_search result) appears only in the schema's parameter description, not in the tool description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
opportunity_searchSearch public opportunitiesARead-onlyIdempotentInspect
Find open and upcoming opportunities by jurisdiction, cause area, region and deadline. Ordered by deadline (soonest first, rolling and unknown deadlines last), then name, then slug. Results are not ranked against an organization. Use the slug of a result with opportunity_detail.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, starting at 1. | |
| status | No | Restrict to opportunities that are open now or announced as upcoming. Omit for both. | |
| page_size | No | Results per page, 1 to 50. | |
| cause_area | No | Canonical cause area. Values match the platform taxonomy (core/cra_to_canonical.py, core/ntee_to_canonical.py). | |
| region_code | No | ISO 3166-2 province or state code, for example CA-ON or US-WA. Matches funders and opportunities that serve that region, including national ones. | |
| jurisdiction | No | Country of operation or grantmaking (CA or US). | |
| deadline_after | No | Only opportunities with a fixed deadline on or after this date (YYYY-MM-DD). | |
| deadline_before | No | Only opportunities with a fixed deadline on or before this date (YYYY-MM-DD). | |
| include_rolling | No | Include opportunities with rolling or unpublished deadlines. Ignored when a deadline filter is set. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| pagination | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and closed-world, so safety is covered. The description adds genuinely new behavioural detail that annotations cannot: an exact deterministic sort order (deadline soonest-first with rolling/unknown last, then name, then slug). It does not describe pagination limits or result-count behaviour, which would have completed the picture.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly packed sentences, front-loaded with purpose and filters before the ordering and hand-off details. Nothing is repeated and every clause carries operational information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a fully documented 9-parameter schema, an output schema, and complete annotations, the description covers the remaining gaps an agent needs: resource scope, sort determinism, and the slug hand-off to opportunity_detail. Nothing required for a correct call is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each parameter is already documented with enums, defaults, formats and even the include_rolling/deadline-filter interaction. The description echoes the filter set but adds no syntax, format or edge-case meaning beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Find open and upcoming opportunities') and enumerates the filter dimensions (jurisdiction, cause area, region, deadline). It is clearly distinct from the funder-oriented siblings and names opportunity_detail as the natural follow-up, so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use the slug of a result with opportunity_detail' gives an explicit next-step routing rule, and 'Results are not ranked against an organization' clarifies this is a catalogue search, not a personalized match. It stops short of stating when *not* to use it (e.g., searching funders), but the resource split is obvious from the sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
- First observed
funder_profile - First observed
funder_search - First observed
opportunity_detail - First observed
opportunity_search
Related MCP Connectors
Search public US grants and foundation profiles from IRS filings. Read-only, no sign-in.
41Foundation discovery and grant intelligence for nonprofits. 174K+ US funders, IRS 990 data.
Search U.S. federal grants and EU funding topics; monitor changes and download snapshots.
Search 1,300+ live Canadian funding opportunities — grants, tax credits, accelerators, and loans.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceSearch and explore 1.8M+ US nonprofits, fetch Form 990 financials, and access IRS filing history via MCP.234 npm2Apache 2.0
- AlicenseNot gradedqualityAmaintenanceRead one exact U.S. federal grant opportunity next to its official record with seven MCP tools for cited documents, requirements, amendments, hard gates, award history, and unresolved evidence. Independent UtilityHouse product; limited free beta.MIT
- AlicenseNot gradedqualityBmaintenanceEnables asking questions in natural language about live grants.gov funding opportunities, with tools to find, filter, check eligibility, track deadlines, and rank matches—while refusing to guess when data is unavailable.MIT
- AlicenseNot gradedqualityAmaintenanceEnables searching US federal funding opportunities across all agencies, reading full grant records with eligibility, award amounts, deadlines, and NOFO attachments, and decoding filter codes via keyless access to Grants.gov.201 npm2Apache 2.0
Glama MCP Gateway
Add one secure layer between your agents and this server.