{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_nbha6kue3qwu","handle":"mcp-server-sofabaton","url":"https://wellknown.network/agents/mcp-server-sofabaton","links":{"self":"https://wellknown.network/agents/mcp-server-sofabaton/record.json","html":"https://wellknown.network/agents/mcp-server-sofabaton","markdown":"https://wellknown.network/agents/mcp-server-sofabaton/record.md","api":"https://wellknown.network/api/v1/agents/mcp-server-sofabaton","status":"https://wellknown.network/api/v1/agents/mcp-server-sofabaton/status","claim":"https://wellknown.network/agents/mcp-server-sofabaton/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/mcp-server-sofabaton/claim.json","badge":"https://wellknown.network/agents/mcp-server-sofabaton/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/mcp-server-sofabaton/history","tools":"https://wellknown.network/api/v1/agents/mcp-server-sofabaton/tools"},"ard":{"identifier":"urn:air::server:mcp-server-sofabaton","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"mcp-server-sofabaton","summary":"MCP server for Sofabaton universal remote hubs: an X2 over its own MQTT link, or any model via sofabaton-x-server","description":"# mcp-server-sofabaton\n\n[![CI](https://github.com/SDNick484/mcp-server-sofabaton/actions/workflows/ci.yml/badge.svg)](https://github.com/SDNick484/mcp-server-sofabaton/actions/workflows/ci.yml)\n\nAn [MCP](https://modelcontextprotocol.io) server for **Sofabaton X1, X1S and X2** universal\nremote hubs. It lets an MCP client such as Claude start and stop activities, press remote\nbuttons, send macros, favorites and device commands, find the remote, and read the presses of\nbuttons you've bound to it.\n\nAll three models work through [sofabaton-x-server](https://pypi.org/project/sofabaton-x-server/).\nAn **X2** can also be reached over **MQTT**, either on its own or alongside the server. That adds\nlive activity state, and keeps the hub controllable while the Sofabaton app is open. Every\nresponse tells the model which model it's talking to and what that hub can and can't do.\n\n> **Status: alpha, looking for testers.** Tested on one X2 over MQTT (see [Tested on](#tested-on)).\n> The sofabaton-x-server path, and so every X1 and X1S, has run only against the simulator. If you\n> have a Sofabaton hub, a report of what does and doesn't work on yours is the most useful thing\n> you can send: [open a hardware report](https://github.com/SDNick484/mcp-server-sofabaton/issues/new?template=hardware_report.yml).\n\nNot affiliated with Sofabaton.\n\n## Tested on\n\n| | |\n| --- | --- |\n| Hub | One Sofabaton **X2**, over **MQTT only** (no sofabaton-x-server). Firmware unknown: MQTT doesn't report it |\n| Broker | Home Assistant's Mosquitto add-on |\n| Server | Alpine Linux in a Proxmox LXC, Python 3.14, as the OpenRC service in `deploy/alpine/` |\n| Client | Claude, over Streamable HTTP through a Cloudflare Tunnel with Cloudflare Access |\n| Setup | 5 activities, 6 devices, 1 macro, 7 favorites (on the TV and on a Home Assistant Wifi Device) |\n\n**Seen working on that X2 (2026-10-16):** listing activities, devices, buttons, macros and\nfavorites; starting an activity and powering it off, with the hub's conf…","publisher":{"name":"Nicholas E. Andrade","url":null},"homepage":"https://github.com/SDNick484/mcp-server-sofabaton","repository":"https://github.com/SDNick484/mcp-server-sofabaton/blob/main/CHANGELOG.md","version":"0.2.1","license":null,"protocols":["mcp"],"tags":["mcp","mcp-server","sofabaton","universal-remote","home-automation","mqtt"],"pricing":null,"endpoints":[{"url":"pypi:mcp-server-sofabaton","type":"package_pypi","auth":null,"probeable":false}],"skills":null,"tools":null,"extra":null,"attribution":{"kind":"pypi","name":"pypi","repoUrl":"pypi","summary":"pypi","version":"pypi","description":"pypi","homepageUrl":"pypi","publisherName":"pypi"}},"derived":{"capabilities":[{"slug":"infra.devices","name":"Devices & IoT","confidence":1,"provenance":"derived"},{"slug":"dev.version-control","name":"Version Control","confidence":0.779,"provenance":"derived"},{"slug":"dev.ci-cd","name":"CI/CD & Deploy","confidence":0.733,"provenance":"derived"}],"categories":["dev","infra"],"language":"en"},"observed":{"status":"unknown","statusReason":"Distributed as a package to run locally; no network endpoint to check.","lastOkAt":null,"lastProbedAt":null,"statusComputedAt":null,"reliability30d":null,"latestObservations":[],"tools":null,"package":{"name":"mcp-server-sofabaton","registry":"pypi","observedAt":"2026-10-24T17:29:21.896Z","publishedAt":"2026-10-17T21:22:57.082188Z","latestVersion":"0.2.1"},"toolSurface":null,"endpointFacts":[]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"pypi","key":"mcp-server-sofabaton","url":"https://pypi.org/project/mcp-server-sofabaton/","firstSeenAt":"2026-10-18T16:29:38.322Z","fetchedAt":"2026-10-24T17:28:15.343Z","normalizedAt":"2026-10-24T17:28:15.343Z"}]},"firstSeenAt":"2026-10-18T16:29:38.322Z","updatedAt":"2026-10-24T17:29:21.896Z"}