Model Context Protocol · paid tools

One URL. Any API. Paid by the call.

Sellers hand us an OpenAPI document. We shape it into tools, price each one, and host the MCP server. Agents connect to the address and start buying — no SDK, no API key, no wallet of their own.

Connect

Paste this into any MCP client. The catalogue can grow afterwards without the client changing.

claude_desktop_config.json

streamable http
{
  "mcpServers": {
    "tessera": { "url": "https://tessera-sage-pi.vercel.app/mcp" }
  }
}

No token. Free tools work exactly like this. To call a paid tool, add one header:

{
  "mcpServers": {
    "tessera": {
      "url": "https://tessera-sage-pi.vercel.app/mcp",
      "headers": { "Authorization": "Bearer <agent token>" }
    }
  }
}

Five tools, fixed

search_services, describe_service, call_service, get_spend_authority and get_balance. The catalogue is a tool call, not a tool list, so ten thousand tools cost the same context as ten.

Free tools need no account

Searching and pricing cost nothing, and a tool the seller published free is callable with no token and no balance at all.

Failures are refunded

If the seller errors or times out, nothing settles and your balance is returned in full, on the same request.

Published servers

The shaping step

Generating an MCP server from a spec is a weekend project. Generating one an agent can actually use is the work.

  1. 01Curate, don't transcribe

    A 200-operation API becomes 200 tool definitions, sent to the model on every turn. Tool selection collapses long before the context window does. We rank operations, cap the set, and tell the seller exactly what was left out.

  2. 02Flatten the arguments

    OpenAPI splits arguments across path, query, header and body. A model asked to fill four nested objects fills them wrong. Tools take one flat object; the split is remembered on our side.

  3. 03Write for a model

    Descriptions are aimed at something choosing between tools, not at someone reading reference docs — and each one states its own price, so cost is visible at the moment of the decision.

  4. 04Bound everything

    Recursive schemas, 400-value enums, thirty-level nesting: all legal, all ruinous. Every dimension a published document can be unbounded in is capped before an agent ever sees it.

If you have an API

Three fields and a price. You keep hosting it; we never see your traffic except the calls we paid you for.

POST /api/mcp/publish

{
  "account_id":   "0.0.10247727",
  "spec_url":     "https://api.example.com/openapi.json",
  "price_amount": "90000",
  "price_unit":   "per_call"
}

What you get back

A hosted MCP server at /mcp/your-api, one priced listing per tool, and payment per call settled to your Hedera account. Preview the shaping first with POST /api/mcp/preview — it writes nothing and shows you the tools, their context cost, and every operation that did not make the cut.

The same gate as any other listing applies: register the account and put a refundable dispute deposit at risk. A buyer who is sold a broken response can claim against it, and an upheld claim is paid out of that deposit. Publishing forty tools does not dilute the guarantee — every one of them is backed by it.

If you are an agent

Register once, fund a balance, spend under caps your owner sets and can revoke.

A session, end to end

  1. search_services({ query: "weather alerts" })
  2. 10 listings, cheapest first, with prices
  3. call_service({ slug, max_price: "500000" })
  4. 200 + data + settlement tx

Why you do not need a wallet

No MCP client can sign a Hedera transfer, and handing one a private key would be worse than the problem. Instead you fund a balance from your own wallet in a transaction anyone can check, and the marketplace signs each call against it — bounded by a per-call cap, a daily cap, and a free-tool allowance keyed to the human revoke in one transaction without our cooperation. Every movement is written to an append-only ledger you can replay against your own balance at GET /api/agents/me.