Skip to main content
Glama

Get the agent's Grip wallet info

grip_wallet
Read-onlyIdempotent

Retrieves the agent's Grip Pay wallet address and current USDC balance on Base mainnet. Use to check wallet details or confirm funds before payments.

Instructions

Returns this agent's Grip Pay wallet address (Base mainnet smart account) and current USDC balance. Use this when the human asks about the wallet, where to fund it, how much USDC the agent has, or before suggesting any payment.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • Registration of the 'grip_wallet' tool via server.registerTool with input schema and metadata (readOnlyHint, etc.)
    server.registerTool(
      "grip_wallet",
      {
        title: "Get the agent's Grip wallet info",
        description:
          "Returns this agent's Grip Pay wallet address (Base mainnet smart account) and current USDC balance. Use this when the human asks about the wallet, where to fund it, how much USDC the agent has, or before suggesting any payment.",
        inputSchema: {},
        annotations: {
          readOnlyHint: true,
          destructiveHint: false,
          idempotentHint: true,
          openWorldHint: true,
        },
      },
      async () => {
        try {
          const addr = await smartAddress();
          const balance = await client.balance();
          const text = [
            `Grip wallet (Base mainnet)`,
            ``,
            `Address: ${addr}`,
            `Balance: ${balance.formatted} USDC`,
            `Per-tx cap: ${PER_TX_CAP} USDC`,
            `Daily cap: ${DAILY_CAP} USDC (spent today: ${todaySpent().toFixed(2)})`,
            ``,
            `To fund: send USDC on Base to the address above.`,
            `Basescan: https://basescan.org/address/${addr}`,
          ].join("\n");
          return { content: [{ type: "text", text }] };
        } catch (e) {
          return {
            content: [{ type: "text", text: `Could not read wallet: ${(e as Error).message}` }],
            isError: true,
          };
        }
      },
    );
  • Handler function that calls smartAddress() and client.balance() to return wallet address and USDC balance as text content
    async () => {
      try {
        const addr = await smartAddress();
        const balance = await client.balance();
        const text = [
          `Grip wallet (Base mainnet)`,
          ``,
          `Address: ${addr}`,
          `Balance: ${balance.formatted} USDC`,
          `Per-tx cap: ${PER_TX_CAP} USDC`,
          `Daily cap: ${DAILY_CAP} USDC (spent today: ${todaySpent().toFixed(2)})`,
          ``,
          `To fund: send USDC on Base to the address above.`,
          `Basescan: https://basescan.org/address/${addr}`,
        ].join("\n");
        return { content: [{ type: "text", text }] };
      } catch (e) {
        return {
          content: [{ type: "text", text: `Could not read wallet: ${(e as Error).message}` }],
          isError: true,
        };
      }
    },
  • Input schema (empty object) and annotations for the grip_wallet tool (readOnlyHint, idempotentHint, etc.)
    {
      title: "Get the agent's Grip wallet info",
      description:
        "Returns this agent's Grip Pay wallet address (Base mainnet smart account) and current USDC balance. Use this when the human asks about the wallet, where to fund it, how much USDC the agent has, or before suggesting any payment.",
      inputSchema: {},
      annotations: {
        readOnlyHint: true,
        destructiveHint: false,
        idempotentHint: true,
        openWorldHint: true,
      },
  • Helper function smartAddress() that lazily resolves the smart account address via client.address()
    async function smartAddress(): Promise<string> {
      if (_smartAddr) return _smartAddr;
      _smartAddr = (await client.address()) as string;
      return _smartAddr;
    }
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true. The description adds behavioral context by detailing the returned data (wallet address and USDC balance), which is valuable beyond the annotations.

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 extremely concise, consisting of two short sentences. The key purpose is front-loaded, and there is no unnecessary information.

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 lack of output schema and the simplicity of the tool, the description covers the essential aspects: what it returns and when to use it. It could be slightly improved by mentioning the format of the output, but it is largely complete.

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?

The tool has no parameters, and the description does not need to add parameter information. The baseline score of 4 is appropriate given 100% schema description 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 that the tool returns the agent's wallet address and USDC balance. It uses a specific verb ('Returns') and resource ('wallet info'), and the purpose is distinct from sibling tools which deal with payments.

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?

The description explicitly lists scenarios when to use the tool: when the human asks about the wallet, where to fund it, how much USDC the agent has, or before suggesting any payment. This provides clear guidance without needing to mention alternatives.

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/grip-foundation/grip-mcp'

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