{
  "$schema": "https://modelcontextprotocol.io/schemas/server-card/v1.json",
  "serverInfo": {
    "name": "glacier21-dashboard",
    "title": "Glacier21",
    "version": "0.1.0",
    "vendor": "Glacier21",
    "homepage": "https://glacier21.com",
    "documentation": "https://dashboard.glacier21.com/llms-full.txt",
    "license": "proprietary"
  },
  "transport": {
    "type": "streamable-http",
    "url": "https://dashboard.glacier21.com/api/mcp",
    "protocolVersion": "2025-06-18",
    "authentication": {
      "type": "bearer",
      "discovery": "https://dashboard.glacier21.com/.well-known/oauth-authorization-server"
    },
    "status": "live"
  },
  "capabilities": {
    "tools": [
      {
        "name": "register_account",
        "title": "Register a new Glacier21 account",
        "description": "Self-serve signup for autonomous agents. Creates a brand-new account with the supplied email and password. Returns `{access_token, token_type}` — extract `access_token` and pass it as `Authorization: Bearer <token>` on every subsequent authenticated tool call. The token is valid for 24 hours. IMPORTANT: the trial 10 wallet lookups unlock only after the email is verified. Verify by hitting `POST /auth/verify` with the `token` from the welcome email; agents that can't read email should hand off to the human at this step.",
        "backing": {
          "method": "POST",
          "path": "/auth/register",
          "base_url": "https://app-api.glacier21.com",
          "authenticated": false
        }
      },
      {
        "name": "login",
        "title": "Sign in and get a Bearer token",
        "description": "Exchange an email and password for a 24-hour Bearer JWT. Returns `{access_token, token_type}`. Pass `access_token` in the `Authorization: Bearer <token>` header on every authenticated tool call.",
        "backing": {
          "method": "POST",
          "path": "/auth/login",
          "base_url": "https://app-api.glacier21.com",
          "authenticated": false
        }
      },
      {
        "name": "verify_email",
        "title": "Verify the account's email with a token",
        "description": "Confirm the email address on a freshly-registered account using the verification token from the welcome email. Required before wallet search and AWS-backed API key issuance unlock. Body: `{token}`.",
        "backing": {
          "method": "POST",
          "path": "/auth/verify",
          "base_url": "https://app-api.glacier21.com",
          "authenticated": false
        }
      },
      {
        "name": "logout",
        "title": "Discard the current Bearer token",
        "description": "Acknowledges that the agent will drop the bearer token on its end. JWTs are stateless, so there's no server session to delete; this exists so the OAuth `revocation_endpoint` advertised in `/.well-known/oauth-authorization-server` resolves to a real URL.",
        "backing": {
          "method": "POST",
          "path": "/auth/logout",
          "base_url": "https://app-api.glacier21.com",
          "authenticated": true
        }
      },
      {
        "name": "search_wallet",
        "title": "Search a wallet address",
        "description": "Look up identity, social handles, owned assets, sanctions exposure, and other off-chain signals for any blockchain wallet address.",
        "backing": {
          "method": "POST",
          "path": "/wallet/search",
          "base_url": "https://app-api.glacier21.com",
          "authenticated": true
        },
        "pricing": {
          "type": "per-call",
          "currency": "USD",
          "amount": 0.05
        }
      },
      {
        "name": "get_usage_stats",
        "title": "Get current usage and quota",
        "description": "Returns requests made this period, monthly limit (including referral bonuses), and billing-period dates.",
        "backing": {
          "method": "GET",
          "path": "/usage/stats",
          "base_url": "https://app-api.glacier21.com",
          "authenticated": true
        }
      },
      {
        "name": "list_api_keys",
        "title": "List API keys",
        "description": "Return every API key on the account with active/revoked status and usage timestamps.",
        "backing": {
          "method": "GET",
          "path": "/api-keys/",
          "base_url": "https://app-api.glacier21.com",
          "authenticated": true
        }
      },
      {
        "name": "create_api_key",
        "title": "Create an API key",
        "description": "Mint a new AWS-API-Gateway-backed key. The full key value is returned exactly once.",
        "backing": {
          "method": "POST",
          "path": "/api-keys/",
          "base_url": "https://app-api.glacier21.com",
          "authenticated": true
        }
      },
      {
        "name": "revoke_api_key",
        "title": "Revoke an API key",
        "description": "Disable an API key in AWS API Gateway and mark it inactive on the account.",
        "backing": {
          "method": "DELETE",
          "path": "/api-keys/{id}",
          "base_url": "https://app-api.glacier21.com",
          "authenticated": true
        }
      },
      {
        "name": "list_plans",
        "title": "List subscription plans",
        "description": "Returns the public catalog of plans (Free, Frost, Iceberg, Avalanche) with pricing and request quotas.",
        "backing": {
          "method": "GET",
          "path": "/plans",
          "base_url": "https://app-api.glacier21.com",
          "authenticated": false
        }
      },
      {
        "name": "subscribe_to_plan",
        "title": "Subscribe to a paid plan",
        "description": "Creates a Stripe Checkout session for the chosen plan and returns a hosted checkout URL the agent can complete with a card-on-file or x402 / MPP payment. Self-serve tiers: Frost ($499/mo, 10K lookups/mo) and Iceberg ($2,499/mo, 300K lookups/mo). Avalanche is enterprise-only; call list_plans for the contact path.",
        "backing": {
          "method": "POST",
          "path": "/billing/create-checkout-session",
          "base_url": "https://app-api.glacier21.com",
          "authenticated": true
        },
        "pricing": {
          "type": "subscription",
          "currency": "USD",
          "amount": 499,
          "interval": "month"
        }
      },
      {
        "name": "get_subscription",
        "title": "Get current subscription",
        "description": "Returns the active Stripe subscription, plan tier, status, and renewal date.",
        "backing": {
          "method": "GET",
          "path": "/billing/subscription",
          "base_url": "https://app-api.glacier21.com",
          "authenticated": true
        }
      },
      {
        "name": "cancel_subscription",
        "title": "Cancel subscription",
        "description": "Cancels the subscription at period end. Access remains until the current period closes.",
        "backing": {
          "method": "POST",
          "path": "/billing/cancel",
          "base_url": "https://app-api.glacier21.com",
          "authenticated": true
        }
      }
    ],
    "resources": [
      {
        "uri": "glacier21://account",
        "name": "account",
        "description": "The signed-in user's profile, plan, and verification state."
      },
      {
        "uri": "glacier21://usage",
        "name": "usage",
        "description": "Current usage counters and the active billing period."
      },
      {
        "uri": "glacier21://api-keys",
        "name": "api-keys",
        "description": "Every API key on the account with status and last-use times."
      }
    ],
    "prompts": [
      {
        "name": "summarize-wallet",
        "description": "Walk the user through what we know about a given wallet address (identity, on-chain activity, and risk signals)."
      }
    ],
    "experimental": {
      "webmcp": true
    }
  },
  "contact": {
    "email": "ren@glacier21.com",
    "url": "https://glacier21.com/contact"
  }
}