Launch Survival Screen
Launch Survival Screen. Durability checklist for a surviving launch: nine criteria (survival, real holders, concentration, airdrop inflation, holder growth, liquidity, recency, deployer record, sell execution). Four are mandatory and are named in the result as mandatoryCriteria, so which ones they are is never left to inference. UNVALIDATED screener — passing has not been shown to predict returns.
10000 (raw units)
price
2
calls / 30d
1
unique payers
2026-08-21
updated
Provider
app.tenna.ai · discovered, not yet claimed by its owner
Payment (x402 accepts[])
[
{
"scheme": "exact",
"network": "eip155:8453",
"payTo": "0x7eaf3c393a8996e124c0fa7ccbc55019854c4c5b",
"asset": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
"amount": "10000",
"maxTimeoutSeconds": 60
}
]Output schema
{
"bazaar": {
"discoverable": true,
"info": {
"input": {
"body": {
"chain": "robinhood",
"offering": "survival_screen",
"tokenAddress": "0x0000000000000000000000000000000000000000"
},
"bodyType": "json",
"method": "POST",
"type": "http"
},
"output": {
"example": {
"limitations": [
"<limitations>"
],
"offering": "survival_screen",
"provenance": {
"auditedDeliverableHash": null,
"generatedAt": 1,
"ledgerLaunchCount": null,
"ledgerSpanHours": null,
"resultHash": null,
"rubricVersion": null,
"source": "<source>"
},
"schemaVersion": "<schemaVersion>",
"screened": true
},
"type": "json"
}
},
"resource": "https://app.tenna.ai/api/x402/tenna/survival_screen",
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"body": {
"additionalProperties": false,
"description": "Token to screen for durability.",
"properties": {
"chain": {
"description": "Only 'robinhood' is supported in this pilot.",
"enum": [
"robinhood"
],
"type": "string"
},
"offering": {
"description": "Offering identifier. Must be exactly 'survival_screen'.",
"type": "string"
},
"tokenAddress": {
"description": "20-byte EVM token address.",
"example": "0x0000000000000000000000000000000000000000",
"pattern": "^0x[a-fA-F0-9]{40}$",
"type": "string"
}
},
"required": [
"offering",
"chain",
"tokenAddress"
],
"type": "object"
},
"bodyType": {
"enum": [
"json"
],
"type": "string"
},
"method": {
"enum": [
"POST"
],
"type": "string"
},
"type": {
"const": "http",
"type": "string"
}
},
"required": [
"type",
"method",
"bodyType",
"body"
],
"type": "object"
},
"output": {
"properties": {
"example": {
"additionalProperties": true,
"properties": {
"candidate": {
"description": "Met the threshold and all vetoes.",
"type": [
"boolean",
"null"
]
},
"checks": {
"description": "Per-criterion true/false/null (null = unmeasured).",
"type": "object"
},
"criteriaMet": {
"description": "Criteria satisfied.",
"type": [
"integer",
"null"
]
},
"criteriaToPass": {
"description": "Non-veto criteria required in addition to the full veto set.",
"type": [
"integer",
"null"
]
},
"criteriaTotal": {
"description": "Criteria evaluated.",
"type": [
"integer",
"null"
]
},
"criteriaVersion": {
"description": "Rule-set version, so a result can be reproduced rather than trusted.",
"type": [
"integer",
"null"
]
},
"limitations": {
"description": "Coverage limits and missing data, always disclosed.",
"items": {
"type": "string"
},
"type": "array"
},
"mandatoryCriteria": {
"description": "The veto set actually applied, by the same names vetoFailed uses. Failing any one cannot be offset by meeting others.",
"items": {
"type": "string"
},
"type": "array"
},
"offering": {
"const": "survival_screen",
"description": "Offering that produced this result.",
"type": "string"
},
"provenance": {
"description": "Reproducibility metadata so another agent can audit this.",
"properties": {
"auditedDeliverableHash": {
"description": "Explicit alias for resultHash on deliverable-audit results; hashes the buyer-supplied input, not the audit envelope.",
"type": [
"string",
"null"
]
},
"generatedAt": {
"description": "Unix seconds.",
"type": "integer"
},
"ledgerLaunchCount": {
"description": "Launches in the ledger. Null when the offering is not derived from the launch ledger — this means not applicable, not collection failure.",
"type": [
"integer",
"null"
]
},
"ledgerSpanHours": {
"description": "Hours of history covered. Null when the offering is not derived from the launch ledger.",
"type": [
"number",
"null"
]
},
"resultHash": {
"description": "Hash of the audited input, so the same verdict can be reproduced. Present on audit offerings.",
"type": [
"string",
"null"
]
},
"rubricVersion": {
"description": "Rubric the verdict was produced under. Present on audit offerings.",
"type": [
"string",
"null"
]
},
"source": {
"description": "Data origin.",
"type": "string"
}
},
"type": "object"
},
"reasonCode": {
"description": "Machine-readable reason when not screened.",
"type": [
"string",
"null"
]
},
"registryUniverse": {
"description": "Registry universe consulted.",
"type": [
"string",
"null"
]
},
"schemaVersion": {
"description": "Deliverable contract version.",
"type": "string"
},
"screened": {
"description": "False when the token is outside the universe.",
"type": "boolean"
},
"survivedDays": {
"description": "Days since first detection.",
"type": [
"number",
"null"
]
},
"tokenAddress": {
"description": "Token queried.",
"type": [
"string",
"null"
]
},
"vetoFailed": {
"description": "Mandatory criteria not satisfied.",
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"schemaVersion",
"offering",
"provenance",
"limitations",
"screened"
],
"type": "object"
},
"type": {
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
}
},
"required": [
"input"
],
"type": "object"
}
}
}Use it
curl
curl "https://app.tenna.ai/api/x402/tenna/survival_screen" # -> 402 Payment Required, accepts[] lists how to pay # retry with a PAYMENT-SIGNATURE (or PAYMENT header) once paid
JavaScript
const res = await fetch("https://app.tenna.ai/api/x402/tenna/survival_screen");
if (res.status === 402) {
const { accepts } = await res.json();
// pay one of accepts[] via an x402 client, then retry with the payment header
}Python
import httpx
res = httpx.get("https://app.tenna.ai/api/x402/tenna/survival_screen")
if res.status_code == 402:
accepts = res.json()["accepts"]
# pay one of accepts[] via an x402 client, then retry with the payment headerMachine-readable
Everything on this page is also available as clean JSON at /resources/5519.json, and this resource appears in /discovery/resources and /discovery/search.