Steward MCP

25 tools for x402 agent commerce — trust verification, spend controls, merchant directory, and paid API endpoints. Built by Brian Booms.

Documentation

Steward MCP Server

Steward's x402 pay-per-call rail as MCP tools. Any MCP-compatible agent (Claude, Cursor, Windsurf, MCP-aware frameworks) gets Steward's catalog natively in its tool list — each paid call settles $0.01 USDC on Base, signed by your own wallet.

Steward is the machine Brian Booms named: it quotes fair prices, verifies payment cryptographically, delivers goods, and accounts for every cent.

Tools (25 total — one canonical server)

Paid calls — USDC on Base each, settled from your wallet

ToolWhat it doesPrice
steward_weatherCurrent weather + 7-day forecast for lat/lon$0.01
steward_jokeOne clean original joke$0.01
steward_fortuneOne warm original fortune + lucky number$0.01
steward_fxFiat currency conversion at reference rates$0.01
steward_timeCurrent local time in any IANA time zone$0.01
steward_wikiConcise Wikipedia summary for a topic$0.01
steward_iss_passUpcoming visible ISS flyovers for lat/lon$0.01
steward_audio_matchMatch an emotion/moment to a Brian Booms track$0.01
steward_audio_restWind-down audio lane$0.01
steward_audio_focusFocus audio lane$0.01
steward_sleep_tipOne genuine sleep-hygiene tip (no medical claims)$0.01
trust_verify_statusIs a domain Steward Verified? Status + method + expiry$0.01
trust_agent_attestationAttestation signals for an agent wallet/identifier$0.02
trust_screenPre-payment counterparty screen (approve/review/decline, advisory)$0.02

The three steward_audio_* lanes are live rail-side since worker V3.9.195-AUDIO. The three trust_* tools are live rail-side since worker V3.9.203-STANDARD. All trust tools are read-only and advisory — verification can never be purchased.

Read-only discovery — free, never signs or spends

ToolWhat it doesSource
steward_catalogLive purchase catalog: sku, name, USD price (29 products)brianbooms-mcp
steward_productFull details for one SKU: description, price, delivery, buy URLbrianbooms-mcp
steward_purchase_instructionsExact x402 payment requirements parsed live from the product's 402brianbooms-mcp
steward_rewardsHow Booms Rewards works (buyers + merchants + agent enrollment)brianbooms-mcp
steward_payment_formatByte-exact X-PAYMENT header construction guidebrianbooms-mcp
steward_cheapest_routeCheapest of 6 crypto transfer routes for an amount (live fees)boomie-fee-oracle
steward_route_feesFull ranked fee table for all 6 routesboomie-fee-oracle
steward_receiptsPublic per-wallet receipts — every cent, in the openbase build
steward_verifier_pubkeySteward Verified issuer Ed25519 public key — verify record signatures offlineV3.9.203-STANDARD
steward_directorySteward Standard 57-merchant directory, merit-ranked (ranking never for sale)V3.9.203-STANDARD
steward_spend_todayThis server's local spend meter (free, local)base build

Superseded servers

This is the one canonical MCP server. The directories below are left in place for history but are superseded — do not build on them:

DirectoryWhat it wasWhy superseded
ops/mcp/brianbooms-mcp/ (+ -py, -github, -py-1.0.4-staged, -py-1.0.5-build variants; npm brianbooms-mcp v1.0.7)5 read-only discovery toolsPorted here as steward_catalog, steward_product, steward_purchase_instructions, steward_rewards, steward_payment_format
ops/x402/mcp-fee-oracle/2 fee-oracle tools (cheapest_route, route_fees)Ported here as steward_cheapest_route, steward_route_fees
ops/mcp/synthetic-universe/Stage-only server; tools duplicate the paid setDuplicates — the base tools here are the payment-capable versions
ops/su-store/mcp/Frozen 3-product Stripe catalog + Stripe checkout/order toolsCatalog deduped by the live steward_catalog; Stripe checkout tools superseded by the x402 buy flow

Install

Requires Node 20+.

cd steward-mcp
npm install
npm run build

Configure

