{"openapi":"3.1.0","info":{"title":"token-facts","version":"0.1.0","description":"Onchain facts for a Base ERC20 address: ERC20 shape, honeypot-style selectors and an ungraded adminPowers profile (proxy, owner, mint, blacklist, pause) with raw evidence per check. No DEX data, grade is n/a. No LLM.","x-guidance":"Token Facts reads a Base (8453) ERC20 straight from chain via public JSON-RPC. `token_facts` returns ERC20 shape, honeypot-style fee/limit selectors and an ungraded admin-powers profile (proxy, owner, mint, blacklist, pause) with raw evidence per check. No DEX data, so no grade: grade is n/a. Known issuers (USDC, EURC, cbBTC, WETH) are labeled. Cheaper than token_verdict. Deterministic, no LLM. Tools: `token_facts`.","contact":{"email":"jeff@fosterinstruments.com"}},"servers":[{"url":"https://token-facts.x402supply.com"}],"paths":{"/mcp":{"post":{"operationId":"token-facts_call","summary":"Call token-facts via MCP tools/call","tags":["token-facts"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["jsonrpc","id","method","params"],"properties":{"jsonrpc":{"const":"2.0"},"id":{"type":["string","number"]},"method":{"const":"tools/call"},"params":{"type":"object","required":["name","arguments"],"properties":{"name":{"const":"token_facts"},"arguments":{"type":"object","properties":{"address":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[0-9a-fA-F]{40}$","description":"Base (chain 8453) ERC20 contract address, 0x plus 40 hex characters"}},"required":["address"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}}}}}}}},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","description":"JSON-RPC 2.0 response envelope. `result.content[0].text` is a JSON-encoded string matching the schema in `x-mcp-result-schema`.","properties":{"jsonrpc":{"const":"2.0"},"id":{"type":["string","number"]},"result":{"type":"object","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"const":"text"},"text":{"type":"string"}}}}}}},"x-mcp-result-schema":{"type":"object","required":["address","chainId","riskScore","grade","summary","coverage","checks","asOf","sources","adminPowers","issuer"],"properties":{"address":{"type":"string"},"chainId":{"type":"integer"},"summary":{"type":"string"},"checks":{"type":"array","items":{"type":"object","required":["id","name","status","detail","evidence","axis"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"status":{"type":"string","enum":["pass","caution","fail","unknown"]},"detail":{"type":"string"},"evidence":{"type":"object"},"axis":{"type":"string","enum":["rugRisk","adminPowers"]}}}},"asOf":{"type":"string"},"sources":{"type":"array","items":{"type":"string"}},"riskScore":{"type":["integer","null"]},"grade":{"type":["string","null"]},"coverage":{"type":"number"},"adminPowers":{"type":"object","required":["level","powers","note"],"properties":{"level":{"type":"string","enum":["none","moderate","high"]},"powers":{"type":"array","items":{"type":"string"}},"note":{"type":"string"}}},"issuer":{"type":["object","null"],"properties":{"name":{"type":"string"},"symbol":{"type":"string"},"verifiedBy":{"type":"string"}}}}}}}}},"402":{"description":"Payment Required","content":{"application/json":{"schema":{"type":"object","properties":{"x402Version":{"type":"integer"},"error":{"type":"string"},"accepts":{"type":"array"}}}}}}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.005"},"protocols":[{"x402":{}}]}}},"/tools/token_facts":{"post":{"operationId":"token-facts_token_facts_http","summary":"Onchain facts for a Base ERC20 address: ERC20 shape, honeypot-style selectors and an ungraded adminPowers profile (proxy, owner, mint, blacklist, pause) with raw evidence per check. No DEX data, grade is n/a. No LLM.","tags":["token-facts"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"address":{"type":"string","minLength":42,"maxLength":42,"pattern":"^0x[0-9a-fA-F]{40}$","description":"Base (chain 8453) ERC20 contract address, 0x plus 40 hex characters"}},"required":["address"],"additionalProperties":false},"example":{"address":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}}},"responses":{"200":{"description":"Tool result (plain JSON, not MCP-wrapped)","content":{"application/json":{"schema":{"type":"object","required":["address","chainId","riskScore","grade","summary","coverage","checks","asOf","sources","adminPowers","issuer"],"properties":{"address":{"type":"string"},"chainId":{"type":"integer"},"summary":{"type":"string"},"checks":{"type":"array","items":{"type":"object","required":["id","name","status","detail","evidence","axis"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"status":{"type":"string","enum":["pass","caution","fail","unknown"]},"detail":{"type":"string"},"evidence":{"type":"object"},"axis":{"type":"string","enum":["rugRisk","adminPowers"]}}}},"asOf":{"type":"string"},"sources":{"type":"array","items":{"type":"string"}},"riskScore":{"type":["integer","null"]},"grade":{"type":["string","null"]},"coverage":{"type":"number"},"adminPowers":{"type":"object","required":["level","powers","note"],"properties":{"level":{"type":"string","enum":["none","moderate","high"]},"powers":{"type":"array","items":{"type":"string"}},"note":{"type":"string"}}},"issuer":{"type":["object","null"],"properties":{"name":{"type":"string"},"symbol":{"type":"string"},"verifiedBy":{"type":"string"}}}}},"example":{"address":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","chainId":8453,"riskScore":null,"grade":"n/a","summary":"USDC (0x8335...2913) on Base: facts only, no grade (needs DEX data, use token_verdict). Admin powers (not graded): high, upgradeable proxy, owner not renounced, mint, blacklist, pause. Issuer: Circle.","coverage":1,"checks":[{"id":"erc20","name":"ERC20 contract","status":"pass","detail":"USD Coin (USDC), 6 decimals, supply 4405234499.055562.","evidence":{"codeBytes":1852,"name":"USD Coin","symbol":"USDC","decimals":6,"totalSupply":"4405234499055562","totalSupplyFormatted":"4405234499.055562","issuer":"Circle"},"axis":"rugRisk"},{"id":"proxy","name":"Proxy / upgradeable","status":"caution","detail":"Upgradeable OpenZeppelin legacy (zos) proxy, implementation 0x2ce6311ddae708829bc0784c967b7d77d19fd779, admin 0x4fc7850364958d97b4d3f5a08f79db2493f8ca44. Logic can be swapped.","evidence":{"slotStandard":"OpenZeppelin legacy (zos)","implementation":"0x2ce6311ddae708829bc0784c967b7d77d19fd779","admin":"0x4fc7850364958d97b4d3f5a08f79db2493f8ca44","adminSlotRead":true,"upgradeable":true},"axis":"adminPowers"},{"id":"owner","name":"Owner privileges","status":"caution","detail":"Ownership not renounced, externally owned account (EOA) owner 0x3abd6f64a422225e61e435bae41db12096106df7.","evidence":{"owner":"0x3abd6f64a422225e61e435bae41db12096106df7","renounced":false,"ownerIsContract":false},"axis":"adminPowers"},{"id":"bytecode","name":"Admin functions in bytecode","status":"caution","detail":"Selectors found for: mint, blacklist/blocklist, pause.","evidence":{"scanned":[{"label":"token","address":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","bytes":1852},{"label":"implementation","address":"0x2ce6311ddae708829bc0784c967b7d77d19fd779","bytes":23464}],"groupsFound":["mint","blacklist","pause"],"matches":{"mint":["mint(address,uint256)"],"blacklist":["blacklist(address)","isBlacklisted(address)"],"pause":["pause()","unpause()","paused()"]},"note":"Selector presence shows a function exists in the code, not who can call it or that it is abused."},"axis":"adminPowers"},{"id":"honeypot","name":"Honeypot-style signals","status":"pass","detail":"No fee/tax setter or max-tx/wallet limit selectors found.","evidence":{"scanned":[{"label":"token","address":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","bytes":1852},{"label":"implementation","address":"0x2ce6311ddae708829bc0784c967b7d77d19fd779","bytes":23464}],"groupsFound":[],"matches":{},"note":"Selector presence shows a function exists in the code, not who can call it or that it is abused."},"axis":"rugRisk"}],"adminPowers":{"level":"high","powers":["upgradeable proxy","owner not renounced","mint","blacklist","pause"],"note":"Informational centralization profile. Not counted in riskScore or grade. Regulated issuers and many legitimate tokens keep these powers."},"issuer":{"name":"Circle","symbol":"USDC","verifiedBy":"address listed in known-issuer table and on-chain symbol() matches"},"asOf":"2026-10-10T03:08:28.110Z","sources":["https://mainnet.base.org"]}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"}}}}}},"402":{"description":"Payment Required","content":{"application/json":{"schema":{"type":"object","properties":{"x402Version":{"type":"integer"},"error":{"type":"string"},"accepts":{"type":"array"}}}}}}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.005"},"protocols":[{"x402":{}}]}}}}}