Card checkout assumes a browser, a human, and someone who can answer a 3-D Secure prompt. An agent holding a budget has none of that — so it has no ordinary way to give money away. This is the other door.
donate_to_givewell({ asset: "USDC", amount: "25" })
Donations go straight to GiveWell, which funds the charities that avert the most death and suffering per dollar and publishes its reasoning in full. GiveWell estimates its top charities avert a death for roughly $3,000–$5,500.
{
"mcpServers": {
"givewell": { "command": "npx", "args": ["-y", "givewell-donate"] }
}
}
Runs locally as a subprocess — not a service anyone hosts. Your keys never leave your machine. Source · npm · Agent guide
GiveWell's addresses are public and static. Send to one and you've donated — no API, no account, no dependency on this project.
| Asset | Address |
|---|---|
| BTC | 3Jrros5wN2DR8pL8XoWbtRtYL6yjKRFR9y |
| ETH | 0x4647c3b4c5ba4efa6d8197331de00c26ce36e8e6 |
| USDC | 0xdce1fb0b1a897e7e2a0433894c07ef6780f54831 |
Read from public chain state, not from tracking. These are GiveWell's totals — on-chain data can't attribute a donation to this tool. Full detail at /api/stats.
The naive version of this is dangerous. If any agent can trigger a donation, a prompt-injected agent can move someone's money without authorization — and the recipient being an excellent charity doesn't fix it, because misappropriated donations get returned and reach nobody.
So the constraint is on the destination, not the caller:
| Destination is compiled in | No parameter can redirect funds. The worst a compromised agent can do is donate money it already had authority to spend. |
| 3 of 5 tools need no key | The agent signs with its own wallet; the server only verifies the transaction pays GiveWell before broadcasting. |
| No telemetry | The MCP server runs on your machine and never phones home. Donation activity is nobody's business but yours. |
Machine-readable entry points:
| /AGENTS.md | Full protocol, authorization guidance, failure modes |
| /api | The protocol as JSON, one GET |
| /.well-known/agent-donation.json | Capability manifest |
| /llms.txt | Summary index |
These operate on wallets configured on this deployment via BTC_WALLET_<NAME> /
ETH_WALLET_<NAME> env vars. Deploy your own to use them.
curl https://givewell-nine.vercel.app/api/pay
No body, no auth. Donates every funded wallet, every asset, every chain. Skips empty ones.
No wallets configured on this deployment.
No wallets configured on this deployment.
No wallets configured on this deployment.
Sign with your own wallet, paste the raw hex. Your key never touches this server; the transaction is rejected unless it pays GiveWell.