Prompt Claude. Hardware executes.
A chat model cannot sign a payment. A thin wallet-holding wrapper can. The model issues deviceId, serviceId, and params — settlement and actuation follow.
The intended loop
You type “Move the car forward two seconds” or “Purchase the soil-moisture reading from greenhouse #4.” The agent discovers the public contract, presents an x402 client, USDC clears on Base (or Solana), and the MCU wrapped function runs. That is the product: inference → settlement → GPIO, with no remote in the operator's hand.
Why a wrapper
Chat models call HTTP tools. They cannot sign crypto. Unmetered (FREE) services work with a plain HTTP tool. Paid services need a process that holds a funded wallet and performs the x402 pay-and-retry. The model never sees the private key.
Unmetered discovery + free services
Register two HTTP tools / Custom GPT Actions — no wallet:
GET https://device-controller.0xbs.org/public/device/{deviceId}— contractPOST https://device-controller.0xbs.org/quote/device/{deviceId}/service/{serviceId}— invoke
Claude — MCP
Install the 0xBS MCP server locally. Claude Desktop starts it. Ask it to create a payment wallet — keys stay on disk at ~/.0xbs/wallet.json; Claude only sees public addresses. Fund those addresses with USDC, then prompt.
- Build
services/mcp-server(npm install && npm run build). - Point Claude Desktop at
services/mcp-server/dist/index.js(absolute path) inclaude_desktop_config.json, then fully quit and reopen Claude. - In chat: “Create a 0xBS payment wallet and show me the addresses to fund.”
- After funding: “Find online 0xBS devices and move the car forward.”
{ "mcpServers": { "0xbs-devices": { "command": "node", "args": ["/absolute/path/to/0xbs/services/mcp-server/dist/index.js"] } }}Free services work immediately. Paid services settle from that wallet against https://device-controller.0xbs.org. Later, “generate a fresh Base keypair” or “generate a fresh Solana keypair” rotates only that chain. The old address is retired; funds do not move.
ChatGPT — Custom GPT Action
Host the same wrapper behind a public URL and register it as an Action. The Action backend holds the wallet key and performs the x402 flow; the GPT only passes deviceId, serviceId, params.
Agent frameworks
Coinbase AgentKit, LangChain/LangGraph, and similar already ship x402 tools. Give the agent a funded wallet and point its x402 tool at the call URL — the model can settle autonomously and drive physical services.
Also