Skip to main content
Glama

confirm_terms

Record acceptance of HederaIntel Terms of Service to enable paid tool execution. Captures timestamped consent server-side without HBAR charges.

Instructions

Confirm acceptance of the HederaIntel Terms of Service. Must be called before any paid tool will execute. Records a timestamped consent event server-side. FREE to call — no HBAR charged.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
api_keyYesYour Hedera account ID / API key (e.g. 0.0.456789)
terms_versionYesThe terms version you are accepting — must match the version returned by get_terms.
confirmedYesMust be true to record consent.

Implementation Reference

  • Handler implementation for the confirm_terms tool, which validates input and records user consent.
    if (name === "confirm_terms") {
      const { api_key, terms_version, confirmed } = args;
    
      if (!confirmed) {
        return {
          success: false,
          reason: "confirmed must be true to record consent.",
        };
      }
    
      if (terms_version !== TERMS_VERSION) {
        return {
          success: false,
          reason: `Terms version mismatch. You submitted '${terms_version}' but the current version is '${TERMS_VERSION}'. Call get_terms to retrieve the latest version.`,
          current_terms_version: TERMS_VERSION,
        };
      }
    
      if (hasConsented(api_key, terms_version)) {
        const existing = getLatestConsent(api_key);
        return {
          success: true,
          already_consented: true,
          message: "Consent already recorded. You may proceed with all paid tools.",
          consented_at: existing?.timestamp,
          terms_version,
        };
      }
    
      // Extract IP / user-agent from request if available (HTTP mode)
      const ipAddress = req?.headers?.["x-forwarded-for"] || req?.socket?.remoteAddress || null;
      const userAgent = req?.headers?.["user-agent"] || null;
    
      recordConsent(api_key, api_key, terms_version, ipAddress, userAgent, null);
    
      return {
        success: true,
        message: "Consent recorded. You may now use all paid tools.",
        api_key,
        terms_version,
        consented_at: new Date().toISOString(),
        next_step: "Call account_info with your api_key to check your HBAR balance, then call any tool.",
      };
    }
  • Schema definition for the confirm_terms tool, defining its input parameters and description.
    {
      name: "confirm_terms",
      description:
        "Confirm acceptance of the HederaIntel Terms of Service. " +
        "Must be called before any paid tool will execute. " +
        "Records a timestamped consent event server-side. " +
        "FREE to call — no HBAR charged.",
      inputSchema: {
        type: "object",
        properties: {
          api_key: {
            type: "string",
            description: "Your Hedera account ID / API key (e.g. 0.0.456789)",
          },
          terms_version: {
            type: "string",
            description: "The terms version you are accepting — must match the current version returned by get_terms.",
          },
          confirmed: {
            type: "boolean",
            description: "Must be true. Passing false is a no-op.",
          },
        },
        required: ["api_key", "terms_version", "confirmed"],
      },
    },
Behavior4/5

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

With no annotations provided, the description carries full burden and discloses key behavioral traits: it records a server-side event with a timestamp, specifies that it's free (no HBAR charged), and indicates it's a prerequisite for paid tools. However, it doesn't mention error conditions, response format, or idempotency, leaving some behavioral aspects uncovered.

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 perfectly front-loaded with the core purpose, followed by essential behavioral details. Every sentence earns its place: the first states the action, the second gives usage timing, the third explains server-side behavior, and the fourth clarifies cost. No wasted words.

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?

For a tool with no annotations and no output schema, the description does well by explaining the prerequisite nature, server-side recording, and cost. However, it doesn't describe what happens after confirmation (e.g., how paid tools become enabled) or potential error responses, leaving some contextual gaps.

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 description coverage is 100%, so the schema already fully documents all three parameters. The description adds no additional parameter semantics beyond what's in the schema descriptions, maintaining the baseline score for high schema coverage.

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 specific action ('Confirm acceptance of the HederaIntel Terms of Service') and resource ('Terms of Service'), distinguishing it from all sibling tools which involve account, contract, governance, HCS, identity, or token operations. It precisely defines the tool's unique function within the server's ecosystem.

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 states when to use this tool ('Must be called before any paid tool will execute') and provides a clear prerequisite condition. It also specifies an alternative ('must match the version returned by get_terms'), giving complete guidance on usage context and dependencies.

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/mountainmystic/hederatoolbox'

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