Skip to main content
Glama
goodmeta

agent-verifier-mcp

by goodmeta
README.md
# Agent Verifier MCP

MCP server implementing the [Budget Authority Protocol](https://github.com/goodmeta/agent-payments-landscape/blob/main/specs/budget-authority-protocol.md). Spending limits for AI agents. Two ways to connect:

**Option A: Local (npx)**
```json
{
  "mcpServers": {
    "budget": {
      "command": "npx",
      "args": ["@goodmeta/agent-verifier-mcp"],
      "env": { "VERIFIER_API_KEY": "gm_..." }
    }
  }
}
```

**Option B: Remote (no install)**
```json
{
  "mcpServers": {
    "budget": {
      "type": "streamable-http",
      "url": "https://verifier.goodmeta.co/mcp",
      "headers": { "Authorization": "Bearer gm_..." }
    }
  }
}
```

Then ask your agent:

> "Search Exa for agent payments research. Budget: $1."

The agent calls `create_budget`, `check_budget` before each payment, and `settle` after. If the budget runs out, the next payment is denied.

## Tools

| Tool | What it does |
| ---- | ------------ |
| `create_budget` | Set a spending limit ($10, 24 hours) |
| `check_budget` | Check if a purchase is allowed (places a hold) |
| `settle` | Confirm hold after payment, or release if payment failed |
| `release` | Return a pre-commit hold to the budget (cancel before it settles) |
| `refund` | Reverse a settled payment, fully or partially |
| `get_budget` | Query remaining budget and history |
| `query_reservation` | Look up a single hold's state (held, settled, released, refunded) |

## How it works

```
Agent wants to buy something ($0.50)
  │
  ├── check_budget(budget_id, 50, "vendor")
  │     → "Approved. Hold ID: hold_abc. Remaining: $9.50"
  │
  ├── [agent makes the payment via x402/card/MPP/any rail]
  │
  └── settle(hold_id, success=true)
        → "Hold confirmed."
```

Budget enforcement is rail-agnostic. Works with x402, credit cards, MPP, bank transfers — the verifier tracks the budget, the payment method doesn't matter.

## Setup

Get a free API key:

```bash
curl -X POST https://verifier.goodmeta.co/setup/merchants \
  -H "Content-Type: application/json" \
  -d '{"names":["My Agent"]}'
```

Add the key to your MCP config. Done.

## Works with

- [Claude Code](https://claude.ai/code)
- Any MCP-compatible client (Cursor, Windsurf, Codex, OpenClaw)
- [agent-verifier](https://github.com/goodmeta/agent-verifier) npm package for programmatic use
- [demo-agent](https://github.com/goodmeta/demo-agent) for a full working example with real x402 payments

## Why

Five protocols let AI agents spend money (AP2, ACP, x402, MPP, UCP). None of them track what the agent spent across services. An agent calling Exa + Firecrawl + Nansen can overspend because each service approves independently. This MCP server is the missing budget layer.

TDQS

A3.7/5.0

Scored across 7 tools

Disambiguation4/5

Most tools have distinct purposes, but 'release' and 'refund' could be confused without careful reading of descriptions. However, the descriptions clearly differentiate pre-commit vs. settled.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case, e.g., check_budget, create_budget, query_reservation.

Tool Count5/5

7 tools cover the essential budget and payment lifecycle without being bloated. Each tool serves a clear role.

Completeness4/5

The tool set covers create, check, hold, settle, release, refund, and query operations. Missing update or delete budget, but those are less critical for the core workflow.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive