FiatDock · Schema
TokenVerdict
Paid. Token verdict (EVM + Solana).
MarketplaceArtificial IntelligencePaymentsBlockchainCryptocurrencyCompany
Properties
| Name | Type | Description |
|---|---|---|
| network | string | Chain the token was read on (base, ethereum, …, or solana) |
| token | string | The token address read (an EVM address lower-cased; a Solana mint as given) |
| name | stringnull | Token name — the deployer's text, clamped |
| symbol | stringnull | Token symbol — the deployer's text, clamped |
| safetyScore | number | 0-100, higher is safer, by the stated method |
| grade | string | A (>= 90), B (>= 75), C (>= 60), D (>= 40) or F |
| verdict | string | critical_risk when any critical flag stands; otherwise from the score |
| summary | string | One sentence: the verdict and its main reason |
| reasons | array | Everything that took points off the score, worst first — the score is 100 plus their points, clamped to 0-100 |
| positives | array | What speaks for the token (trusted listing, deep liquidity, age, holder count) |
| trusted | boolean | True when the scanner lists the token as trusted (its trust list / trusted token) |
| issuerControls | array | Issuer control powers reported but not scored, because the token is trusted or an issuer-run token at its canonical address |
| scanVerdict | string | The scan's verdict with no trust applied — safe, caution or danger (on EVM exactly token_safety's) |
| risks | array | The scan's risk flags with no trust applied (on EVM exactly as token_safety reports them; on Solana by this tool's rules) |
| market | objectnull | The deepest DEX pair where this token is the base token (DexScreener); null when none |
| holders | object | Holder count and the largest holder's share of supply, when the scanner reports them |
| method | string | The scoring rules, in full |
| pageUrl | string | Public page for this token's last paid verdict on fiatdock.com |
| source | string | Where the data comes from |
| asOf | string | ISO time of the oldest upstream read this answer used |
| note | string | What the verdict is and is not |
| defaulted | object | Present only when the body was empty: which subject the answer is for, and why |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/fiatdock-com/json-schema/fiatdock-com-token-verdict-schema.json",
"title": "TokenVerdict",
"description": "Paid. Token verdict (EVM + Solana).",
"x-generated": "2026-11-07",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/fiatdock-com-openapi.json#/components/schemas/TokenVerdict",
"type": "object",
"properties": {
"network": {
"type": "string",
"description": "Chain the token was read on (base, ethereum, …, or solana)"
},
"token": {
"type": "string",
"description": "The token address read (an EVM address lower-cased; a Solana mint as given)"
},
"name": {
"type": [
"string",
"null"
],
"description": "Token name — the deployer's text, clamped"
},
"symbol": {
"type": [
"string",
"null"
],
"description": "Token symbol — the deployer's text, clamped"
},
"safetyScore": {
"type": "number",
"description": "0-100, higher is safer, by the stated method"
},
"grade": {
"type": "string",
"description": "A (>= 90), B (>= 75), C (>= 60), D (>= 40) or F"
},
"verdict": {
"type": "string",
"enum": [
"low_risk",
"medium_risk",
"high_risk",
"critical_risk"
],
"description": "critical_risk when any critical flag stands; otherwise from the score"
},
"summary": {
"type": "string",
"description": "One sentence: the verdict and its main reason"
},
"reasons": {
"type": "array",
"items": {
"type": "object",
"properties": {
"level": {
"type": "string"
},
"flag": {
"type": "string"
},
"detail": {
"type": "string"
},
"points": {
"type": "number"
}
},
"required": [
"level",
"flag",
"detail",
"points"
]
},
"description": "Everything that took points off the score, worst first — the score is 100 plus their points, clamped to 0-100"
},
"positives": {
"type": "array",
"items": {
"type": "string"
},
"description": "What speaks for the token (trusted listing, deep liquidity, age, holder count)"
},
"trusted": {
"type": "boolean",
"description": "True when the scanner lists the token as trusted (its trust list / trusted token)"
},
"issuerControls": {
"type": "array",
"items": {
"type": "string"
},
"description": "Issuer control powers reported but not scored, because the token is trusted or an issuer-run token at its canonical address"
},
"scanVerdict": {
"type": "string",
"description": "The scan's verdict with no trust applied — safe, caution or danger (on EVM exactly token_safety's)"
},
"risks": {
"type": "array",
"items": {
"type": "object",
"properties": {
"level": {
"type": "string"
},
"flag": {
"type": "string"
},
"detail": {
"type": "string"
}
},
"required": [
"level",
"flag",
"detail"
]
},
"description": "The scan's risk flags with no trust applied (on EVM exactly as token_safety reports them; on Solana by this tool's rules)"
},
"market": {
"type": [
"object",
"null"
],
"properties": {
"priceUsd": {
"type": [
"number",
"null"
]
},
"priceChange24hPct": {
"type": [
"number",
"null"
]
},
"liquidityUsd": {
"type": [
"number",
"null"
]
},
"volume24hUsd": {
"type": [
"number",
"null"
]
},
"fdvUsd": {
"type": [
"number",
"null"
]
},
"marketCapUsd": {
"type": [
"number",
"null"
]
},
"dex": {
"type": [
"string",
"null"
]
},
"pairUrl": {
"type": [
"string",
"null"
]
},
"pairAgeHours": {
"type": [
"number",
"null"
]
},
"firstPairAgeHours": {
"type": [
"number",
"null"
],
"description": "Age of the oldest pair the token trades in on this chain, as base or quote — the age the score uses"
},
"pairListCut": {
"type": "boolean",
"description": "True when DexScreener returned its maximum of 30 pairs, so the oldest seen is a lower bound and the age rule is not applied"
}
},
"required": [
"priceUsd",
"priceChange24hPct",
"liquidityUsd",
"volume24hUsd",
"fdvUsd",
"marketCapUsd",
"dex",
"pairUrl",
"pairAgeHours",
"firstPairAgeHours",
"pairListCut"
],
"description": "The deepest DEX pair where this token is the base token (DexScreener); null when none"
},
"holders": {
"type": "object",
"properties": {
"count": {
"type": [
"number",
"null"
]
},
"topHolderPct": {
"type": [
"number",
"null"
]
}
},
"required": [
"count",
"topHolderPct"
],
"description": "Holder count and the largest holder's share of supply, when the scanner reports them"
},
"method": {
"type": "string",
"description": "The scoring rules, in full"
},
"pageUrl": {
"type": "string",
"description": "Public page for this token's last paid verdict on fiatdock.com"
},
"source": {
"type": "string",
"description": "Where the data comes from"
},
"asOf": {
"type": "string",
"description": "ISO time of the oldest upstream read this answer used"
},
"note": {
"type": "string",
"description": "What the verdict is and is not"
},
"defaulted": {
"type": "object",
"properties": {
"field": {
"type": "string"
},
"to": {
"type": "string"
},
"value": {
"type": "string"
},
"note": {
"type": "string"
}
},
"required": [
"field",
"to",
"value",
"note"
],
"description": "Present only when the body was empty: which subject the answer is for, and why"
}
},
"required": [
"network",
"token",
"name",
"symbol",
"safetyScore",
"grade",
"verdict",
"summary",
"reasons",
"positives",
"trusted",
"issuerControls",
"scanVerdict",
"risks",
"market",
"holders",
"method",
"pageUrl",
"source",
"asOf",
"note"
]
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/fiatdock-com-token-verdict"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.