Skip to main content
Glama

hyperd.token.security

Assess a token's security risk with a score from 0 to 100. Analyzes honeypot risk, owner permissions, holder concentration, taxes, and source verification. Returns risk band and structured findings for informed trading decisions.

Instructions

Get a token's security risk score (0-100). Ensemble of GoPlus signals: honeypot detection, owner permissions, holder concentration, buy/sell taxes, source verification. Returns score, band (safe/caution/warning/danger), and structured findings. Costs $0.05 in USDC.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
contractYesToken contract address
chainNoChain. Default 'base'.

Implementation Reference

  • Defines and registers the hyperd.token.security MCP tool. The handler calls paidGet('/api/token/security', args) which performs an x402-paid GET to the hyperD API, passing contract address and optional chain as query params.
    // hyperd.token.security — security risk score ($0.05)
    server.tool(
      "hyperd.token.security",
      "Get a token's security risk score (0-100). Ensemble of GoPlus signals: honeypot detection, owner permissions, holder concentration, buy/sell taxes, source verification. Returns score, band (safe/caution/warning/danger), and structured findings. Costs $0.05 in USDC.",
      {
        contract: z.string().describe("Token contract address"),
        chain: z.string().optional().describe("Chain. Default 'base'."),
      },
      async (args) => asText(await paidGet("/api/token/security", args)),
    );
  • Zod schema defining input validation for the tool: 'contract' (required string) and 'chain' (optional string, defaults to 'base').
    {
      contract: z.string().describe("Token contract address"),
      chain: z.string().optional().describe("Chain. Default 'base'."),
    },
  • src/server.ts:247-255 (registration)
    Registers the 'hyperd.token.security' tool on the MCP server via server.tool(), providing name, description, input schema, and handler function.
    server.tool(
      "hyperd.token.security",
      "Get a token's security risk score (0-100). Ensemble of GoPlus signals: honeypot detection, owner permissions, holder concentration, buy/sell taxes, source verification. Returns score, band (safe/caution/warning/danger), and structured findings. Costs $0.05 in USDC.",
      {
        contract: z.string().describe("Token contract address"),
        chain: z.string().optional().describe("Chain. Default 'base'."),
      },
      async (args) => asText(await paidGet("/api/token/security", args)),
    );
  • Helper function paidGet used by the tool handler. Performs a paid x402-authenticated GET request to the hyperD API, handling payment challenges (HTTP 402) via the x402 protocol.
    async function paidGet(
      path: string,
      query: Record<string, string | number | boolean | undefined>,
    ): Promise<unknown> {
      if (!httpClient) {
        throw new Error(WALLET_NOT_CONFIGURED_MSG);
      }
    
      const url = new URL(`${API_BASE}${path}`);
      for (const [k, v] of Object.entries(query)) {
        if (v !== undefined && v !== "" && v !== null) url.searchParams.set(k, String(v));
      }
      return paidRequest("GET", url, undefined);
    }
Behavior4/5

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

The tool has no annotations, so the description carries the full burden. It discloses the input, output format, cost, and signal sources, effectively conveying a read-only, safe operation.

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?

Four sentences cover purpose, signals, output, and cost, with no filler. Essential details are front-loaded.

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

Completeness4/5

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

Given no output schema, the description adequately explains the return shape (score, band, findings) and cost. However, band thresholds or error handling are not covered, which would fully complete the picture.

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

Parameters3/5

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

Schema coverage is 100%; the description adds no extra meaning beyond the schema, such as valid chain values or format requirements.

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 clearly states the tool retrieves a token's security risk score (0-100) using GoPlus signals, differentiating it from other risk tools by its focus on a composite score with bands.

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

Usage Guidelines3/5

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

The description mentions the cost ($0.05), implying it's a paid tool, but does not explicitly state when to use this tool over siblings like hyperd.contract.audit or hyperd.wallet.risk.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/hyperd-ai/hyperd-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server