REST
Send Authorization: Bearer <your key> with every request. Responses are JSON.
MCP tools
Connect an MCP client to https://mcp.fundersindex.com/mcp. Every endpoint below is also a tool of the same name, with the same parameters.
Claude Code
Add the server with your key, then ask your questions in plain language.
claude mcp add --transport http funders-index https://mcp.fundersindex.com/mcp --header "Authorization: Bearer YOUR_KEY"Endpoints
list_townsList townsget_townGet a townlist_organizationsList organizationsget_organizationGet an organizationlist_organization_fundersList an organization's funderslist_fundersList fundersget_funderGet a funderlist_funder_recipientsList a funder's recipientslist_giftsList giftslist_causesList causeslist_prospectsFor one organization: funders that give verified money to its causelist_partnersOrganizations in a cause and/or town by verified track recordlist_needsOrganizations in a cause and/or town with a documented reason help would mattersearchSearch organizations by name
list_towns
List towns.
GET /api/v1/towns
Parameters
None.
Returns
A page of Town objects in items, with next_cursor when there are more. Pass it back as cursor to continue.
get_town
Get a town.
GET /api/v1/towns/:slug
Parameters
slugstring, in the pathRequiredThe town's slug, from list_towns.
Returns
One TownDetail object.
Notes
Totals count all money into the town.
Anchor institutions are large organizations assigned to the town, so their amounts can exceed a single town total.
list_organizations
List organizations.
GET /api/v1/organizations
Parameters
townstringA town slug from list_towns. Limits results to that town.
causestringA cause slug from list_causes. Limits results to that cause.
qstringText to match against names.
limitintegerRows per page. REST allows up to 500; MCP returns at most 50 and clamps a larger value to 50.
cursorstringThe next_cursor from the previous page, to continue where it left off.
Returns
A page of Organization objects in items, with next_cursor when there are more. Pass it back as cursor to continue.
get_organization
Get an organization.
GET /api/v1/organizations/:key
Parameters
keystring, in the pathRequiredThe organization's or funder's id, as returned by search and list calls.
Returns
One OrganizationDetail object.
Notes
total_received is verified money: IRS filings and government award records, in total_years only.
reported_received is money seen only in donor lists, news or organization-supplied figures, never inside a total.
reported_by_year is what the organization reported receiving on its own return, every donor, with the month its fiscal year ends.
total_received covers total_years only, while by_year lists every year, so a later year can exceed the total.
Money between affiliates is in no figure and is listed in related_party_by_year.
Each by_year point's by_source splits its amount by source (filed, government, published_list, org_supplied, news).
by_year funders counts organizations and individual_givers counts people and households, never named.
Funders counts distinct funders, organizations and individuals, in total_years (the same number list and search rows show).
Recent covers the latest single year AFTER total_years only, and is null when nothing is recorded after it.
Its dollars leave out news-reported amounts, so it can be below that year in by_year.
list_organization_funders
List an organization's funders.
GET /api/v1/organizations/:key/funders
Parameters
keystring, in the pathRequiredThe organization's or funder's id, as returned by search and list calls.
limitintegerRows per page. REST allows up to 500; MCP returns at most 50 and clamps a larger value to 50.
cursorstringThe next_cursor from the previous page, to continue where it left off.
Returns
A page of RecipientFunder objects in items, with next_cursor when there are more. Pass it back as cursor to continue.
Notes
amount_to_recipient is what THIS funder gave this organization.
Recipients is the funder's overall count.
list_funders
List funders.
GET /api/v1/funders
Parameters
townstringA town slug from list_towns. Limits results to that town.
causestringA cause slug from list_causes. Limits results to that cause.
funder_typestringA funder type, as it appears on funder records (for example a private foundation or a government agency).
qstringText to match against names.
limitintegerRows per page. REST allows up to 500; MCP returns at most 50 and clamps a larger value to 50.
cursorstringThe next_cursor from the previous page, to continue where it left off.
Returns
A page of Funder objects in items, with next_cursor when there are more. Pass it back as cursor to continue.
Notes
With a town filter, totals include anchor institutions that the town headline from get_town leaves out, so a funder can exceed the town total.
With a cause filter, totals are the funder's giving to that cause only, in the town when both are given.
get_funder
Get a funder.
GET /api/v1/funders/:key
Parameters
keystring, in the pathRequiredThe organization's or funder's id, as returned by search and list calls.
Returns
One FunderDetail object.
Notes
total_given is its verified giving INTO the region, reported_given the rest.
reported_by_year is the grants it reported paying on its own return, everywhere.
total_given covers total_years only.
by_year lists every year.
list_funder_recipients
List a funder's recipients.
GET /api/v1/funders/:key/recipients
Parameters
keystring, in the pathRequiredThe organization's or funder's id, as returned by search and list calls.
limitintegerRows per page. REST allows up to 500; MCP returns at most 50 and clamps a larger value to 50.
cursorstringThe next_cursor from the previous page, to continue where it left off.
Returns
A page of FunderRecipient objects in items, with next_cursor when there are more. Pass it back as cursor to continue.
Notes
amount_from_funder on each row is the amount from THIS funder.
Funders is the recipient's overall funder count.
list_gifts
List gifts.
GET /api/v1/gifts
Parameters
yearintegerA single year to keep.
townstringA town slug from list_towns. Limits results to that town.
causestringA cause slug from list_causes. Limits results to that cause.
funder_typestringA funder type, as it appears on funder records (for example a private foundation or a government agency).
min_amountnumberKeep gifts of at least this many dollars.
verifiedtrue or falsetrue: gifts from an IRS filing or a government award record; false: reported gifts only; omit: both
limitintegerRows per page. REST allows up to 500; MCP returns at most 50 and clamps a larger value to 50.
cursorstringThe next_cursor from the previous page, to continue where it left off.
Returns
A page of Gift objects in items, with next_cursor when there are more. Pass it back as cursor to continue.
Notes
Each says verified true/false.
A filed grant is dated by the funder's tax year, a donor-list gift by the year its list period ends.
A band counts at its floor, with amount_min and amount_max.
list_causes
List causes.
GET /api/v1/causes
Parameters
None.
Returns
A page of Cause objects in items, with next_cursor when there are more. Pass it back as cursor to continue.
list_prospects
For one organization: funders that give verified money to its cause (and have no verified gift to it yet), ranked by fit (your_size first: they fund organizations of this size; then unknown_size, larger_only, smaller_only), then open application routes, then the share of their giving in this cause.
GET /api/v1/organizations/:key/prospects
Parameters
keystring, in the pathRequiredThe organization's or funder's id, as returned by search and list calls.
limitintegerRows per page. REST allows up to 500; MCP returns at most 50 and clamps a larger value to 50.
cursorstringThe next_cursor from the previous page, to continue where it left off.
Returns
A page of Prospect objects in items, with next_cursor when there are more. Pass it back as cursor to continue.
Notes
Rankings of public records, not endorsements; a DAF sponsor is listed with approachable false.
list_partners
Organizations in a cause and/or town by verified track record (verified_received, funders, years_active): candidates a club might partner with.
GET /api/v1/partners
Parameters
causestringA cause slug from list_causes. Limits results to that cause.
townstringA town slug from list_towns. Limits results to that town.
limitintegerRows per page. REST allows up to 500; MCP returns at most 50 and clamps a larger value to 50.
cursorstringThe next_cursor from the previous page, to continue where it left off.
Returns
A page of Partner objects in items, with next_cursor when there are more. Pass it back as cursor to continue.
Notes
Pair with list_funders(cause, town) for the funders most active there.
list_needs
Organizations in a cause and/or town with a documented reason help would matter: a filing where spending exceeded revenue (gap), thin or tight months of cash, dependence on one donor, falling revenue or net assets, a lapse watch.
GET /api/v1/needs
Parameters
causestringA cause slug from list_causes. Limits results to that cause.
townstringA town slug from list_towns. Limits results to that town.
max_revenuenumberKeep organizations whose latest reported revenue is at most this, so small organizations are not buried by large shortfalls
limitintegerRows per page. REST allows up to 500; MCP returns at most 50 and clamps a larger value to 50.
cursorstringThe next_cursor from the previous page, to continue where it left off.
Returns
A page of Need objects in items, with next_cursor when there are more. Pass it back as cursor to continue.
Notes
Largest gap first, then verified money received.
Grantmakers, hospitals and pension funds are left out.
Reasons are spelled out (shortfall: the gap, its year and gap_share = gap/revenue; months_of_cash in months; donor_concentration share; revenue_trend ratio = revenue at the window's end over its start); nothing here is a score.
search
Search organizations by name.
GET /api/v1/search
Parameters
qstringRequiredText to match against names.
limitintegerRows per page. REST allows up to 500; MCP returns at most 50 and clamps a larger value to 50.
Returns
A page of Organization objects in items, with next_cursor when there are more. Pass it back as cursor to continue.
Notes
Amounts and counts cover 2020-2024.
A funder with no recipient record can appear with total_received 0.