Batch Deployer & Launcher Check
Batch Deployer & Launcher Check. Batch deployer-history and launcher-classification check for up to 20 tokens. It does not run the survival screen or issue a token risk/safety verdict; it is never a safety verdict. Tokens absent from the ledger return an explicit row state and null component fields.
10000 (raw units)
price
1
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": "batch_screen",
"tokenAddresses": [
"0x0000000000000000000000000000000000000000"
]
},
"bodyType": "json",
"method": "POST",
"type": "http"
},
"output": {
"example": {
"count": 1,
"limitations": [
"<limitations>"
],
"offering": "batch_screen",
"provenance": {
"auditedDeliverableHash": null,
"generatedAt": 1,
"ledgerLaunchCount": null,
"ledgerSpanHours": null,
"resultHash": null,
"rubricVersion": null,
"source": "<source>"
},
"rows": [
{
"deployerDown90Pct": null,
"deployerKnown": true,
"deployerObservedLaunches": null,
"launcher": null,
"launcherLabelSource": "<launcherLabelSource>",
"launcherRegistryVersion": "<launcherRegistryVersion>",
"observedInLedger": true,
"rowState": "OBSERVED_IN_LEDGER",
"survivalScreenApplied": false,
"tokenAddress": "0x0000000000000000000000000000000000000000"
}
],
"schemaVersion": "<schemaVersion>",
"screenScope": "DEPLOYER_HISTORY_AND_LAUNCHER_CLASSIFICATION_ONLY"
},
"type": "json"
}
},
"resource": "https://app.tenna.ai/api/x402/tenna/batch_screen",
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"body": {
"additionalProperties": false,
"description": "Up to 20 tokens to screen.",
"properties": {
"chain": {
"description": "Only 'robinhood' supported.",
"enum": [
"robinhood"
],
"type": "string"
},
"offering": {
"description": "Offering identifier. Must be exactly 'batch_screen'.",
"type": "string"
},
"tokenAddresses": {
"description": "Token addresses (max 20).",
"items": {
"example": "0x0000000000000000000000000000000000000000",
"pattern": "^0x[a-fA-F0-9]{40}$",
"type": "string"
},
"maxItems": 20,
"minItems": 1,
"type": "array"
}
},
"required": [
"offering",
"chain",
"tokenAddresses"
],
"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": {
"count": {
"description": "Tokens processed.",
"type": "integer"
},
"limitations": {
"description": "Coverage limits and missing data, always disclosed.",
"items": {
"type": "string"
},
"type": "array"
},
"offering": {
"const": "batch_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"
},
"rows": {
"description": "Per-token component facts.",
"items": {
"additionalProperties": false,
"properties": {
"deployerDown90Pct": {
"description": "Cumulative share of observed launches down 90%.",
"type": [
"number",
"null"
]
},
"deployerKnown": {
"description": "Whether deployer history was observed.",
"type": "boolean"
},
"deployerObservedLaunches": {
"description": "Observed launches for that deployer.",
"type": [
"integer",
"null"
]
},
"launcher": {
"description": "Launcher classification label.",
"type": [
"string",
"null"
]
},
"launcherLabelSource": {
"description": "Whether the label matched the local registry.",
"type": "string"
},
"launcherRegistryVersion": {
"description": "Fingerprint of the label registry used.",
"type": "string"
},
"observedInLedger": {
"description": "Whether the token exists in the source ledger.",
"type": "boolean"
},
"rowState": {
"description": "OBSERVED_IN_LEDGER or TOKEN_NOT_IN_LEDGER.",
"enum": [
"OBSERVED_IN_LEDGER",
"TOKEN_NOT_IN_LEDGER"
],
"type": "string"
},
"survivalScreenApplied": {
"const": false,
"description": "Always false; this product does not run survival criteria.",
"type": "boolean"
},
"tokenAddress": {
"description": "Token queried.",
"example": "0x0000000000000000000000000000000000000000",
"pattern": "^0x[a-fA-F0-9]{40}$",
"type": "string"
}
},
"required": [
"tokenAddress",
"observedInLedger",
"rowState",
"deployerKnown",
"deployerObservedLaunches",
"deployerDown90Pct",
"launcher",
"launcherLabelSource",
"launcherRegistryVersion",
"survivalScreenApplied"
],
"type": "object"
},
"type": "array"
},
"schemaVersion": {
"description": "Deliverable contract version.",
"type": "string"
},
"screenScope": {
"const": "DEPLOYER_HISTORY_AND_LAUNCHER_CLASSIFICATION_ONLY",
"description": "Exact component scope; no survival or safety verdict.",
"type": "string"
}
},
"required": [
"schemaVersion",
"offering",
"provenance",
"limitations",
"count",
"screenScope",
"rows"
],
"type": "object"
},
"type": {
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
}
},
"required": [
"input"
],
"type": "object"
}
}
}Use it
curl
curl "https://app.tenna.ai/api/x402/tenna/batch_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/batch_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/batch_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/5525.json, and this resource appears in /discovery/resources and /discovery/search.