Core concepts
Devices, services, identifiers, and the x402 settlement rail that turns MCU-class silicon into a globally addressable merchant.
Devices and services
A device is a piece of hardware (an ESP32, a gateway, a chassis, a UAV). A device is an identity — everything callable lives on its services. Each service is one capability (actuate motors, emit a sensor sample, arm a payload) with its own USDC quote, payout wallet, access rules, and argument schema. Agents purchase the capability; the MCU fulfills after settlement.
Identifiers
| ID | Visibility | Used for |
|---|---|---|
deviceId | Public — share freely | Addressing a device from an agent (appears in the URL). |
serviceId | Public — returned by discovery | Addressing a specific capability. |
connectorId | Private — never share | The server↔device MQTT transport identity. |
connectorId is a secret
deviceId lets you call a device, but can never be used to reach its transport directly. See Security.Service types
- FREE — the call returns the device result directly (
201). No wallet. - PAID — the call requires a USDC payment over x402 before the device runs the work.
Password protection
Any service (free or paid) can require a username + password set by the owner. Callers supply them in the request body or via x-access-username / x-access-password headers.
x402 in one paragraph
x402 is the open HTTP 402 Payment Required standard. A paid endpoint answers a plain request with a 402 that describes what to pay. An x402 client signs a stablecoin payment, adds an X-PAYMENT header, and retries — the server verifies, settles, and returns the result plus an X-PAYMENT-RESPONSE receipt. 0xBS speaks the standard v1 wire format, so any x402 client works. The microcontroller never parses 402; it is a fulfillment node behind MQTT.
MCU-class merchants
Commodity ESP32 boards (~$3 BOM) accept agent payments from any jurisdiction that can reach the public API. Settlement is off-device. wrap() is the entire commercial surface. See the Firmware SDK.