Skip to main content
The buyer SDK ships an MCP server that turns discovered endpoints into tools your agent can call. It runs over stdio, is named utter-buyer, and by default runs a fully in-process demo with no real money. The buyer key lives inside the client and is never a tool argument or a return value.

Register it

Add the server to your MCP host’s config. The command is utter-buyer-mcp (the bin from @utter/buyer-sdk), over stdio.
With no environment set, this starts the demo server. To go live, add the env described below.
The server writes nothing to stdout. Stdout is the JSON-RPC channel; any stray write would corrupt it. All diagnostics go to stderr. If you wrap the command, keep stdout clean.

Demo vs live

The mode is selected by the BUYER_SDK_TRANSPORT env var.
Unset, or anything other than live. The server runs a self-contained wiring: an in-process mock chain, an ephemeral throwaway wallet, and a built-in echo card. It runs the real discover, reserve, handler, settle loop with no real money, no network, and no deployed resource. The demo never reads a buyer key. This is the safe default for trying the tools.
string
live for the operator-gated live path. Unset or any other value runs the in-process demo.
string
The buyer EOA key, read once on the live path only. Never logged, never a tool argument.
string
The marketplace base for live discovery. Required on the live path; the server fail-louds without it.

The two tools

The server registers a discovery tool plus one call tool per discovered endpoint.
Input { query?: string }. Lists or searches paid endpoints, projecting only price, reputation, and bond to the model. It never surfaces a key. Pass query to filter by slug, category, or resource id.
One tool per endpoint, named with the full 32-byte resource id, lowercased, without 0x. Its input schema is derived from the resource’s openapi.json request schema. Calling it validates the args, reserves budget, pays through the escrow loop, and returns the response text.

How an agent uses them

1

Discover

The agent calls utter_discover_endpoints, optionally with a query, and reads back each endpoint’s name, price, reputation, and bond.
2

Call

It picks an endpoint and calls its utter_call_<resourceId> tool with arguments matching the derived schema. The server validates the args before paying, reserves the per-call cap, pays through the gate, and returns the response text.
The buyer key is held in the client closure. It is never a tool argument, never a tool return, and never a log line. The model sees price, reputation, bond, and the response, nothing more.
Budget caps bound what any tool will spend. See Deposits and spend caps.

Next

Buyer SDK reference

The full env var list, tool derivation rules, and behavior details.