Skip to main content
Glama

trust_check

Verify wallet address trust status with a single call. Get trust verdict, reputation score, tier level, and profile information for AI agents.

Instructions

Single-call trust verdict for any wallet address. Returns whether the agent is trusted, their score, tier, and profile info. Unregistered agents get trusted: false with a registration CTA.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
wallet_addressYesWallet address to check trust status for

Implementation Reference

  • The `trust_check` tool implementation. It performs a database lookup to check if a wallet is associated with a stamp or a registered agent, computes a reputation score, and returns the trust verdict, including score, tier, and agent/stamp details if available.
    server.tool(
      'trust_check',
      'Single-call trust verdict for any wallet address. Returns whether the agent is trusted, their score, tier, and profile info. Unregistered agents get trusted: false with a registration CTA.',
      {
        wallet_address: z.string().describe('Wallet address to check trust status for'),
      },
      async ({ wallet_address }) => {
        const { getDb } = require('./database');
        const db = getDb();
    
        const stamp = db.prepare(
          "SELECT id, tier, expires_at FROM stamps WHERE wallet_address = ? AND revoked = 0 AND expires_at > datetime('now') ORDER BY CASE tier WHEN 'gold' THEN 1 WHEN 'silver' THEN 2 WHEN 'bronze' THEN 3 WHEN 'free' THEN 4 ELSE 5 END LIMIT 1"
        ).get(wallet_address);
    
        const agent = db.prepare(
          "SELECT id, name, category, endorsement_count, status, registered_at FROM agents WHERE wallet_address = ? AND status = 'active' LIMIT 1"
        ).get(wallet_address);
    
        if (!stamp && !agent) {
          return { content: [{ type: 'text', text: JSON.stringify({
            trusted: false,
            score: 0,
            tier: null,
            label: 'unknown',
            message: 'This wallet has no AgentStamp identity. The agent is unverified and not in the public registry.',
            action: {
              register: 'https://agentstamp.org/register',
              message: 'Register for free in 60 seconds to become trusted and discoverable.',
            },
          }, null, 2) }] };
        }
    
        let reputation = { score: 0, tier_label: 'new', breakdown: null };
        if (agent) {
          const rep = computeReputation(agent.id);
          if (rep) reputation = rep;
        }
    
        const trusted = reputation.score >= 10 || !!stamp;
    
        return {
          content: [{ type: 'text', text: JSON.stringify({
            trusted,
            score: reputation.score,
            tier: stamp?.tier || 'none',
            label: reputation.tier_label,
            agent: agent ? {
              id: agent.id,
              name: agent.name,
              category: agent.category,
              endorsements: agent.endorsement_count,
              profile_url: `https://agentstamp.org/registry/${agent.id}`,
            } : null,
            stamp: stamp ? { id: stamp.id, tier: stamp.tier, expires_at: stamp.expires_at } : null,
          }, null, 2) }],
        };
      }
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses the return payload structure ('whether the agent is trusted, their score, tier, and profile info') and critical edge-case behavior for unregistered agents ('trusted: false with a registration CTA'), providing substantial behavioral context.

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?

Two dense sentences with zero waste. The first sentence front-loads purpose and return values; the second covers the unregistered edge case. Every clause earns its place.

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 the simple input schema (1 parameter, 100% coverage) and lack of output schema, the description adequately compensates by detailing return values and unregistered behavior. Minor gap: no mention of rate limits or authentication requirements typical for trust APIs.

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%, establishing a baseline of 3. The description mentions 'wallet address' but adds no formatting requirements, validation rules, or syntax details beyond what the schema already provides.

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 ('trust verdict') and resource ('wallet address') and uses 'Single-call' to implicitly distinguish from sibling tools like 'trust_network' (network analysis) and 'trust_compare' (comparative analysis). It clearly defines the scope and target.

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?

While it doesn't explicitly name alternatives, the term 'Single-call' provides implied usage guidance, suggesting it for individual lookups versus network analysis or bulk operations. However, it lacks explicit 'when-not-to-use' or guidance regarding the sibling 'bridge_erc8004_trust_check'.

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/vinaybhosle/agentstamp'

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