Karma for AI agents
Connect Karma's Model Context Protocol server to your AI app to read projects, grants, and impact data — or take action on your behalf, when you say so.
Three concrete examples — the kind of work a Karma-connected agent can do in minutes.
Have an agent score, summarize, and surface red flags across an entire applicant pool before your review committee meets.
"Pull all open applications for Optimism Retro Funding Round 5, score them against our public-goods rubric, and surface the ten that need a human reviewer first."
Ask an agent to flag stalled milestones, summarize completed work, and draft check-in messages to grantees who have gone quiet.
"List every grant under the Filecoin program with no milestone update in 60+ days and draft a friendly check-in email for each."
Let an agent crawl Karma's Funding Map for matching programs, then draft application copy tuned to each one's evaluation criteria.
"Find every active open-source funding program with a budget over $50k. Sort by application deadline and draft an opening paragraph that matches each program's criteria."
Connect Karma to your AI app in under two minutes. No code required for individual builders — copy the URL, paste it into your client, sign in.
Every public MCP tool a Karma-connected agent can call without authentication, grouped by category. The machine-readable list lives at /.well-known/mcp-tools.json.
query_philanthropy_agentkarma_philanthropy_agent_queryRun a natural-language Karma philanthropy search for nonprofits, foundations, funders, recipients, grants, and IRS 990 data. USE WHEN: • The user asks in plain English to find nonprofits, foundations, funders, grantmakers, recipients, or grantees; for example, 'find nonprofits in the Bay Area which do education'. • The user wants Karma to interpret a philanthropy/funding research question end-to-end instead of manually choosing lower-level API endpoints. • The query needs entity search plus possible grant/990 follow-up, such as matching organizations by topic, geography, mission, assets, or giving behavior. DO NOT USE WHEN: • The user needs a specific non-philanthropy Karma product record such as a project, program, application, milestone, payout, or community; use the relevant Karma tool/API flow. • You already know the exact low-level philanthropy tool call needed and only need one deterministic lookup. Parameters: • `query`: the user request verbatim or lightly cleaned. Include geography, topic, entity type, date scope, asset bounds, and output intent when present. • `limit`: maximum number of result entities/grants the agent should try to return. • `includeEvidence`: include structured evidence rows in the JSON result. Leave false for concise answers; set true when the user asks for sources or exportable backing data. • `includeNarrative`: defaults true. Set false to omit the prose answer and return only the structured fields (entities, citations, evidence) — useful when your own agent will write the final response and just needs the data. • `dateBasis` / `year`: optional default time scope. Use only when the user stated one. Examples: • Natural-language nonprofit discovery. One call lets Karma interpret topic + geography and return matching organizations.: {"query":"find nonprofits in the Bay Area which do education","limit":10} • Foundation prospect research with structured constraints.: {"query":"small private foundations in California funding youth literacy","limit":15,"includeEvidence":true} Empty / failed: Broaden the natural-language query by removing the tightest filter first (neighborhood/city, then topic, then entity type). Do not retry the same query unchanged. Notes: • This is the MCP equivalent of POST /v2/philanthropy/agent-query/stream, returned as one JSON tool result instead of SSE.
search_karma_api_docskarma_api_search_docsSearch the Karma OpenAPI documentation for product API endpoints. Use this before calling call_karma_api when you need to find the right existing API.
get_karma_api_operationkarma_api_get_operationGet details for one Karma OpenAPI operation by operationId or by method + path.
call_karma_apikarma_api_callCall an existing Karma read API using the current user auth. Use only after checking the API docs. Existing API auth/RBAC remains the security boundary.
karma_submit_scanSubmit a nonprofit website scanner job. Before submitting, use sibling tool karma_get_scorecard_by_url to look up existing scans. After submitting, use sibling tool karma_get_scan to check progress on in-flight scans, and use sibling tool karma_list_my_scans to list owned scans. Do not use this tool to fetch an existing cached scorecard. Use karma_get_scorecard_by_url instead. Completion has two phases: config_complete at roughly 20 seconds for the headline grade, and complete at roughly 3 minutes for the full walkthrough.
karma_get_scanGet progress and a trimmed scanner scorecard by scanId. Do not use to fetch by URL; use sibling tool karma_get_scorecard_by_url for that. Do not use to fetch full evidence; use the detailUrl REST endpoint for that. For new scans use sibling tool karma_submit_scan, and use karma_list_my_scans to list owned scans.
karma_get_scorecard_by_urlFetch the most recent trimmed scanner scorecard for a URL when the URL has already been scanned. Returns cached scorecard within 24 to 72 hour TTL. Do not use this tool to run a fresh scan. Use karma_submit_scan instead. To check progress by scanId use sibling tool karma_get_scan, and use karma_list_my_scans to list owned scans.
karma_list_my_scansList scanner jobs owned by the current keyed identity with opaque cursor pagination. Use sibling tool karma_get_scan for one scan, karma_get_scorecard_by_url to fetch by already-scanned URL, and karma_submit_scan to run a fresh scan. Do not use this tool for anonymous scan history. Ask the user to sign in or create a scanner API key instead.