Properties
| Name | Type | Description |
|---|---|---|
| ok | boolean | |
| schema_version | string | |
| generated_at | string | |
| t | number | |
| coverage | string | |
| data | object | |
| meta | object |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/loopholetape-com/json-schema/loopholetape-com-risk-check-schema.json",
"title": "RiskEnvelope",
"x-generated": "2026-10-30",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/loopholetape-com-openapi.json#/components/schemas/RiskCheck",
"properties": {
"ok": {
"const": true,
"title": "Ok",
"type": "boolean"
},
"schema_version": {
"const": "2.0",
"title": "Schema Version",
"type": "string"
},
"generated_at": {
"title": "Generated At",
"type": "string"
},
"t": {
"title": "T",
"type": "number"
},
"coverage": {
"const": "full",
"title": "Coverage",
"type": "string"
},
"data": {
"anyOf": [
{
"properties": {
"status": {
"anyOf": [
{
"enum": [
"flags_observed",
"no_flags_observed"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "flags_observed = documented flags exist; no_flags_observed = none of them observed (not a safety verdict); null = the curve is not shown to be SOL-quoted (status_reason quote_not_modelled), so its SOL-denominated flags were not evaluated and no absence of flags is claimed.",
"title": "Status"
},
"status_reason": {
"anyOf": [
{
"const": "quote_not_modelled",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Status Reason"
},
"result_id": {
"title": "Result Id",
"type": "string"
},
"count": {
"maximum": 5,
"minimum": 1,
"title": "Count",
"type": "integer"
},
"items": {
"items": {
"properties": {
"mint": {
"title": "Mint",
"type": "string"
},
"status": {
"anyOf": [
{
"enum": [
"flags_observed",
"no_flags_observed"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "flags_observed = documented flags exist; no_flags_observed = none of them observed (not a safety verdict); null = the curve is not shown to be SOL-quoted (status_reason quote_not_modelled), so its SOL-denominated flags were not evaluated and no absence of flags is claimed.",
"title": "Status"
},
"status_reason": {
"anyOf": [
{
"const": "quote_not_modelled",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Set when the curve is not modelled.",
"title": "Status Reason"
},
"quote": {
"anyOf": [
{
"properties": {
"asset": {
"description": "The curve's quote asset: sol, usdc, pyusd, stock (an xStocks tokenized equity), other, or unknown (not read from the curve account; is_sol says what our tape shows).",
"enum": [
"sol",
"usdc",
"pyusd",
"stock",
"other",
"unknown"
],
"title": "Asset",
"type": "string"
},
"mint": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The quote_mint the bonding-curve account holds (the all-zero default 11111111111111111111111111111111 on SOL curves); null when not read.",
"title": "Mint"
},
"modelled": {
"description": "True only for a curve shown to be SOL-quoted: our flags, labels, verdict and odds are measured in SOL. False = those are withheld (reason quote_not_modelled).",
"title": "Modelled",
"type": "boolean"
},
"is_sol": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "true = SOL-quoted, false = quoted in another asset, null = not established yet.",
"title": "Is Sol"
},
"holder_rewards": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "The curve's is_holder_reward flag (pump.fun Holder Rewards: the creator fee goes to holders); null when the account was not read.",
"title": "Holder Rewards"
},
"basis": {
"description": "curve_account = read from the bonding-curve account over RPC; curve_stream = the same account fields as our capture streams them; tape = our capture's evidence; none = no evidence yet.",
"enum": [
"curve_account",
"curve_stream",
"tape",
"none"
],
"title": "Basis",
"type": "string"
},
"evidence": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The tape evidence behind is_sol (/v1/labels quote.evidence).",
"title": "Evidence"
},
"reason": {
"anyOf": [
{
"const": "quote_not_modelled",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Set when modelled is false.",
"title": "Reason"
}
},
"required": [
"asset",
"modelled",
"basis"
],
"title": "Quote",
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "The curve's quote asset and whether our SOL-denominated flags, labels, verdict and odds are modelled for it (/v1/labels quote). modelled false = those are null with reason quote_not_modelled; structural fields stand."
},
"lifecycle": {
"title": "Lifecycle",
"type": "string"
},
"risk_label": {
"title": "Risk Label",
"type": "string"
},
"findings": {
"items": {
"properties": {
"code": {
"title": "Code",
"type": "string"
},
"first_seen_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "First Seen At"
},
"evidence": {
"additionalProperties": true,
"title": "Evidence",
"type": "object"
}
},
"required": [
"code",
"first_seen_at",
"evidence"
],
"title": "Finding",
"type": "object"
},
"title": "Findings",
"type": "array"
},
"snapshot_slot": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"description": "Latest observed slot for this mint, not the slot of every finding.",
"title": "Snapshot Slot"
},
"last_trade_at": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Last Trade At"
},
"concentration": {
"properties": {
"top5_share": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Top5 Share"
},
"dev_share": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Dev Share"
},
"bundle_share": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Bundle Share"
},
"insider_share": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Insider Share"
}
},
"required": [
"top5_share",
"dev_share",
"bundle_share",
"insider_share"
],
"title": "Concentration",
"type": "object"
},
"buyer_flow": {
"properties": {
"unique_buyers_60s": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Unique Buyers 60S"
},
"buys_60s": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Buys 60S"
},
"sells_60s": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Sells 60S"
},
"net_sol_60s": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Net Sol 60S"
},
"inflow_stalled": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Inflow Stalled"
}
},
"required": [
"unique_buyers_60s",
"buys_60s",
"sells_60s",
"net_sol_60s",
"inflow_stalled"
],
"title": "BuyerFlow",
"type": "object"
},
"curve": {
"properties": {
"rs_sol": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Rs Sol"
},
"peak_rs_sol": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Peak Rs Sol"
},
"drawdown_from_peak": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Drawdown From Peak"
},
"graduated": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Graduated"
}
},
"required": [
"rs_sol",
"peak_rs_sol",
"drawdown_from_peak",
"graduated"
],
"title": "Curve",
"type": "object"
},
"market": {
"anyOf": [
{
"properties": {
"price_sol": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "SOL per whole token at the bonding curve's marginal price.",
"title": "Price Sol"
},
"price_usd": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Price Usd"
},
"market_cap_sol": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Market Cap Sol"
},
"market_cap_usd": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "price_usd x total supply (1B tokens, 2B on a mayhem launch): the pump.fun and DexScreener convention, equal to FDV.",
"title": "Market Cap Usd"
},
"curve_liquidity_sol": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Real SOL held by the bonding curve.",
"title": "Curve Liquidity Sol"
},
"curve_liquidity_usd": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Curve Liquidity Usd"
},
"sol_usd": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "The Coinbase SOL-USD spot the USD fields use.",
"title": "Sol Usd"
},
"as_of": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Unix seconds of that sol_usd read.",
"title": "As Of"
},
"reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Why fields are null; codes at /v1/labels market.reason.",
"title": "Reason"
}
},
"title": "Market",
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "USD price, market cap and curve liquidity (/v1/labels market)."
},
"authorities": {
"anyOf": [
{
"properties": {
"mint_authority": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "true = set (more can be minted), false = none, null = not read.",
"title": "Mint Authority"
},
"freeze_authority": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "true = set (accounts can be frozen), false = none, null = not read.",
"title": "Freeze Authority"
},
"metadata_mutable": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "true = name, symbol or image can still change, false = immutable, null = not read.",
"title": "Metadata Mutable"
},
"source": {
"anyOf": [
{
"enum": [
"onchain",
"pumpfun_rule"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "pumpfun_rule: pump.fun's program leaves no mint or freeze authority and immutable metadata.",
"title": "Source"
}
},
"title": "Authorities",
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Mint, freeze and metadata authorities (/v1/labels authorities)."
},
"probabilities": {
"anyOf": [
{
"properties": {
"model": {
"title": "Model",
"type": "string"
},
"calibration": {
"title": "Calibration",
"type": "string"
},
"horizon_s": {
"title": "Horizon S",
"type": "integer"
},
"rug_within_300s": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Rug Within 300S"
},
"true_graduation": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "True Graduation"
},
"rug_within_300s_reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Rug Within 300S Reason"
},
"true_graduation_reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "True Graduation Reason"
},
"reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Reason"
},
"rug_within_300s_basis": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Rug Within 300S Basis"
},
"base_rate_same_age": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Base Rate Same Age"
},
"recalibration": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Recalibration"
},
"diagnostics": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Diagnostics"
},
"features_used": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Features Used"
}
},
"required": [
"model",
"calibration",
"horizon_s"
],
"title": "Probabilities",
"type": "object"
},
{
"type": "null"
}
],
"default": null
},
"full_card_url": {
"title": "Full Card Url",
"type": "string"
},
"pool_now": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Graduated tokens whose PumpSwap pool is inside its first 30 minutes only (null otherwise): the live reserve, peak and pool_draining, with the rule and its measured rate. Context, not part of the verdict.",
"title": "Pool Now"
},
# --- truncated at 32 KB (37 KB total) ---
# Full source: https://artifacts.apis.io/loopholetape-com/json-schema/loopholetape-com-risk-check-schema.json
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/loopholetape-com-risk-check"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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.