DOCS / SNAPSHOT DAO VOTING

Snapshot DAO voting

Yeetful · Snapshot is a paid MCP service that puts DAO governance in the chat: browse live proposals, then cast a vote your own wallet signs. The vote is an off-chain EIP-712 message — Yeetful builds it, you sign it, because Snapshot voting power is bound to your address. Pay-per-call in USDC on Base, no API key.

Browse proposals

Add Yeetful · Snapshot to your active agents and ask in plain language — "what DAO proposals are live right now?" or "show active proposals in aave.eth." The chat calls the service's list_proposals tool and answers from the live Snapshot hub. You can drill into one with get_proposal, see who voted with list_votes, or look up a space with get_space.

Cast a vote

Say how you want to vote — "vote For on aave.eth", "cast my vote against proposal 0x…", or "vote option 2." The chat resolves the proposal, then calls prepare_vote to build the canonical Snapshot EIP-712 typed data. That comes back as a Sign & cast vote button under the message.

Click it and your connected wallet signs the message — the same one-tap signature you use anywhere else, no gas, no transaction. Yeetful relays the signed vote to Snapshot and shows you a receipt linking to the proposal. Connect the wallet that holds the voting power: the button refuses to sign if the connected address doesn't match the voter baked into the message.

The part that's easy to get wrong

A Snapshot vote's choice is encoded differently per proposal type — a single number for single-choice and basic proposals, a list for approval and ranked-choice, and a weight map for weighted and quadratic. The service reads the proposal's own type and choices and builds the right shape, so "For" / "yes" / "option 2" resolve to the correct 1-indexed value without you counting options.

Why you sign, not us

Snapshot tallies votes by the signer's on-chain voting power, so a vote is only meaningful when your wallet signs it. Yeetful never holds your key and never signs on your behalf — it only constructs the message and relays the result. Your signature is the authorization; the relay carries no extra trust. It's the same principle as the rest of the expense account: Yeetful is the control plane, not the custodian.

For agents: the MCP endpoint

The same capability is a plain x402-paid MCP service your own agents can call at https://snapshot.yeetful.com/mcp — no API key, pay-per-call in USDC on Base. Seven tools:

  • list_proposals, get_proposal, list_votes, get_space, list_spaces — read DAO governance data.
  • prepare_vote — build the EIP-712 vote for the voter to sign.
  • submit_vote — relay a signed vote to the Snapshot sequencer.
POST https://snapshot.yeetful.com/mcp        // 402 → pay → 200
{
  "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": {
    "name": "prepare_vote",
    "arguments": {
      "proposal": "0x…",            // proposal id (from list_proposals)
      "from": "0xYourVoterWallet",  // the signer
      "choiceText": "For"           // or a number / "option 2" / "A, C"
    }
  }
}
// → { action: "sign_vote", typedData: { …EIP-712… }, summary, submit }
// Sign typedData with the voter's wallet, then call submit_vote.

Browse the full tool surface and pricing on the service page, or give your agent a budget for it the same way you would any other connected app — see Agents & budgets.