{"uid":"cap_uhrJwks0iiaekV01TYfzV","slug":"dao-proposal-state-change-checker-2f174bac","name":"DAO Proposal State Change Checker","description":"Cheap poll: has this proposal's state changed since you last looked? You pass the state this route or GET /proposal-status gave you last time; it reads the Governor's current state and compares. Call it with no state to get a baseline. One contract read, which is why it is cheap; when it reports changed, buy GET /proposal-status for the new state, its execution_eta and what that means on this contract family. Terminal states (executed, defeated, canceled, expired) never change again -- the response says so explicitly and tells you to stop polling, because charging for a poll that can only ever answer 'unchanged' would be selling nothing. Required: dao and proposal_id. Optional: state.","url":"https://api402x.com/proposal-state-check","method":"GET","headers":{},"bodySchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["input"],"properties":{"input":{"type":"object","required":["type","method"],"properties":{"type":{"type":"string","const":"http"},"method":{"enum":["GET"],"type":"string"},"queryParams":{"type":"object","required":["dao","proposal_id"],"properties":{"dao":{"type":"string","description":"REQUIRED. DAO name from the supported list."},"state":{"type":"string","description":"OPTIONAL. The state this route returned last time. Omit to get a baseline."},"proposal_id":{"type":"string","description":"REQUIRED. Decimal proposal id from that DAO's Governor."}}}},"additionalProperties":false},"output":{"type":"object","required":["type"],"properties":{"type":{"type":"string"},"example":{"type":"object","required":["dao","proposal_id","status","state","terminal","checked_at"],"properties":{"dao":{"type":"string"},"next":{"type":["string","null"]},"state":{"type":"string"},"detail":{"type":["string","null"]},"status":{"enum":["baseline","unchanged","changed"],"type":"string"},"terminal":{"type":"boolean"},"presented":{"type":["string","null"]},"checked_at":{"type":"string","format":"date-time"},"proposal_id":{"type":"string"}},"additionalProperties":false}}}}},"responseSchema":null,"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.002","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"probe","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.002/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.002","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.002","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_CJGQVMiSEWs-WfPKabgqp","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.002","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Cheaply polls whether a DAO governance proposal's on-chain state has changed since the last check, and tells you when it's safe to stop polling.","exampleAgentPrompt":"Check if the Compound DAO proposal 123 has changed state since it was last in 'Active' — just a quick poll, not the full details.","exampleUseCases":[{"title":"Automated governance vote watcher","prompt":"Keep an eye on Uniswap DAO proposal 456 for me — last time I checked it was in 'Active' state. Let me know the moment it changes, and stop polling once it hits a terminal state like executed or defeated."},{"title":"Baseline tracking for new proposal","prompt":"I just found out about Aave DAO proposal 789 and want to start tracking it. Can you get a baseline state for it so we know where to compare from going forward?"},{"title":"Pre-execution transition detection","prompt":"Is Compound DAO proposal 55 still in 'Queued' state, or has it moved? I need to know if it's been executed so I can trigger the next step in my workflow."}],"resultDescription":"Returns a JSON object with: dao name, proposal_id, a status field (baseline, unchanged, or changed), the current on-chain state string, a terminal boolean indicating whether this state can ever change again (and if true, advice to stop polling), a checked_at ISO timestamp, an optional next field with recommended action, and an optional detail message with human-readable context.","failureModes":["Unknown or unsupported DAO name returns an error","Invalid or non-existent proposal_id returns an error","Network/RPC issues reading the Governor contract may cause transient failures","Passing a malformed state string may cause unexpected comparison results","Payment failure (x402) blocks the request before any chain read occurs"],"whenToPreferThis":"Use this endpoint when you need to efficiently monitor a DAO proposal over time without paying for full proposal detail reads on every poll cycle. It costs a single contract read ($0.002 USDC) versus the heavier GET /proposal-status, making it ideal for high-frequency polling loops. Once this endpoint reports terminal=true, it explicitly tells you to stop polling, preventing unnecessary spend. Switch to GET /proposal-status only when this endpoint reports a change and you need the full state details, execution_eta, and contextual interpretation.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-09-14T12:34:59.204Z","isFirstParty":false}