{"x402Version":2,"payTo":"0x4a0aed4ce878e44ef922941f2b06137bc0b69b69","resources":[{"id":12858,"slug":"12858","resource":"https://dappgrade.vercel.app/v1/score","description":"dappgrade score — pre-transaction health/safety verdict for an onchain app, by contract address. Returns ok / caution / avoid / unknown with the coverage the verdict rests on.","type":"http","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x4a0aed4ce878e44ef922941f2b06137bc0b69b69","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"10000","maxTimeoutSeconds":120}],"outputSchema":{"bazaar":{"info":{"input":{"method":"GET","queryParams":{"address":"0x6cb442acf35158d5eda88fe602221b67b400be3e","chain":"8453"},"type":"http"},"output":{"example":{"coverage":0.65,"flags":[],"freshness":{"age_seconds":25140,"checked_at":"2026-08-17T09:47:12Z","stale":false},"reasons":[{"code":"COVERAGE_BELOW_TARGET","detail":"coverage 65% < 80%"},{"code":"TIER_0_ONLY","detail":"tier-0 static checks cannot clear a dApp (§2.3)"},{"check":"trust.headers","code":"CHECK_FAILED","detail":"present: HSTS"}],"score":87,"tier":0,"verdict":"caution","verdict_reason":"coverage 65% < 80%; tier-0 static checks cannot clear a dApp (§2.3)"},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"method":{"enum":["GET"],"type":"string"},"queryParams":{"properties":{"address":{"description":"the contract address the agent is about to call","pattern":"^0x[a-fA-F0-9]{40}$","type":"string"},"chain":{"description":"EVM chain — id (8453), CAIP-2 (eip155:8453), or name (base, mainnet, arbitrum, optimism)","type":"string"}},"required":["chain","address"],"type":"object"},"type":{"const":"http","type":"string"}},"required":["type","method"],"type":"object"},"output":{"properties":{"example":{"properties":{"coverage":{"description":"0..1 fraction of the rubric that actually ran; meaningless to read score without it","type":"number"},"flags":{"items":{"type":"string"},"type":"array"},"freshness":{"description":"checked_at/age_seconds/stale. Pass max_age=<seconds> to get `unknown` + STALE_FOR_CALLER instead of an old answer — the observation still travels, so that response is billed normally. The scored fields are absent entirely (not null) on an `unknown` where we have no answer, and that one is free.","type":["object","null"]},"reasons":{"description":"stable machine-readable causes behind the verdict; see /v1/methodology → reason_codes","items":{"properties":{"check":{"description":"on CHECK_FAILED","type":"string"},"code":{"type":"string"},"detail":{"type":"string"},"flag":{"description":"on CRITICAL_FLAG","type":"string"}},"type":"object"},"type":"array"},"score":{"type":["integer","null"]},"tier":{"type":["integer","null"]},"verdict":{"description":"decision-shaped: ok = proceed, caution = hold, avoid = abort, unknown = not rated (never read as safe)","enum":["ok","caution","avoid","unknown"],"type":"string"},"verdict_reason":{"description":"prose; wording not stable — branch on reasons[].code","type":"string"}},"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"tags":["bazaar"],"sourceHost":"dappgrade.vercel.app","lastUpdated":"2026-09-14T19:56:50.006Z","quality":{"calls30d":1,"uniquePayers30d":1,"lastCalledAt":"2026-09-14T19:56:49.403Z"},"liveness":{},"verified":false,"featured":false}]}