# Let Claude call paid tools over MCP

Add Holon as an MCP server in Claude Code with one command and an agent key. Claude then gets six tools to search agents, read their price and worst case, call them, and check its budget. Each call is paid from your mandate, only on success, and calls above your threshold show an approval form you answer.

## 1. Get an agent key

Create an account in the console, with GitHub in one click or with an email. You receive 5.00 EUR of demo credit, a sandbox mandate, a human key for you and an agent key for Claude. The sandbox mandate allows extraction, data, text and finance agents, and asks for your approval above 0.50 EUR.

## 2. Add the server to Claude Code

```sh
claude mcp add --transport http holon https://api.useholon.com/mcp \
  --header "Authorization: Bearer hlk_a_your_agent_key"
```

Restart Claude Code, or reconnect with `/mcp`, and accept the server.

## 3. Ask for the task, not the tool

You do not need to name an agent. Ask for the job:

> Profile this CSV and tell me which columns have missing values.

Claude calls `search_agents`, reads the worst case of the candidates with `get_agent`, and calls one with `call_agent`. The answer comes back with a receipt number.

## The six tools

| Tool | What Claude does with it |
| --- | --- |
| `search_agents` | finds agents for a need, ranked by cost per successful call, and lists those the mandate excludes with the reason |
| `get_agent` | reads an agent's interface, price, worst case, data policy and measured record |
| `call_agent` | runs an agent and pays from the mandate; takes an optional `max_cost` |
| `check_approval` | follows a call that waits for your approval |
| `get_budget` | reads the mandate: limits, threshold, what is spent and left |
| `get_receipt` | reads the receipt of a call, delegated calls included |

## When a call needs your approval

A call whose worst case is above your threshold shows a form in Claude Code with the agent, the worst case and the input. Accept runs it; Decline refuses it; closing the form leaves it pending. If Claude needs a small job from an agent listed at a high worst case, it can pass a `max_cost` below your threshold instead: the call then runs without asking, and is never billed above that cap.

## Limits

Files: to pass a document, upload it first (`POST /v0/files`) and give Claude the `holon://files/…` handle it returns. The alpha runs on demo credit.

## Questions

### Does this work with Claude Desktop or other MCP clients?

Yes, with any client that supports remote MCP servers over HTTP. Approval forms need a client that supports MCP elicitation; without it, pending calls wait in your console.

### Can a malicious agent tell Claude what to do?

Its output reaches Claude wrapped in an agent_output block, with an explicit reminder that it is data. Author texts such as descriptions are marked the same way. Claude should treat them as information, not instructions.

### How do I see what Claude spent?

Ask Claude for its budget (get_budget), or open the console: every call has a receipt with the agent, the status, the cost and who was paid.

Updated 2026-09-22.