cp .env.example .env
# edit .env:
VariableRequiredDefaultWhat it is
STEWARD_PAYER_KEYyes—Your Base wallet private key (0x...). Funds the $0.01/call payments.
STEWARD_MAX_SPEND_USDCno0.05Hard ceiling per single call. The server refuses to sign above this.
STEWARD_MAX_SPEND_DAY_USDCno5.00Hard ceiling per rolling 24h.
STEWARD_RAIL_URLnohttps://pay.brianbooms.comRail base URL.

Your key never leaves your machine. The server uses it only to sign a per-call EIP-3009 authorization ($0.01 USDC on Base, payee verified as Steward's wallet 0xa98e8c6cbc64b7bb30fd0d2015ab24814c661839). It is never logged, stored, or transmitted anywhere else. Fund the wallet with a few USDC on Base and each tool call spends exactly what the rail quotes — nothing more.

Add to Claude Code / Cursor / Windsurf

Claude Code (~/.claude.json or project .mcp.json):

{
  "mcpServers": {
    "steward": {
      "command": "node",
      "args": ["/absolute/path/to/steward-mcp/dist/index.js"],
      "env": {
        "STEWARD_PAYER_KEY": "0x...",
        "STEWARD_MAX_SPEND_USDC": "0.05",
        "STEWARD_MAX_SPEND_DAY_USDC": "5.00"
      }
    }
  }
}

Cursor (.cursor/mcp.json): same shape under "mcpServers".

Then npm run build once, restart the host, and the steward_* tools appear in the agent's tool list.

Framework integrations

Steward works natively with every major agent framework via MCP. No wrappers needed — point the framework's MCP client at Steward and the tools appear.

LangChain

from langchain_mcp_adapters import MultiServerMCPClient

client = MultiServerMCPClient({
    "steward": {
        "command": "npx",
        "args": ["@brianbooms/steward-mcp"],
        "env": {"STEWARD_PAYER_KEY": "0x..."},
        "transport": "stdio",
    }
})
tools = await client.get_tools()  # steward_* tools as LangChain StructuredTools

LlamaIndex

from llama_index.tools.mcp import BasicMCPClient, McpToolSpec

mcp_client = BasicMCPClient(
    command_or_url="npx",
    args=["@brianbooms/steward-mcp"],
    env={"STEWARD_PAYER_KEY": "0x..."},
)
tool_spec = McpToolSpec(client=mcp_client)
tools = tool_spec.to_tool_list()

CrewAI

from crewai_tools import MCPServerAdapter

with MCPServerAdapter(
    command="npx",
    args=["@brianbooms/steward-mcp"],
    env={"STEWARD_PAYER_KEY": "0x..."},
) as tools:
    # tools = CrewAI-compatible steward_* tools
    agent = Agent(tools=tools, ...)

AutoGen / AG2

from autogen_ext.tools.mcp import StdioServerParams, mcp_server_tools

server_params = StdioServerParams(
    command="npx",
    args=["@brianbooms/steward-mcp"],
    env={"STEWARD_PAYER_KEY": "0x..."},
)
tools = await mcp_server_tools(server_params)

Vercel AI SDK

import { createMCPClient } from "@ai-sdk/mcp";

const mcpClient = await createMCPClient({
  transport: {
    type: "stdio",
    command: "npx",
    args: ["@brianbooms/steward-mcp"],
    env: { STEWARD_PAYER_KEY: "0x..." },
  },
});

const tools = await mcpClient.tools();
// use with generateText({ model, tools, prompt })

How payment works

  1. Tool calls the rail endpoint with no payment.
  2. Rail answers HTTP 402 with an x402 quote (price, payee, asset, timeout).
  3. The server verifies: scheme exact, network base, payee is Steward's wallet, asset is USDC on Base, price sane and within your caps.
  4. It signs an EIP-3009 transferWithAuthorization with your key and resubmits with the X-PAYMENT header.
  5. Rail verifies via its facilitator and returns the result as the tool output.

Anything unexpected — wrong payee, wrong asset, price over your cap — and the server refuses to sign. No silent spending, ever.

Verify without paying

npx tsx test/quotes.test.ts   # probes all 24 tools' live quotes, signs nothing
npx tsx test/smoke.test.ts    # boots the MCP server, lists tools over stdio

Trust

License

MIT — Synthetic Universe LLC.