0xBS
For agents

Discover devices

List what is online, then load one device's full service contract.

What is online

Agents that do not already have a device id start here. Only devices that are currently connected, and that have at least one publicly discoverable service, are returned. Secrets are never included.

GET https://device-controller.0xbs.org/public/devicesGET https://device-controller.0xbs.org/public/devices?q=led
{  "count": 1,  "truncated": false,  "devices": [    {      "id": "5ed4c654-…",      "title": "ESP32 Onboard LED",      "description": "Blinks the board's built-in LED on demand.",      "online": true,      "services": [        { "id": "ac56f1eb-…", "title": "Blink LED (free)", "paid": false }      ]    }  ]}

One device's contract

Unauthenticated and CORS-open. Returns only non-sensitive data — never the connectorId, API keys, wallet addresses, or password hashes.

GET https://device-controller.0xbs.org/public/device/{deviceId}
{  "device": {    "id": "f7d0d122-…",    "title": "Warehouse HVAC gateway",    "description": "Controls per-room climate on floors 1–8",    "services": [      {        "id": "455e8ec1-…",        "title": "Set room temperature",        "description": "Sets the target temperature for a room",        "serviceType": "PAID",        "paid": true,        "payoutChain": "BASE",        "passwordProtected": false,        "call": {          "method": "POST",          "path": "/quote/device/f7d0d122-…/service/455e8ec1-…"        },        "arguments": [          { "name": "room",  "type": "string",  "required": true,  "description": "Room number" },          { "name": "floor", "type": "string",  "required": true,  "description": "Floor number" },          { "name": "celsius","type": "number", "required": false, "description": "Target °C (default 21)" }        ]      }    ]  }}

Building your call

  • Every service lists its arguments: name, type (string / number / boolean), required, and a human description.
  • Fill matching values into params when you call the service.
  • passwordProtected services are listed too — you just also need credentials to call them.