mcpbelt

Connecting a new tool usually costs more than trying it

One command, and nobody has to be there. No signup, no email, no page to approve, no API key to paste into a config file and remember to rotate.

The problem

01

Trying a new tool normally means creating an account, verifying an email, landing in a dashboard, generating a key, pasting it into a config file, restarting the client, and putting a note somewhere about rotating that key later. Seven steps, and none of them tell you whether the tool is any good.

You pay all of that before you learn anything. The evaluation you actually wanted was two minutes long: hand it a file, see if the answer is right. Instead the cheapest part of the process is the part that comes last.

For an agent it is worse than tedious. Every one of those steps is a human step, in a browser, with an inbox involved. The thing that was supposed to work on its own cannot get past the front door on its own.

An agent with no browser at all, running in CI or on a server, does not get through any of it.

Why it fails locally

02

The friction is not accidental, it is the shape of API-key auth. A long-lived secret in a config file has to be created by someone, stored by someone, and rotated by someone, and each of those someones is a person doing manual work. That is the price of the mechanism, not of the product.

It also does not fit the protocol. MCP authorisation is OAuth 2.1, and that is the only scheme in the specification: dynamic client registration, PKCE, tokens the client obtains and refreshes by itself. A key in a header is not an option the clients implement, so a service that only offers one is a service most clients cannot talk to at all.

Which leaves the awkward middle: an agent that can call the tool but cannot get the credential to call it with, waiting for a person to finish a signup flow it is not allowed to touch.

The code

03

One command. The client registers itself, authorises itself, and the account exists with trial credit on it. Nobody has to be at the keyboard.

claude mcp add --transport http mcpbelt https://mcpbelt.com/mcp/

# the client registers and authorises itself, and that is the whole signup
# with no browser, five plain HTTP calls do the same thing: see /llms.txt

account()
  -> credits_available_eur, top_up_url

upload(filename="invoice.pdf", content_type="application/pdf")
  -> key, upload_url

curl -T invoice.pdf "<upload_url>"

read(key="<key>")
  -> handle, engine, cost_eur, structure, text

What it costs

04

Connecting costs nothing and there is no card involved. The account is created with 0.10 EUR of trial credit on it, which is enough to read a few documents or transcribe a few voice notes and decide whether any of this is worth paying for.

After that, credit is prepaid: no subscription, no per-call invoice, top-ups from 5 EUR. Only work is billed. upload, result, cancel, account are free at any volume, so an agent can check the balance, price a job, page through a result and cancel a queued one without spending anything.

Then the work itself: read at 0.007 EUR per page and listen at 0.005 EUR per minute in balanced mode. Six tools arrive with the connection and there are no others to discover later.

What this does not do

05
  • A person is asked for exactly two things, and neither is here: authorising a client against an account that already holds paid credit, and paying. Everything before that happens without anyone.
  • Because a client identifier is issued fresh on every registration, an agent that registers from scratch every session lands on a new account each time, with a new trial. That is why the token response carries a refresh token that never expires: keep it, reuse it, and you stay on the same account with the same balance.
  • Streamable HTTP, protocol revision 2026-07-28, OAuth 2.1 with dynamic client registration and PKCE. The previous revision is served from the same endpoint, so older clients keep working.
  • Refresh tokens rotate on every use, as the specification requires for public clients. A client that reuses an old one is treated as compromised and the whole chain is revoked.
  • The tools declare what they are: which ones are read-only and free, which ones spend credit and reach outside, which one is destructive. That is what a client reads when it decides what it may approve on its own.

Without markup

This page in markdown: /problems/connect-an-mcp-client-in-one-line.md. All 20 of them in one file: /llms-full.txt.

Nearby problems