Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
DRY_RUNNoWhen true, every vote tool returns the exact payload it would have submitted without signing anything. Off by default; setup writes DRY_RUN=false.false
SAFE_ADDRESSYesThe Safe smart-account wallet address the server votes as.
SAFE_API_KEYNoFree API key from developer.safe.global used by the Safe SDK's Transaction Service client. Required unless SAFE_TX_SERVICE_URL is set.
SAFE_RPC_URLYesRPC URL for the chain the Safe is deployed on.
AGENT_COMMANDNoCommand the watcher runs to decide and vote on a due proposal. Parsed into an argument list and run without a shell; supports {prompt}, {platform}, {proposalId}, {venue} and {endsAt} placeholders.
POLL_INTERVALNoHow often the watcher polls for new proposals when running continuously.1h
SAFE_CHAIN_IDYesThe chain ID the Safe is deployed on (e.g. 1 for Ethereum mainnet).
WATCH_GOVERNORSNoComma-separated Governor contract addresses the scheduler polls for open on-chain proposals.
ALLOWED_GOVERNORSNoComma-separated allowlist of Governor contract addresses. Anything else is refused before a signature is made.
GOVERNOR_LOOKBACKNoFallback log scan window for Governor forks that do not expose votingDelay and votingPeriod.
VOTE_BEFORE_CLOSENoHow long before a proposal's deadline the scheduler dispatches the agent to decide and vote.6h
SAFE_TX_SERVICE_URLNoURL of a self-hosted Safe Transaction Service, used as an alternative to SAFE_API_KEY.
SNAPSHOT_TEST_SPACENoSnapshot space that is always tested and watched so a fresh install can exercise the whole voting path. Set empty to drop it.staging.daoplomats.eth
WATCH_SNAPSHOT_AUTONoWhen true (the default), the scheduler re-resolves watched Snapshot spaces on every pass to wherever the Safe has voting power.true
WATCH_SNAPSHOT_SPACESNoComma-separated Snapshot spaces to watch explicitly, even at zero voting power.
SAFE_AGENT_PRIVATE_KEYYesPrivate key of the agent's EOA, which must be added as an owner of the Safe.
ALLOWED_SNAPSHOT_SPACESNoComma-separated allowlist of Snapshot space IDs. When set, spaces outside it are never tested, watched, or voted in.
GOVERNOR_MAX_LOG_CHUNKSNoMaximum number of eth_getLogs calls a Governor proposal scan may make before it is refused.
GOVERNOR_LOOKBACK_MARGINNoExtra time added to the Governor-derived log scan window (votingDelay + votingPeriod) when discovering on-chain proposals.
GOVERNOR_LOG_CHUNK_BLOCKSNoBlock span used per eth_getLogs call when scanning Governor ProposalCreated logs.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
prompts
{
  "listChanged": true
}
resources
{
  "listChanged": true
}
completions
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
safe_infoA

Reports the configured Safe and the agent's readiness to vote: chain, owners, threshold, nonce, both ETH balances, and whether the agent's signer key is an owner that can execute alone. The agent's own balance is what pays gas for on-chain votes; Snapshot votes are gasless and need none. Call this first.

safe_pending_transactionsA

Lists transactions queued on the Safe Transaction Service that are waiting for confirmations or execution.

safe_confirm_transactionA

Adds the agent's signature to a queued Safe transaction. When this signature meets the threshold, the transaction is executed on-chain. Use this to help along a vote that was proposed but not yet executed.

snapshot_spaces_with_voting_powerA

Finds every Snapshot space where the Safe holds voting power, without needing a list up front: it tests the configured spaces, the spaces the Safe follows, and the spaces it has voted in before. Start here when you do not know where this Safe votes.

snapshot_open_proposalsA

Lists the proposals currently open for voting across every Snapshot space the Safe holds voting power in, soonest deadline first, with the Safe's voting power on each. This is the whole of the Safe's Snapshot ballot: use it to decide what needs a vote, then snapshot_get_proposal to read one.

snapshot_queryA

