REFERENCE

API reference

QED checks tokens that claim to be something against the contract their issuer publishes. This API guide documents the machine-readable checks, signed reviews, and verification routes.

Attestations

GET/api/attest/{id}

Fetch a signed attestation

Parameters

NameInRequiredType / description
idpathRequiredstring
RequestGET
GET https://qed.web3-energy.com/api/attest/DOCUMENT_ID
Response · 200GET
{
  "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
}

Checks

GET/api/check/{address}

Check a pool or token

Parameters

NameInRequiredType / description
addresspathRequiredstring
RequestGET
GET https://qed.web3-energy.com/api/check/YOUR_ADDRESS
Response · 200GET
{
  "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"
}

Discovery

GET/.well-known/mcp/server-card.json

MCP server card

RequestGET
GET https://qed.web3-energy.com/.well-known/mcp/server-card.json
Response · 200GET
{
  "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"
    },
    …
  ],
  "website": "https://qed.web3-energy.com"
}
GET/.well-known/qed.json

Public verification key

RequestGET
GET https://qed.web3-energy.com/.well-known/qed.json
Response · 200GET
{
  "algorithm": "Ed25519",
  "dev": false,
  "key": "GmaDrppBC7P5ARKV8g3djiwP89vz1jLK23V2GBjuAEGB",
  "name": "QED",
  "public_key": "GmaDrppBC7P5ARKV8g3djiwP89vz1jLK23V2GBjuAEGB",
  "version": 1
}

Guard

POST/api/guard

Create a signed Guard review with a JSON request body

RequestPOST
POST https://qed.web3-energy.com/api/guard
Content-Type: application/json

{
  "address": "0x0000000000000000000000000000000000000001",
  "chain": "base",
  "wallet": "0x0000000000000000000000000000000000000004"
}
Response · 200POST
{
  "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
}
GET/api/guard/{address}

Create a signed Guard review

Parameters

NameInRequiredType / description
addresspathRequiredstring
chainqueryRequiredstring
walletqueryOptionalstring — Optional wallet; query-string privacy tradeoff applies. Prefer POST /api/guard.
RequestGET
GET https://qed.web3-energy.com/api/guard/YOUR_ADDRESS?chain=solana
Response · 200GET
{
  "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
}

Health

GET/healthz

Health

RequestGET
GET https://qed.web3-energy.com/healthz
Response · 200GET
{
  "status": "ok"
}

Leaderboard

GET/api/leaderboard

Leaderboard page

Parameters

NameInRequiredType / description
pagequeryOptionalinteger
perqueryOptionalinteger
sortqueryOptionalstring
dirqueryOptionalstring
RequestGET
GET https://qed.web3-energy.com/api/leaderboard
Response · 200GET
{
  "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"
}

MCP

POST/mcp

MCP tools (2026-07-28; legacy 2025-11-25, 2025-06-18, 2025-03-26 initialize)

RequestPOST
POST https://qed.web3-energy.com/mcp
Content-Type: application/json

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "ticker": "NVDA"
    },
    "name": "qed_registry_lookup"
  }
}
Response · 200POST
{
  "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"
        },
        …
      ],
      "ticker": "NVDA"
    }
  }
}

Pools

Prices

GET/api/prices

Pool prices

Parameters

NameInRequiredType / description
idsqueryRequiredstring
RequestGET
GET https://qed.web3-energy.com/api/prices?ids=solana:POOL_ID
Response · 200GET
{
  "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"
}

Registry

GET/api/registry

Issuer registry

RequestGET
GET https://qed.web3-energy.com/api/registry
Response · 200GET
[
  {
    "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"
  }
]

Statements

POST/api/statement

Create a signed wallet statement

RequestPOST
POST https://qed.web3-energy.com/api/statement
Content-Type: application/json

{
  "block": 23000000,
  "chains": [
    "base"
  ],
  "wallets": [
    "0x0000000000000000000000000000000000000001"
  ]
}
Response · 200POST
{
  "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"
    }
  ]
}
GET/api/statement/{id}

Fetch a cached signed wallet statement JSON document

Parameters

NameInRequiredType / description
idpathRequiredstring
RequestGET
GET https://qed.web3-energy.com/api/statement/DOCUMENT_ID
Response · 200GET
{
  "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"
    }
  ]
}
GET/statements/{id}

View a signed wallet statement

Parameters

NameInRequiredType / description
idpathRequiredstring
RequestGET
GET https://qed.web3-energy.com/statements/DOCUMENT_ID
Response · 200GET
"<!doctype html><html lang=\"en\"><title>Signed QED statement</title></html>"

Status

GET/api/status

Freshness status

RequestGET
GET https://qed.web3-energy.com/api/status
Response · 200GET
{
  "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"
  }
}

Token powers

GET/api/powers/{address}

Observed token powers for any supported-chain contract

Parameters

NameInRequiredType / description
addresspathRequiredstring
chainqueryOptionalstring — Optional chain filter; without it, active registry matches are returned, or the EVM chain is detected for an unregistered contract.
RequestGET
GET https://qed.web3-energy.com/api/powers/YOUR_ADDRESS
Response · 200GET
{
  "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": []
}

Verification

POST/verify

Verify a signed attestation, statement, or Guard

RequestPOST

Signed attestation

POST https://qed.web3-energy.com/verify
Content-Type: application/json

{
  "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
}

Signed Guard document (schematic signature placeholders)

POST https://qed.web3-energy.com/verify
Content-Type: application/json

{
  "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
}

Signed wallet statement

POST https://qed.web3-energy.com/verify
Content-Type: application/json

{
  "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"
    }
  ]
}
Response · 200POST

Attestation verification

{
  "cryptographic": true,
  "environment_match": true,
  "fresh": true,
  "id": "0e9596ff7ba53868e82291934a69a14cc67b3f1cd8625b87013199e128533ffc",
  "kind": "attestation",
  "ok": true,
  "trusted_signer": true
}

Guard verification

{
  "cryptographic": true,
  "environment_match": true,
  "fresh": null,
  "id": "0000000000000000000000000000000000000000000000000000000000000000",
  "kind": "guard",
  "ok": true,
  "trusted_signer": true
}

Statement verification

{
  "cryptographic": true,
  "environment_match": true,
  "fresh": null,
  "id": "fb3a9270f0c364be29ca410bbe5074e53b42df96970f9fc4a47d7c8d63cf0905",
  "kind": "statement",
  "ok": true,
  "trusted_signer": true
}

Wallet

POST/api/wallet

Check stock-token holdings

RequestPOST
POST https://qed.web3-energy.com/api/wallet
Content-Type: application/json

{
  "address": "0x0000000000000000000000000000000000000001"
}
Response · 200POST
{
  "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"
    }
  ]
}