addedInput schema / description
Added value: +"Caller-enriched snapshot; no datasetId, operation or payload. Each complete stdio request line, including JSON-RPC envelope and newline, must fit 512000 bytes. Examples use fictional identifiers."
addedInput schema / examples
Added value: +[
+ {
+ "edges": [
+ {
+ "deployer": "DemoDeployerA",
+ "funder": "DemoSharedFunder",
+ "mint": "DemoMintA"
+ }
+ ]
+ }
+]
changedInput schema / properties / edges / description
Previous value: -"1-1000 caller-enriched launches with distinct mints. Required per edge: deployer, funder, mint. No RPC, wallet lookup or label verification; token-only rows are insufficient. Calls are stateless."New value: +"1-1000 launches with distinct mints; required per edge: deployer, funder, mint. Resolve multiple funding observations upstream into one edge per launch. Keep connected groups together: arbitrary batch splits change results. Invalid rows reject the whole batch."
addedInput schema / properties / edges / items / properties / block_time / default
Added value: +null
changedInput schema / properties / edges / items / properties / block_time / description
Previous value: -"Nonnegative Unix timestamp in seconds or null, not ISO text or milliseconds. Currently does not affect scoring."New value: +"Integer Unix timestamp in seconds or null, not ISO text, milliseconds or boolean. Validated but not used in grouping or scoring."
addedInput schema / properties / edges / items / properties / block_time / examples
Added value: +[
+ 1700000000,
+ null
+]
changedInput schema / properties / edges / items / properties / deployer / description
Previous value: -"Required caller-resolved launch deployer. Opaque identifier, not a verified address or token holder."New value: +"Caller-resolved launch deployer. Opaque, case-sensitive identifier; not address-validated. No whitespace, control characters or Unicode surrogates."
addedInput schema / properties / edges / items / properties / deployer / examples
Added value: +[
+ "DemoDeployerA"
+]
changedInput schema / properties / edges / items / properties / deployer / pattern
Previous value: -"^[^\\s\\u0000-\\u001f\\u007f-\\u009f\\ud800-\\udfff]+$"New value: +"^[^\\u0000-\\u0020\\u007f-\\u00a0\\u1680\\u2000-\\u200a\\u2028-\\u2029\\u202f\\u205f\\u3000\\ud800-\\udfff]+(?![\\s\\S])"
changedInput schema / properties / edges / items / properties / funder / description
Previous value: -"Required caller-resolved wallet that seeded this deployer before the launch. Never substitute a pool or unknown placeholder."New value: +"Caller-resolved wallet that seeded this deployer before launch. Same identifier rules as deployer. Never substitute a pool or shared unknown placeholder."
addedInput schema / properties / edges / items / properties / funder / examples
Added value: +[
+ "DemoSharedFunder"
+]
changedInput schema / properties / edges / items / properties / funder / pattern
Previous value: -"^[^\\s\\u0000-\\u001f\\u007f-\\u009f\\ud800-\\udfff]+$"New value: +"^[^\\u0000-\\u0020\\u007f-\\u00a0\\u1680\\u2000-\\u200a\\u2028-\\u2029\\u202f\\u205f\\u3000\\ud800-\\udfff]+(?![\\s\\S])"
addedInput schema / properties / edges / items / properties / funder_is_cex / default
Added value: +false
changedInput schema / properties / edges / items / properties / funder_is_cex / description
Previous value: -"Strict boolean, default false. Mark known exchange/infrastructure funders; any true flag prevents that funder joining distinct deployers across this batch."New value: +"Strict boolean. Any true flag excludes this funder from joining distinct deployers across the entire batch; same-deployer launches still group. false is not verified non-exchange status."
addedInput schema / properties / edges / items / properties / funder_is_cex / examples
Added value: +[
+ false,
+ true
+]
addedInput schema / properties / edges / items / properties / lamports / default
Added value: +0
changedInput schema / properties / edges / items / properties / lamports / description
Previous value: -"Nonnegative integer funding amount in lamports, not SOL or a string; defaults to 0. Currently does not affect scoring."New value: +"Integer funding amount in lamports, not SOL, a numeric string or boolean. Validated but not used in grouping or scoring."
addedInput schema / properties / edges / items / properties / lamports / examples
Added value: +[
+ 1000000000
+]
changedInput schema / properties / edges / items / properties / mint / description
Previous value: -"Required launched token identifier, unique within this batch. One edge per mint; not a trading-pair address."New value: +"Launched token identifier, not its trading-pair address. Same identifier rules as deployer. Must be unique across the batch, even when other fields differ."
addedInput schema / properties / edges / items / properties / mint / examples
Added value: +[
+ "DemoMintA"
+]
changedInput schema / properties / edges / items / properties / mint / pattern
Previous value: -"^[^\\s\\u0000-\\u001f\\u007f-\\u009f\\ud800-\\udfff]+$"New value: +"^[^\\u0000-\\u0020\\u007f-\\u00a0\\u1680\\u2000-\\u200a\\u2028-\\u2029\\u202f\\u205f\\u3000\\ud800-\\udfff]+(?![\\s\\S])"
addedInput schema / properties / edges / items / properties / outcome / default
Added value: +"unknown"
changedInput schema / properties / edges / items / properties / outcome / description
Previous value: -"Caller-supplied label; defaults to unknown. rugged maps to rug. Unknown is missing evidence, not safe; labels are not verified."New value: +"Caller-supplied label; rugged maps to rug. unknown is excluded from labeled-launch counts and rug-rate denominators. Labels are not verified."
addedInput schema / properties / edges / items / properties / outcome / examples
Added value: +[
+ "unknown",
+ "rugged"
+]
changedOutput schema / (root)
Previous value: -nullNew value: +{
+ "description": "MCP structuredContent for supported 2025 revisions, also serialized in content[0].text. Protocol-envelope and unknown-tool failures are separate JSON-RPC errors, not analysis objects.",
+ "oneOf": [
+ {
+ "additionalProperties": false,
+ "description": "Successful analysis; MCP isError is false.",
+ "properties": {
+ "clusterIdVersion": {
+ "const": "CL2-SHA256",
+ "type": "string"
+ },
+ "clusters": {
+ "description": "Groups ordered by descending deployers-per-funder, then launch count, then cluster ID. No score or label evidence.",
+ "items": {
+ "additionalProperties": false,
+ "description": "Funding association within this batch, not common ownership.",
+ "properties": {
+ "cluster_id": {
+ "description": "SHA-256 of sorted role-prefixed deployer/funder membership, not operator identity. Mint/label-only changes keep the ID; membership changes can change it.",
+ "pattern": "^CL2-[0-9a-f]{64}(?![\\s\\S])",
+ "type": "string"
+ },
+ "deployers": {
+ "description": "Sorted unique supplied deployers in this group.",
+ "items": {
+ "maxLength": 128,
+ "minLength": 1,
+ "pattern": "^[^\\u0000-\\u0020\\u007f-\\u00a0\\u1680\\u2000-\\u200a\\u2028-\\u2029\\u202f\\u205f\\u3000\\ud800-\\udfff]+(?![\\s\\S])",
+ "type": "string"
+ },
+ "maxItems": 1000,
+ "minItems": 1,
+ "type": "array",
+ "uniqueItems": true
+ },
+ "funders": {
+ "description": "Sorted unique supplied funders in this group.",
+ "items": {
+ "maxLength": 128,
+ "minLength": 1,
+ "pattern": "^[^\\u0000-\\u0020\\u007f-\\u00a0\\u1680\\u2000-\\u200a\\u2028-\\u2029\\u202f\\u205f\\u3000\\ud800-\\udfff]+(?![\\s\\S])",
+ "type": "string"
+ },
+ "maxItems": 1000,
+ "minItems": 1,
+ "type": "array",
+ "uniqueItems": true
+ },
+ "mints": {
+ "description": "Sorted unique supplied mints in this group.",
+ "items": {
+ "maxLength": 128,
+ "minLength": 1,
+ "pattern": "^[^\\u0000-\\u0020\\u007f-\\u00a0\\u1680\\u2000-\\u200a\\u2028-\\u2029\\u202f\\u205f\\u3000\\ud800-\\udfff]+(?![\\s\\S])",
+ "type": "string"
+ },
+ "maxItems": 1000,
+ "minItems": 1,
+ "type": "array",
+ "uniqueItems": true
+ },
+ "n_launches": {
+ "description": "Distinct supplied mints in this group.",
+ "maximum": 1000,
+ "minimum": 1,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "cluster_id",
+ "n_launches",
+ "deployers",
+ "funders",
+ "mints"
+ ],
+ "type": "object"
+ },
+ "maxItems": 1000,
+ "minItems": 1,
+ "type": "array"
+ },
+ "n_clusters": {
+ "description": "Number of returned groups.",
+ "maximum": 1000,
+ "minimum": 1,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "clusters",
+ "n_clusters",
+ "clusterIdVersion"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "description": "Rejected input; MCP isError is true. No partial analysis returned.",
+ "properties": {
+ "error": {
+ "description": "Input rejection reason; correct the batch and retry.",
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "error"
+ ],
+ "type": "object"
+ }
+ ],
+ "type": "object"
+}