{"components":{"schemas":{"Attestation":{"properties":{"block":{"minimum":0,"type":["integer","null"]},"chain":{"enum":["Solana","RobinhoodChain","Base","Ethereum","Bnb"],"type":"string"},"checked_at":{"format":"date-time","type":"string"},"dev":{"type":"boolean"},"expires_at":{"format":"date-time","type":"string"},"id":{"pattern":"^[0-9a-fA-F]{64}$","type":"string"},"issuer":{"type":["string","null"]},"pool":{"type":"object"},"quote_share_of_supply":{"type":["number","null"]},"reads":{"items":{"$ref":"#/components/schemas/ObservedRead"},"type":"array"},"registry_entry":{"type":["object","null"]},"registry_hash":{"type":"string"},"signature":{"contentEncoding":"base64","type":"string"},"signer":{"type":"string"},"slot":{"minimum":0,"type":["integer","null"]},"subject":{"type":"string"},"ticker":{"type":["string","null"]},"verdict":{"type":"object"},"version":{"const":1,"type":"integer"}},"required":["id","version","chain","subject","verdict","issuer","ticker","pool","quote_share_of_supply","registry_entry","registry_hash","reads","block","slot","checked_at","expires_at","signer","signature","dev"],"type":"object"},"GuardDocument":{"description":"Signed point-in-time review. The OpenAPI example uses schematic signature placeholders; verify live documents with POST /verify.","properties":{"address":{"type":"string"},"chain":{"enum":["Solana","RobinhoodChain","Base","Ethereum","Bnb"],"type":"string"},"dev":{"type":"boolean"},"id":{"pattern":"^[0-9a-fA-F]{64}$","type":"string"},"identity":{"$ref":"#/components/schemas/GuardIdentity"},"kind":{"const":"guard","type":"string"},"observed_at":{"format":"date-time","type":"string"},"pools":{"items":{"$ref":"#/components/schemas/GuardPool"},"type":"array"},"powers":{"oneOf":[{"$ref":"#/components/schemas/PowersRecord"},{"type":"null"}]},"public_key":{"description":"Base58 Ed25519 public key.","type":"string"},"reads":{"items":{"$ref":"#/components/schemas/ObservedRead"},"type":"array"},"reads_truncated":{"type":"boolean"},"reasons":{"items":{"$ref":"#/components/schemas/GuardReason"},"type":"array"},"signature":{"contentEncoding":"base64","type":"string"},"source":{"$ref":"#/components/schemas/GuardSource"},"subject_address":{"type":["string","null"]},"subject_type":{"enum":["token","pool"],"type":"string"},"verdict":{"enum":["allow","deny","unknown"],"type":"string"},"wallet":{"type":["string","null"]},"wallet_check":{"oneOf":[{"$ref":"#/components/schemas/GuardWalletCheck"},{"type":"null"}]}},"required":["id","kind","chain","address","subject_type","subject_address","wallet","identity","powers","source","pools","verdict","reasons","observed_at","reads","reads_truncated","public_key","signature","dev"],"type":"object"},"GuardIdentity":{"properties":{"candidate":{"oneOf":[{"$ref":"#/components/schemas/GuardIdentityCandidate"},{"type":"null"}]},"matched_contract":{"type":["string","null"]},"publisher":{"type":["string","null"]},"status":{"enum":["match","mismatch","no_publisher","registry_stale","registry_removed"],"type":"string"},"ticker":{"type":["string","null"]}},"required":["publisher","matched_contract","ticker","status"],"type":"object"},"GuardIdentityCandidate":{"properties":{"name":{"type":"string"},"publisher":{"type":"string"},"ticker":{"type":"string"}},"required":["publisher","ticker","name"],"type":"object"},"GuardPool":{"properties":{"address":{"type":"string"},"observed_at":{"format":"date-time","type":["string","null"]},"quote":{"$ref":"#/components/schemas/GuardQuote"},"venue":{"type":"string"},"verdict":{"type":"string"}},"required":["address","venue","quote","verdict","observed_at"],"type":"object"},"GuardQuote":{"properties":{"address":{"type":"string"},"symbol":{"type":["string","null"]}},"required":["address","symbol"],"type":"object"},"GuardReason":{"properties":{"code":{"enum":["publisher_contract_match","publisher_contract_mismatch","name_resembles_registry_entry","publisher_metadata_unavailable","no_publisher","registry_stale","registry_removed","token_paused","powers_incomplete","powers_unavailable","wallet_check_not_applicable","wallet_check_unavailable","wallet_frozen","wallet_blocked","wallet_sanctioned","source_unverified","source_unavailable","pool_unavailable"],"type":"string"},"detail":{"type":"string"}},"required":["code","detail"],"type":"object"},"GuardSource":{"properties":{"provider":{"type":"string"},"status":{"enum":["verified","unverified","unavailable"],"type":"string"}},"required":["status","provider"],"type":"object"},"GuardWalletCheck":{"properties":{"restrictions":{"items":{"$ref":"#/components/schemas/GuardReason"},"type":"array"},"status":{"enum":["checked","not_applicable","unavailable"],"type":"string"}},"required":["status","restrictions"],"type":"object"},"JsonRpcErrorResponse":{"properties":{"error":{"properties":{"code":{"type":"integer"},"message":{"type":"string"}},"required":["code","message"],"type":"object"},"id":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"null"}]},"jsonrpc":{"const":"2.0"}},"required":["jsonrpc","error"],"type":"object"},"JsonRpcNotification":{"properties":{"jsonrpc":{"const":"2.0"},"method":{"type":"string"},"params":{"type":"object"}},"required":["jsonrpc","method"],"type":"object"},"JsonRpcRequest":{"example":{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"ticker":"NVDA"},"name":"qed_registry_lookup"}},"properties":{"id":{"oneOf":[{"type":"string"},{"type":"number"}]},"jsonrpc":{"const":"2.0"},"method":{"type":"string"},"params":{"type":"object"}},"required":["jsonrpc","id","method"],"type":"object"},"JsonRpcResponse":{"oneOf":[{"$ref":"#/components/schemas/JsonRpcResultResponse"},{"$ref":"#/components/schemas/JsonRpcErrorResponse"}]},"JsonRpcResultResponse":{"example":{"id":1,"jsonrpc":"2.0","result":{"content":[{"text":"Found 4 active issuer registry entries for NVDA.","type":"text"}],"isError":false,"structuredContent":{"entries":[{"chain":"Bnb","contract":"0xc845b2894dBddd03858fd2D643B4eF725fE0849d","decimals":null,"issuer":"Backed xStocks","last_checked":"2026-09-22T21:26:41Z","name":"NVIDIA","source":"xstocks-api","source_url":"https://api.xstocks.fi/api/v2/public/assets","ticker":"NVDA"},{"chain":"Ethereum","contract":"0xc845b2894dBddd03858fd2D643B4eF725fE0849d","decimals":null,"issuer":"Backed xStocks","last_checked":"2026-09-22T21:26:41Z","name":"NVIDIA","source":"xstocks-api","source_url":"https://api.xstocks.fi/api/v2/public/assets","ticker":"NVDA"},{"chain":"Solana","contract":"Xsc9qvGR1efVDFGLrVsmkzv3qi45LTBjeUKSPmx9qEh","decimals":null,"issuer":"Backed xStocks","last_checked":"2026-09-22T21:26:41Z","name":"NVIDIA","source":"xstocks-api","source_url":"https://api.xstocks.fi/api/v2/public/assets","ticker":"NVDA"},{"chain":"RobinhoodChain","contract":"0xd0601CE157Db5bdC3162BbaC2a2C8aF5320D9EEC","decimals":18,"issuer":"Robinhood","last_checked":"2026-09-22T21:26:52Z","name":"NVIDIA","source":"robinhood-registry","source_url":"https://api.robinhood.com/rhj/assets","ticker":"NVDA"}],"ticker":"NVDA"}}},"properties":{"id":{"oneOf":[{"type":"string"},{"type":"number"}]},"jsonrpc":{"const":"2.0"},"result":{"description":"MCP CallToolResult; qed_guard structuredContent is a GuardDocument, qed_powers is a PowersRecord for one match or an object with records (PowersRecordSet) for multiple matches, and qed_statement returns a Statement.","properties":{"content":{"items":{"type":"object"},"type":"array"},"isError":{"type":"boolean"},"structuredContent":{"description":"Tool-specific structured JSON; see GuardDocument for qed_guard, PowersRecord and PowersRecordSet for qed_powers, and Statement for qed_statement."}},"type":"object"}},"required":["jsonrpc","id","result"],"type":"object"},"McpServerCard":{"properties":{"description":{"type":"string"},"name":{"type":"string"},"readOnly":{"const":true,"type":"boolean"},"readOnlyStatement":{"type":"string"},"remotes":{"items":{"properties":{"type":{"const":"streamable-http"},"url":{"format":"uri","type":"string"}},"required":["type","url"],"type":"object"},"type":"array"},"repository":{"format":"uri","type":"string"},"serverInfo":{"properties":{"name":{"type":"string"},"version":{"type":"string"}},"required":["name","version"],"type":"object"},"tools":{"items":{"properties":{"description":{"type":"string"},"name":{"type":"string"},"title":{"type":"string"}},"required":["name","title","description"],"type":"object"},"type":"array"},"website":{"format":"uri","type":"string"}},"required":["name","description","serverInfo","remotes","tools","website","repository","readOnly","readOnlyStatement"],"type":"object"},"ObservedRead":{"properties":{"block":{"minimum":0,"type":["integer","null"]},"method":{"type":"string"},"params":{},"raw_result":{},"result_hash":{"type":"string"},"slot":{"minimum":0,"type":["integer","null"]}},"required":["method","params","result_hash","block","slot"],"type":"object"},"PowerReason":{"properties":{"code":{"type":"string"},"detail":{"type":"string"}},"required":["code","detail"],"type":"object"},"PowersRecord":{"properties":{"block":{"minimum":0,"type":["integer","null"]},"can_block":{"items":{"$ref":"#/components/schemas/PowerReason"},"type":"array"},"can_change_rules":{"items":{"$ref":"#/components/schemas/PowerReason"},"type":"array"},"can_seize":{"items":{"$ref":"#/components/schemas/PowerReason"},"type":"array"},"chain":{"enum":["Solana","RobinhoodChain","Base","Ethereum","Bnb"],"type":"string"},"contract":{"type":"string"},"observed_at":{"format":"date-time","type":"string"},"reads":{"items":{"$ref":"#/components/schemas/ObservedRead"},"type":"array"},"sanctions_list":{"description":"Configured sanctions-list oracle used for wallet checks.","type":["string","null"]},"slot":{"minimum":0,"type":["integer","null"]},"source_verified":{"enum":["exact_match","match","none","unavailable"],"type":"string"},"source_verified_proxy":{"description":"Separate Sourcify source status for an EVM proxy, when applicable.","enum":["exact_match","match","none","unavailable"],"type":"string"},"source_verified_subject":{"description":"OSEC verifies the Solana Token-2022 token-program build; Sourcify checks EVM contract source or a proxy's resolved implementation.","enum":["token_program","contract","implementation"],"type":"string"},"token_paused":{"description":"Observed token-wide pause; absent when the chain does not expose this fact or the read is unavailable.","type":["boolean","null"]},"unavailable":{"items":{"$ref":"#/components/schemas/PowerReason"},"type":"array"}},"required":["chain","contract","can_seize","can_block","can_change_rules","unavailable","source_verified_subject","source_verified","observed_at","block","slot","reads"],"type":"object"},"PowersRecordSet":{"properties":{"records":{"items":{"$ref":"#/components/schemas/PowersRecord"},"type":"array"}},"required":["records"],"type":"object"},"Statement":{"properties":{"assets":{"items":{"$ref":"#/components/schemas/StatementAsset"},"type":"array"},"block":{"minimum":0,"type":["integer","null"]},"dev":{"type":"boolean"},"id":{"description":"SHA-256 of the canonical signed payload.","pattern":"^[0-9a-f]{64}$","type":"string"},"kind":{"const":"statement","description":"Signed document type.","type":"string"},"observed_at":{"format":"date-time","type":"string"},"positions":{"items":{"$ref":"#/components/schemas/StatementPosition"},"type":"array"},"reads":{"items":{"$ref":"#/components/schemas/ObservedRead"},"type":"array"},"reads_truncated":{"description":"True when the read log reached its 256-entry cap.","type":"boolean"},"signature":{"contentEncoding":"base64","type":"string"},"signer":{"description":"Base58 Ed25519 public key.","type":"string"},"version":{"const":1,"type":"integer"},"wallets":{"items":{"$ref":"#/components/schemas/StatementWallet"},"type":"array"}},"required":["id","kind","version","wallets","assets","positions","block","observed_at","reads","reads_truncated","signer","signature","dev"],"type":"object"},"StatementAsset":{"properties":{"balance":{"description":"Raw on-chain token units; apply decimals separately.","pattern":"^[0-9]+$","type":"string"},"chain":{"enum":["Solana","RobinhoodChain","Base","Ethereum","Bnb"],"type":"string"},"contract":{"type":"string"},"decimals":{"maximum":255,"minimum":0,"type":"integer"},"issuer":{"type":"string"},"issuer_match":{"type":"boolean"},"powers_block":{"minimum":0,"type":"integer"},"powers_observed_at":{"format":"date-time","type":"string"},"powers_slot":{"minimum":0,"type":"integer"},"powers_summary":{"$ref":"#/components/schemas/StatementPowersSummary"},"slot":{"minimum":0,"type":["integer","null"]},"ticker":{"type":"string"},"wallet":{"type":"string"}},"required":["wallet","chain","contract","ticker","issuer","issuer_match","balance","decimals","slot","powers_summary"],"type":"object"},"StatementPosition":{"properties":{"block":{"minimum":0,"type":["integer","null"]},"chain":{"enum":["Solana","RobinhoodChain","Base","Ethereum","Bnb"],"type":"string"},"max_slot":{"minimum":0,"type":["integer","null"]},"min_slot":{"minimum":0,"type":["integer","null"]},"wallet":{"type":"string"}},"required":["chain","wallet","block","min_slot","max_slot"],"type":"object"},"StatementPowersSummary":{"properties":{"can_block":{"items":{"$ref":"#/components/schemas/PowerReason"},"type":"array"},"can_change_rules":{"items":{"$ref":"#/components/schemas/PowerReason"},"type":"array"},"can_seize":{"items":{"$ref":"#/components/schemas/PowerReason"},"type":"array"},"unavailable":{"items":{"$ref":"#/components/schemas/PowerReason"},"type":"array"}},"required":["can_seize","can_block","can_change_rules","unavailable"],"type":"object"},"StatementRequest":{"properties":{"block":{"description":"Optional exact EVM block; for Solana this is a minimum context slot.","minimum":0,"type":["integer","null"]},"chains":{"items":{"enum":["solana","robinhood","base","ethereum","bnb"],"type":"string"},"maxItems":5,"minItems":1,"type":"array","uniqueItems":true},"wallets":{"items":{"type":"string"},"maxItems":32,"minItems":1,"type":"array"}},"required":["wallets","chains"],"type":"object"},"StatementWallet":{"properties":{"address":{"type":"string"},"chain":{"enum":["Solana","RobinhoodChain","Base","Ethereum","Bnb"],"type":"string"}},"required":["chain","address"],"type":"object"},"VerifyResult":{"properties":{"cryptographic":{"type":"boolean"},"environment_match":{"type":"boolean"},"fresh":{"description":"Null for statements and Guards, which do not have an attestation expiry check.","type":["boolean","null"]},"id":{"type":"string"},"kind":{"enum":["attestation","statement","guard"],"type":"string"},"ok":{"type":"boolean"},"trusted_signer":{"type":"boolean"}},"required":["ok","kind","id","cryptographic","trusted_signer","environment_match","fresh"],"type":"object"}}},"info":{"description":"QED checks tokens that claim to be something against the contract their issuer publishes. Read-only pool checks, signed attestations, registry data, token-power observations, and verification metadata.","title":"QED verification API","version":"1.0.0"},"openapi":"3.1.0","paths":{"/.well-known/mcp/server-card.json":{"get":{"responses":{"200":{"content":{"application/json":{"example":{"description":"QED is read-only by design: it never holds keys, never submits transactions, and never recommends. It compares token and pool facts with issuer publications. It does not prove backing, custody, reserves, solvency, safety, price, liquidity, or endorsement.","name":"QED","readOnly":true,"readOnlyStatement":"QED is read-only by design: it never holds keys, never submits transactions, and never recommends.","remotes":[{"type":"streamable-http","url":"https://qed.web3-energy.com/mcp"}],"repository":"https://github.com/boev/qed","serverInfo":{"name":"QED","version":"0.1.0"},"tools":[{"description":"Check whether a pool or token address matches an issuer's published stock-token contract, for tokens that claim to be something. It does not prove backing, custody, reserves, solvency, safety, price, liquidity, or endorsement.","name":"qed_check","title":"Check issuer contract match"},{"description":"Create a signed QED Guard review for supported-chain tokens and pool addresses validated by the known-pool index or on-chain factory/derivation checks; unindexed Solana accounts are reviewed as tokens. The review includes issuer identity, token powers, source status, and known pool facts. QED never holds keys, submits transactions, or recommends. It does not prove backing, custody, reserves, solvency, safety, price, liquidity, or endorsement.","name":"qed_guard","title":"Review a token or pool"},{"description":"Read token authority settings and source-verification status for any supported-chain token contract; an optional chain selects one network, otherwise QED detects the chain or reads matching registry entries. It does not prove backing, custody, reserves, solvency, safety, price, liquidity, or endorsement.","name":"qed_powers","title":"Read token powers"},{"description":"Read stock-token holdings for a wallet address. It does not prove backing, custody, reserves, solvency, safety, price, liquidity, or endorsement.","name":"qed_wallet","title":"Read wallet holdings"},{"description":"Look up active issuer registry contracts for a ticker. It does not prove backing, custody, reserves, solvency, safety, price, liquidity, or endorsement.","name":"qed_registry_lookup","title":"Look up issuer contracts"},{"description":"Verify a signed attestation, wallet statement, or Guard document, including signature, trusted signer, environment and freshness where applicable. It does not prove backing, custody, reserves, solvency, safety, price, liquidity, or endorsement.","name":"qed_verify","title":"Verify QED certificate"},{"description":"Sign registry-token balances observed for a selected wallet set and chain set. Balances are on-chain facts at a height, not ownership, solvency or reserves. It does not prove backing, custody, reserves, solvency, safety, price, liquidity, or endorsement.","name":"qed_statement","title":"Create a signed wallet statement"}],"website":"https://qed.web3-energy.com"},"schema":{"$ref":"#/components/schemas/McpServerCard"}}},"description":"Read-only MCP server and tool summary"}},"summary":"MCP server card"}},"/.well-known/qed.json":{"get":{"responses":{"200":{"content":{"application/json":{"example":{"algorithm":"Ed25519","dev":false,"key":"GmaDrppBC7P5ARKV8g3djiwP89vz1jLK23V2GBjuAEGB","name":"QED","public_key":"GmaDrppBC7P5ARKV8g3djiwP89vz1jLK23V2GBjuAEGB","version":1},"schema":{"type":"object"}}},"description":"Ed25519 key metadata"}},"summary":"Public verification key"}},"/api/attest/{id}":{"get":{"parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"^[0-9a-fA-F]{64}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"block":null,"chain":"Base","checked_at":"2026-01-01T00:00:00Z","dev":false,"expires_at":"2099-01-01T00:00:00Z","id":"0e9596ff7ba53868e82291934a69a14cc67b3f1cd8625b87013199e128533ffc","issuer":null,"pool":{"base":{"address":"0x0000000000000000000000000000000000000002","balance":"1","decimals":18,"symbol":"xNVDA"},"chain":"Base","dex":"uniswap-v2","pool":"0x0000000000000000000000000000000000000001","quote":{"address":"0x0000000000000000000000000000000000000003","balance":"2","decimals":6,"symbol":"USDG"}},"quote_share_of_supply":0.2,"reads":[],"registry_entry":null,"registry_hash":"","signature":"84oE823lfrGrxsjGsYTBf+e+SeKeBcMJfZc5KM73U4vHgfz2JQmKw0rBPYU5Y2OGPkSuasG4n2KYOjGmxy+JDA==","signer":"GmaDrppBC7P5ARKV8g3djiwP89vz1jLK23V2GBjuAEGB","slot":null,"subject":"0x0000000000000000000000000000000000000001","ticker":null,"verdict":"NoMatch","version":1},"schema":{"$ref":"#/components/schemas/Attestation"}}},"description":"Attestation JSON"},"404":{"description":"Not found"}},"summary":"Fetch a signed attestation"}},"/api/check/{address}":{"get":{"parameters":[{"in":"path","name":"address","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"attestation_id":null,"chain":"Base","checked_at":"2026-01-01T00:00:00Z","evidence":[],"input":"0x0000000000000000000000000000000000000001","pool":{"base":{"address":"0x0000000000000000000000000000000000000002","balance":"1","decimals":18,"symbol":"xNVDA"},"chain":"Base","dex":"uniswap-v2","pool":"0x0000000000000000000000000000000000000001","quote":{"address":"0x0000000000000000000000000000000000000003","balance":"2","decimals":6,"symbol":"USDG"}},"powers":null,"quote_share_of_supply":0.2,"verdict":"NoMatch"},"schema":{"type":"object"}}},"description":"Check result"}},"summary":"Check a pool or token"}},"/api/guard":{"post":{"description":"The request body may include a wallet for an active restriction check. POST keeps the wallet out of the request URL; use this instead of the legacy GET query when possible. Pool identity requires QED's known-pool index or verified on-chain factory/derivation checks; unindexed Solana accounts are reviewed as tokens. QED is read-only by design: it never holds keys, submits transactions, or recommends. It does not prove backing, custody, reserves, solvency, safety, price, liquidity, or endorsement.","requestBody":{"content":{"application/json":{"example":{"address":"0x0000000000000000000000000000000000000001","chain":"base","wallet":"0x0000000000000000000000000000000000000004"},"schema":{"additionalProperties":false,"properties":{"address":{"type":"string"},"chain":{"enum":["solana","robinhood","base","ethereum","bnb"],"type":"string"},"wallet":{"type":"string"}},"required":["address","chain"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"address":"0x0000000000000000000000000000000000000001","chain":"Base","dev":false,"id":"0000000000000000000000000000000000000000000000000000000000000000","identity":{"matched_contract":"0x0000000000000000000000000000000000000001","publisher":"Example Publisher","status":"match","ticker":"NVDA"},"kind":"guard","observed_at":"2026-10-05T12:00:00Z","pools":[],"powers":null,"public_key":"base58-ed25519-public-key","reads":[],"reads_truncated":false,"reasons":[],"signature":"base64-signature","source":{"provider":"Sourcify","status":"unavailable"},"subject_address":"0x0000000000000000000000000000000000000001","subject_type":"token","verdict":"unknown","wallet":null},"schema":{"$ref":"#/components/schemas/GuardDocument"}}},"description":"Signed Guard document"},"400":{"description":"Invalid address, chain, wallet, or request body"},"502":{"description":"Reader unavailable or upstream chain read failed"},"504":{"description":"The 15-second Guard deadline expired"}},"summary":"Create a signed Guard review with a JSON request body"}},"/api/guard/{address}":{"get":{"description":"A signed point-in-time review of issuer identity, observed token powers, source status, known pool quote-side facts, and optional wallet restrictions. Pool identity requires QED's known-pool index or verified on-chain factory/derivation checks; unindexed Solana accounts are reviewed as tokens. Authority capability alone never denies. A wallet sent in the query string may be exposed in browser history or request URLs; prefer POST /api/guard. QED is read-only by design: it never holds keys, submits transactions, or recommends. It does not prove backing, custody, reserves, solvency, safety, price, liquidity, or endorsement.","parameters":[{"in":"path","name":"address","required":true,"schema":{"type":"string"}},{"in":"query","name":"chain","required":true,"schema":{"enum":["solana","robinhood","base","ethereum","bnb"],"type":"string"}},{"description":"Optional wallet; query-string privacy tradeoff applies. Prefer POST /api/guard.","in":"query","name":"wallet","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"address":"0x0000000000000000000000000000000000000001","chain":"Base","dev":false,"id":"0000000000000000000000000000000000000000000000000000000000000000","identity":{"matched_contract":"0x0000000000000000000000000000000000000001","publisher":"Example Publisher","status":"match","ticker":"NVDA"},"kind":"guard","observed_at":"2026-10-05T12:00:00Z","pools":[],"powers":null,"public_key":"base58-ed25519-public-key","reads":[],"reads_truncated":false,"reasons":[],"signature":"base64-signature","source":{"provider":"Sourcify","status":"unavailable"},"subject_address":"0x0000000000000000000000000000000000000001","subject_type":"pool","verdict":"unknown","wallet":null,"wallet_check":null},"schema":{"$ref":"#/components/schemas/GuardDocument"}}},"description":"Signed Guard document. The example's key, digest, and signature are schematic placeholders; verify live documents with POST /verify."},"400":{"description":"Invalid address, chain, or optional wallet"},"502":{"description":"Reader unavailable or upstream chain read failed"},"504":{"description":"The 15-second Guard deadline expired"}},"summary":"Create a signed Guard review"}},"/api/leaderboard":{"get":{"parameters":[{"in":"query","name":"page","schema":{"minimum":1,"type":"integer"}},{"in":"query","name":"per","schema":{"maximum":50,"minimum":1,"type":"integer"}},{"in":"query","name":"sort","schema":{"enum":["volume","price","change","liquidity"],"type":"string"}},{"in":"query","name":"dir","schema":{"enum":["asc","desc"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"empty_successful":false,"entries":[{"attestation_id":null,"base_symbol":"NVDA","chain":"solana","chain_label":"Solana","change_24h_pct":1.25,"checked_at":null,"detail_url":"/validated/solana/pool","dex":"raydium","explorer_url":"https://solscan.io/account/pool","issuer":"Backed xStocks","liquidity_usd":1250000.0,"pool":"leaderboard-pool","price_usd":132.5,"quote_symbol":"USDC","rank":1,"ticker":"NVDA","trade_url":"https://dexscreener.com/solana/pool","txns_24h":120,"verdict":"verified","volume_24h_usd":500000.0}],"next_refresh_at":"2026-10-04T18:00:00Z","page":1,"per":10,"prices_updated_at":"2026-10-04T12:00:00Z","refreshing":false,"registry":{"entries":2,"issuers":1,"next_refresh_at":"2026-10-04T13:00:00Z","refreshing":false,"restored":true,"updated_at":"2026-10-04T12:00:00Z"},"restored":true,"source":"DexScreener + on-chain reads","total":1,"updated_at":"2026-10-04T12:00:00Z"},"schema":{"type":"object"}}},"description":"Ranked leaderboard page"}},"summary":"Leaderboard page"}},"/api/pools/featured":{"get":{"responses":{"200":{"content":{"application/json":{"example":[{"base_address":"XsDoVfqeBukxuZHWhdvWHBhgEHjGNst4MLodqsJHzoB","base_symbol":"TSLA","chain":"Solana","curated":false,"dex":"raydium","issuer":"Backed xStocks","liquidity_usd":450000.0,"note":null,"pool":"featured-pool","quote_address":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","quote_balance":"1200000000","quote_share_of_supply":0.2,"quote_symbol":"USDC","ticker":"TSLA","updated_at":"2026-10-04T12:00:00Z","verdict":"verified","volume_24h_usd":125000.0}],"schema":{"items":{"type":"object"},"type":"array"}}},"description":"Curated pool list"}},"summary":"Featured pools"}},"/api/powers/{address}":{"get":{"description":"Reads a supported-chain token contract, not only registry entries. Optional chain filter; without it, registry matches are returned, otherwise an EVM chain is detected.","parameters":[{"in":"path","name":"address","required":true,"schema":{"type":"string"}},{"description":"Optional chain filter; without it, active registry matches are returned, or the EVM chain is detected for an unregistered contract.","in":"query","name":"chain","required":false,"schema":{"enum":["solana","robinhood","base","ethereum","bnb"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"block":42,"can_block":[],"can_change_rules":[],"can_seize":[],"chain":"Base","contract":"0x0000000000000000000000000000000000000002","observed_at":"2026-10-02T00:00:00Z","reads":[],"slot":null,"source_verified":"none","source_verified_subject":"contract","unavailable":[]},"schema":{"oneOf":[{"$ref":"#/components/schemas/PowersRecord"},{"items":{"$ref":"#/components/schemas/PowersRecord"},"type":"array"}]}}},"description":"One powers record or an array when the address has active registry matches on multiple chains"},"400":{"description":"Invalid address or chain"},"404":{"description":"No configured EVM chain could be detected"},"502":{"description":"Upstream read failed"},"504":{"description":"The 15-second token-powers deadline expired"}},"summary":"Observed token powers for any supported-chain contract"}},"/api/prices":{"get":{"parameters":[{"in":"query","name":"ids","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"prices":[{"chain":"solana","change_24h_pct":1.5,"liquidity_usd":200.0,"pool":"known","price_usd":12.5,"volume_24h_usd":100.0}],"updated_at":"2026-10-04T12:00:00Z"},"schema":{"type":"object"}}},"description":"Price snapshot"}},"summary":"Pool prices"}},"/api/registry":{"get":{"responses":{"200":{"content":{"application/json":{"example":[{"chain":"Bnb","contract":"0xc845b2894dBddd03858fd2D643B4eF725fE0849d","decimals":null,"issuer":"Backed xStocks","last_checked":"2026-09-22T21:26:41Z","name":"NVIDIA","source":"xstocks-api","source_url":"https://api.xstocks.fi/api/v2/public/assets","ticker":"NVDA"},{"chain":"Ethereum","contract":"0xc845b2894dBddd03858fd2D643B4eF725fE0849d","decimals":null,"issuer":"Backed xStocks","last_checked":"2026-09-22T21:26:41Z","name":"NVIDIA","source":"xstocks-api","source_url":"https://api.xstocks.fi/api/v2/public/assets","ticker":"NVDA"}],"schema":{"items":{"type":"object"},"type":"array"}}},"description":"Registry entries"}},"summary":"Issuer registry"}},"/api/statement":{"post":{"description":"Signs registry-token balances observed for selected wallets and chains. Balances are on-chain facts at a height, not ownership, solvency or reserves. It does not prove backing, custody, reserves, solvency, safety, price, liquidity, or endorsement.","requestBody":{"content":{"application/json":{"example":{"block":23000000,"chains":["base"],"wallets":["0x0000000000000000000000000000000000000001"]},"schema":{"$ref":"#/components/schemas/StatementRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"assets":[{"balance":"1250000000000000000","chain":"Base","contract":"0x0000000000000000000000000000000000000002","decimals":18,"issuer":"Backed xStocks","issuer_match":true,"powers_block":23000000,"powers_observed_at":"2026-09-22T12:00:00Z","powers_summary":{"can_block":[],"can_change_rules":[],"can_seize":[],"unavailable":[{"code":"rpc<timeout>","detail":"read & retry"}]},"slot":null,"ticker":"NVDA","wallet":"0x0000000000000000000000000000000000000001"}],"block":23000000,"dev":false,"id":"fb3a9270f0c364be29ca410bbe5074e53b42df96970f9fc4a47d7c8d63cf0905","kind":"statement","observed_at":"2026-09-22T12:00:00Z","positions":[{"block":23000000,"chain":"Base","max_slot":null,"min_slot":null,"wallet":"0x0000000000000000000000000000000000000001"}],"reads":[],"reads_truncated":false,"signature":"vSaEZwxJjk1YVZiWC1D/umfJrw+xNkrjUbOpfB7dyJ9McigMo4RbON6ThH6YwhERblAT9H/IOLImv+h7pkH4Cg==","signer":"GmaDrppBC7P5ARKV8g3djiwP89vz1jLK23V2GBjuAEGB","version":1,"wallets":[{"address":"0x0000000000000000000000000000000000000001","chain":"Base"}]},"schema":{"$ref":"#/components/schemas/Statement"}}},"description":"Signed statement"},"400":{"description":"Invalid wallet set or chain selection"},"502":{"description":"Required chain balance read failed"},"504":{"description":"Statement read deadline exceeded"}},"summary":"Create a signed wallet statement"}},"/api/statement/{id}":{"get":{"parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"^[0-9a-fA-F]{64}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"assets":[{"balance":"1250000000000000000","chain":"Base","contract":"0x0000000000000000000000000000000000000002","decimals":18,"issuer":"Backed xStocks","issuer_match":true,"powers_block":23000000,"powers_observed_at":"2026-09-22T12:00:00Z","powers_summary":{"can_block":[],"can_change_rules":[],"can_seize":[],"unavailable":[{"code":"rpc<timeout>","detail":"read & retry"}]},"slot":null,"ticker":"NVDA","wallet":"0x0000000000000000000000000000000000000001"}],"block":23000000,"dev":false,"id":"fb3a9270f0c364be29ca410bbe5074e53b42df96970f9fc4a47d7c8d63cf0905","kind":"statement","observed_at":"2026-09-22T12:00:00Z","positions":[{"block":23000000,"chain":"Base","max_slot":null,"min_slot":null,"wallet":"0x0000000000000000000000000000000000000001"}],"reads":[],"reads_truncated":false,"signature":"vSaEZwxJjk1YVZiWC1D/umfJrw+xNkrjUbOpfB7dyJ9McigMo4RbON6ThH6YwhERblAT9H/IOLImv+h7pkH4Cg==","signer":"GmaDrppBC7P5ARKV8g3djiwP89vz1jLK23V2GBjuAEGB","version":1,"wallets":[{"address":"0x0000000000000000000000000000000000000001","chain":"Base"}]},"schema":{"$ref":"#/components/schemas/Statement"}}},"description":"Signed statement JSON"},"404":{"description":"Statement is not available in this process cache"}},"summary":"Fetch a cached signed wallet statement JSON document"}},"/api/status":{"get":{"responses":{"200":{"content":{"application/json":{"example":{"featured":{"empty_successful":false,"next_refresh_at":"2026-10-04T18:00:00Z","refreshing":false,"restored":true,"updated_at":"2026-10-04T12:00:00Z"},"leaderboard":{"empty_successful":false,"next_refresh_at":"2026-10-04T18:00:00Z","refreshing":false,"restored":true,"updated_at":"2026-10-04T12:00:00Z"},"prices":{"updated_at":"2026-10-04T12:00:00Z"},"registry":{"entries":120,"issuers":6,"next_refresh_at":"2026-10-04T13:00:00Z","refreshing":false,"restored":true,"updated_at":"2026-10-04T12:00:00Z"}},"schema":{"type":"object"}}},"description":"Service status"}},"summary":"Freshness status"}},"/api/wallet":{"post":{"requestBody":{"content":{"application/json":{"example":{"address":"0x0000000000000000000000000000000000000001"},"schema":{"properties":{"address":{"type":"string"}},"required":["address"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"address":"0x0000000000000000000000000000000000000001","holdings":[{"amount":"1.25","chain":"Base","pool_url":null,"reason":null,"symbol":"NVDA","trade_links":[],"verdict":"Contract matches issuer registry","verdict_class":"is-verified"}]},"schema":{"type":"object"}}},"description":"Known stock-token holdings and contract verdicts"},"404":{"description":"Unsupported or invalid address"}},"summary":"Check stock-token holdings"}},"/healthz":{"get":{"responses":{"200":{"content":{"application/json":{"example":{"status":"ok"},"schema":{"properties":{"status":{"const":"ok"}},"required":["status"],"type":"object"}}},"description":"Service is healthy"}},"summary":"Health"}},"/mcp":{"post":{"description":"Supports MCP versions [\"2026-07-28\", \"2025-11-25\", \"2025-06-18\", \"2025-03-26\"] statelessly. Modern calls use per-request metadata and server/discover; legacy initialize supports all three 2025 revisions.","requestBody":{"content":{"application/json":{"example":{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"ticker":"NVDA"},"name":"qed_registry_lookup"}},"schema":{"oneOf":[{"$ref":"#/components/schemas/JsonRpcRequest"},{"$ref":"#/components/schemas/JsonRpcNotification"}]}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"id":1,"jsonrpc":"2.0","result":{"content":[{"text":"Found 4 active issuer registry entries for NVDA.","type":"text"}],"isError":false,"structuredContent":{"entries":[{"chain":"Bnb","contract":"0xc845b2894dBddd03858fd2D643B4eF725fE0849d","decimals":null,"issuer":"Backed xStocks","last_checked":"2026-09-22T21:26:41Z","name":"NVIDIA","source":"xstocks-api","source_url":"https://api.xstocks.fi/api/v2/public/assets","ticker":"NVDA"},{"chain":"Ethereum","contract":"0xc845b2894dBddd03858fd2D643B4eF725fE0849d","decimals":null,"issuer":"Backed xStocks","last_checked":"2026-09-22T21:26:41Z","name":"NVIDIA","source":"xstocks-api","source_url":"https://api.xstocks.fi/api/v2/public/assets","ticker":"NVDA"},{"chain":"Solana","contract":"Xsc9qvGR1efVDFGLrVsmkzv3qi45LTBjeUKSPmx9qEh","decimals":null,"issuer":"Backed xStocks","last_checked":"2026-09-22T21:26:41Z","name":"NVIDIA","source":"xstocks-api","source_url":"https://api.xstocks.fi/api/v2/public/assets","ticker":"NVDA"},{"chain":"RobinhoodChain","contract":"0xd0601CE157Db5bdC3162BbaC2a2C8aF5320D9EEC","decimals":18,"issuer":"Robinhood","last_checked":"2026-09-22T21:26:52Z","name":"NVIDIA","source":"robinhood-registry","source_url":"https://api.robinhood.com/rhj/assets","ticker":"NVDA"}],"ticker":"NVDA"}}},"schema":{"$ref":"#/components/schemas/JsonRpcResponse"}}},"description":"JSON-RPC 2.0 response"},"202":{"description":"Accepted notification; empty response"},"400":{"content":{"application/json":{"example":{"error":{"code":-32700,"message":"Parse error"},"id":null,"jsonrpc":"2.0"},"schema":{"$ref":"#/components/schemas/JsonRpcErrorResponse"}}},"description":"Malformed request or invalid protocol metadata"},"403":{"description":"Origin does not match request host"},"404":{"content":{"application/json":{"example":{"error":{"code":-32601,"message":"Method not found"},"id":1,"jsonrpc":"2.0"},"schema":{"$ref":"#/components/schemas/JsonRpcErrorResponse"}}},"description":"Unknown JSON-RPC method"},"405":{"description":"POST is required"},"413":{"description":"Request body exceeds the HTTP limit"}},"summary":"MCP tools (2026-07-28; legacy 2025-11-25, 2025-06-18, 2025-03-26 initialize)"}},"/statements/{id}":{"get":{"parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"^[0-9a-f]{64}$","type":"string"}}],"responses":{"200":{"content":{"text/html":{"example":"<!doctype html><html lang=\"en\"><title>Signed QED statement</title></html>","schema":{"type":"string"}}},"description":"Human-readable statement page"},"404":{"description":"Statement is not available in this process cache"}},"summary":"View a signed wallet statement"}},"/verify":{"post":{"requestBody":{"content":{"application/json":{"examples":{"attestation":{"summary":"Signed attestation","value":{"block":null,"chain":"Base","checked_at":"2026-01-01T00:00:00Z","dev":false,"expires_at":"2099-01-01T00:00:00Z","id":"0e9596ff7ba53868e82291934a69a14cc67b3f1cd8625b87013199e128533ffc","issuer":null,"pool":{"base":{"address":"0x0000000000000000000000000000000000000002","balance":"1","decimals":18,"symbol":"xNVDA"},"chain":"Base","dex":"uniswap-v2","pool":"0x0000000000000000000000000000000000000001","quote":{"address":"0x0000000000000000000000000000000000000003","balance":"2","decimals":6,"symbol":"USDG"}},"quote_share_of_supply":0.2,"reads":[],"registry_entry":null,"registry_hash":"","signature":"84oE823lfrGrxsjGsYTBf+e+SeKeBcMJfZc5KM73U4vHgfz2JQmKw0rBPYU5Y2OGPkSuasG4n2KYOjGmxy+JDA==","signer":"GmaDrppBC7P5ARKV8g3djiwP89vz1jLK23V2GBjuAEGB","slot":null,"subject":"0x0000000000000000000000000000000000000001","ticker":null,"verdict":"NoMatch","version":1}},"guard":{"summary":"Signed Guard document (schematic signature placeholders)","value":{"address":"0x0000000000000000000000000000000000000001","chain":"Base","dev":false,"id":"0000000000000000000000000000000000000000000000000000000000000000","identity":{"matched_contract":"0x0000000000000000000000000000000000000001","publisher":"Example Publisher","status":"match","ticker":"NVDA"},"kind":"guard","observed_at":"2026-10-05T12:00:00Z","pools":[],"powers":null,"public_key":"base58-ed25519-public-key","reads":[],"reads_truncated":false,"reasons":[],"signature":"base64-signature","source":{"provider":"Sourcify","status":"unavailable"},"verdict":"unknown","wallet":null,"wallet_check":null}},"statement":{"summary":"Signed wallet statement","value":{"assets":[{"balance":"1250000000000000000","chain":"Base","contract":"0x0000000000000000000000000000000000000002","decimals":18,"issuer":"Backed xStocks","issuer_match":true,"powers_block":23000000,"powers_observed_at":"2026-09-22T12:00:00Z","powers_summary":{"can_block":[],"can_change_rules":[],"can_seize":[],"unavailable":[{"code":"rpc<timeout>","detail":"read & retry"}]},"slot":null,"ticker":"NVDA","wallet":"0x0000000000000000000000000000000000000001"}],"block":23000000,"dev":false,"id":"fb3a9270f0c364be29ca410bbe5074e53b42df96970f9fc4a47d7c8d63cf0905","kind":"statement","observed_at":"2026-09-22T12:00:00Z","positions":[{"block":23000000,"chain":"Base","max_slot":null,"min_slot":null,"wallet":"0x0000000000000000000000000000000000000001"}],"reads":[],"reads_truncated":false,"signature":"vSaEZwxJjk1YVZiWC1D/umfJrw+xNkrjUbOpfB7dyJ9McigMo4RbON6ThH6YwhERblAT9H/IOLImv+h7pkH4Cg==","signer":"GmaDrppBC7P5ARKV8g3djiwP89vz1jLK23V2GBjuAEGB","version":1,"wallets":[{"address":"0x0000000000000000000000000000000000000001","chain":"Base"}]}}},"schema":{"oneOf":[{"$ref":"#/components/schemas/Attestation"},{"$ref":"#/components/schemas/Statement"},{"$ref":"#/components/schemas/GuardDocument"}]}}},"required":true},"responses":{"200":{"content":{"application/json":{"examples":{"attestation":{"summary":"Attestation verification","value":{"cryptographic":true,"environment_match":true,"fresh":true,"id":"0e9596ff7ba53868e82291934a69a14cc67b3f1cd8625b87013199e128533ffc","kind":"attestation","ok":true,"trusted_signer":true}},"guard":{"summary":"Guard verification","value":{"cryptographic":true,"environment_match":true,"fresh":null,"id":"0000000000000000000000000000000000000000000000000000000000000000","kind":"guard","ok":true,"trusted_signer":true}},"statement":{"summary":"Statement verification","value":{"cryptographic":true,"environment_match":true,"fresh":null,"id":"fb3a9270f0c364be29ca410bbe5074e53b42df96970f9fc4a47d7c8d63cf0905","kind":"statement","ok":true,"trusted_signer":true}}},"schema":{"$ref":"#/components/schemas/VerifyResult"}}},"description":"Verification result"},"400":{"content":{"application/json":{"example":{"error":"Payload must match a legacy QED attestation or declare its document kind."},"schema":{"required":["error"],"type":"object"}}},"description":"Unsupported document shape"}},"summary":"Verify a signed attestation, statement, or Guard"}}}}