Skip to main content
Glama
ijgc1020

deployer-reputation-mcp

cluster_launches

Read-onlyIdempotent

Group token launches by transitive non-exchange funding associations to return cluster IDs, member identifiers, and launch counts for reputation analysis.

Instructions

Group supplied launches by transitive non-exchange funding associations. Use when you need membership and launch counts only; choose deployer_reputation for heuristic scores and label evidence. Requires 1-1000 distinct-mint edges with caller-resolved deployer, pre-launch funder and mint; token-only rows are insufficient. A funder_is_cex flag anywhere prevents that funder joining distinct deployers, while same-deployer launches remain grouped. outcome, lamports and block_time are validated but do not affect grouping. Stateless local computation, no network/RPC, label verification, credentials, storage writes or external side effects. Returns cluster IDs, sorted member identifiers, launch counts, group count and ID version; no scores or safety/ownership claims. Keep connected groups in one batch; separate calls are never joined. Full stdio request lines are limited to 512000 bytes. Invalid input rejects the whole batch with isError=true; correct it and retry.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
edgesYes1-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.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed25 schema fields changedv1.1.0
    • 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"
      +}
  2. First observedv1.0.0

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Even with annotations declaring readOnlyHint, idempotentHint, and destructiveHint, the description adds substantial behavior: stateless local computation, no network/RPC or credentials, no side effects, invalid input rejecting the whole batch, and the 512000-byte request limit. It also explains that certain fields are validated but do not affect grouping, and that separate calls are never joined.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but every sentence earns its place, covering purpose, alternative, constraints, behavior, output, batch limits, and error handling. The most decision-relevant information (what it does and when to use it) is front-loaded before constraints and implementation details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity, the rich input schema, the output schema, and the annotations, this description is fully complete. It covers input requirements, grouping semantics, batch-split pitfalls, output contents, limitations (no scores/claims), request-size limits, and failure behavior. Nothing needed to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds semantic meaning beyond the schema: "transitive non-exchange funding associations," the batch-wide effect of any funder_is_cex flag, and that same-deployer launches remain grouped. This clarifies what the edges parameter actually represents rather than just repeating field formats.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: "Group supplied launches by transitive non-exchange funding associations." It clearly distinguishes this from the sibling tool by saying "choose deployer_reputation for heuristic scores and label evidence," so an agent can tell them apart immediately.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says when to use this tool: "Use when you need membership and launch counts only." It also names the alternative and the deciding condition, and gives concrete constraints like requiring caller-resolved deployer, pre-launch funder, and mint while noting token-only rows are insufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools