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
View JSON Schema on GitHub

JSON Schema

fiatdock-com-token-verdict-schema.json Raw ↑
{
  "$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.
All 92 tools →

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.