Runs any GraphQL query against the Snapshot hub API — spaces, proposals, votes, follows, users, strategies, anything the schema exposes — for questions the fixed read tools do not cover (a space's full vote history, who follows it, strategy parameters, cross-space voter lookups). The tool only sends query operations — mutations and subscriptions are rejected. Use first/skip and select only the fields you need: responses over 1 MB are refused, and results over 50k characters are truncated. Schema reference: https://docs.snapshot.box.

snapshot_list_proposalsA

Lists proposals in a Snapshot space, newest first. Defaults to proposals that are currently open for voting.

snapshot_get_proposalA

Fetches a Snapshot proposal in full, including the body text, the voting system, every choice with its index, current scores, and how much voting power the Safe holds. Read this before voting.

snapshot_voting_powerA

Reports how much voting power the Safe has on a specific proposal, broken down by the space's strategies. Zero means the vote would carry no weight.

snapshot_voteA

Casts an off-chain, gasless Snapshot vote on behalf of the Safe. Signs an EIP-712 vote as a Safe message, waits for the Safe's EIP-1271 signature, then submits it to the Snapshot sequencer. Read the proposal with snapshot_get_proposal first so the choice index and voting system match. Voting again on the same proposal replaces the earlier vote.

snapshot_submit_pending_voteA

Finishes a vote whose Safe message was created earlier but not submitted, usually because the Safe needed more owner signatures. Pass the safeMessageHash reported by snapshot_vote.

snapshot_x_proposalA

Reads a Snapshot X (snapshot.box) proposal straight from its space contract: live status, the running For/Against/Abstain tally, the Safe's voting power at the proposal's snapshot block, whether the Safe already voted, and whether this Safe is the space controller that could cancel it. Use it before snapshot_x_vote or snapshot_x_cancel_proposal, and again afterwards to confirm the vote landed or the proposal shows Cancelled.

snapshot_x_voteA

Votes For, Against or Abstain on a Snapshot X (snapshot.box) proposal as the Safe. The Safe calls the space's EthTx authenticator, which forwards Space.vote with the Safe as voter — the path snapshot.box itself uses for smart-contract wallets, since a Safe cannot produce the gasless EIP-712 signature. This is an on-chain transaction: it costs gas and is final, Snapshot X does not allow changing a vote. The Safe's voting strategies are resolved automatically and the vote is simulated from the Safe before anything is signed. Read the proposal with snapshot_x_proposal first.

snapshot_x_cancel_proposalA

Cancels (vetoes) an on-chain Snapshot X proposal by proposing Space.cancel(proposalId) from the Safe — the streamlined replacement for wiring snapshot.box to the Safe over WalletConnect by hand. Only works when the Safe is the space controller. At threshold 1 the transaction executes immediately; above that it lands in the Safe queue with the exact to/data/value for the other owners to verify and sign, and the final signer's confirmation executes it.

governor_find_proposalsA

Discovers proposals by reading ProposalCreated logs straight from a Governor contract, then filtering by the contract's live state. Returns the full proposal description, so no third-party indexer is involved. This is the supported way to find on-chain proposals: Tally shut down in March 2026. Works with OpenZeppelin Governor and Compound Bravo.

governor_list_proposalsA

Legacy path: lists proposals through the Tally-compatible hosted API. Tally shut down in March 2026 and is now Cactus, so this may fail even with a key. Prefer governor_find_proposals, which reads the Governor contract directly and needs no API key.

governor_get_proposalA

Legacy path: fetches a proposal's title, description and tallies from the Tally-compatible hosted API, which shut down in March 2026. Prefer governor_find_proposals for the description and governor_proposal_state for live on-chain state; neither needs an API key.

governor_proposal_stateA

Reads the Governor contract directly: the proposal's state, whether the Safe has already voted, the Safe's voting power at the proposal's snapshot, the quorum and the running tally. Needs no API key. Call this before voting.

governor_voteA

Votes on an OpenZeppelin or Compound-style Governor by executing castVoteWithReason from the Safe. This is a real on-chain transaction that costs gas and cannot be undone or changed. Check governor_proposal_state first to confirm the proposal is Active and the Safe has voting power.

vote_logA

Returns votes this Safe has already cast through Safe-MPC, newest first, with the choice and the reason given. Read it before deciding so the Safe votes consistently with its own precedent, and to check whether a proposal has already been handled.

vote_scheduleA

Shows proposals the watcher has queued for a decision, when each is due, and which are due now. Populated by safe-mpc-watch; empty if the watcher is not running.

Prompts

Interactive templates invoked by user choice

NameDescription
vote_on_snapshot_proposalWalks through reading, judging and casting a Snapshot vote from the Safe, against the operator's configured voting policy.
vote_on_governor_proposalWalks through reading, judging and casting an on-chain Governor vote from the Safe, against the operator's configured voting policy.
vote_on_every_open_proposalFinds every Snapshot space the Safe holds voting power in, then decides and casts a vote on each proposal open there, against the operator's policy.
review_open_proposalsSurveys the open proposals in a Snapshot space — or in every space the Safe can vote in — and recommends a vote on each one, without casting anything.

Resources

Contextual data attached and managed by the client

NameDescription
payload-watchAn operating-values or precedent document the Safe's operator wrote to govern how the agent votes.

TDQS

A3.9/5.0

Scored across 21 tools

Disambiguation4/5

Most tools target a clearly distinct resource and voting path (Safe queue, Snapshot off-chain, Snapshot X on-chain, Governor). There is some potential overlap among Snapshot read tools and among the several vote-casting tools, plus legacy Governor read tools, but descriptions usually make the intended path clear.

Naming Consistency4/5

All names use snake_case and most are grouped by domain prefix (safe_, snapshot_, governor_). However, several are noun phrases rather than verb_noun, and vote_log/vote_schedule lack the domain prefix used elsewhere, so the pattern is not fully uniform.

Tool Count3/5

At 21 tools the surface is heavy, though some size is justified by supporting three different voting systems. Legacy Governor read tools and the generic snapshot_query add breadth that could likely be consolidated.

Completeness4/5

The voting lifecycle is well covered: discover spaces/proposals, inspect state and voting power, cast votes, confirm Safe transactions, and review past votes. Minor gaps remain around generic Safe transaction proposal/execution and Governor queue/execute operations, but core Safe voting workflows are supported.

Maintenance

ActivityMaintained
ResponsivenessNo issues