bodybridge v1.1.0
First feature release after v1.0.0. Adds the declaration hook to the bridge core and fixes a payload-serialization error-reporting bug. Existing adapters need zero changes.
Added
- Declaration hook — adapters can now declare per-action MCP tools with typed/constrained JSON Schema (e.g. a
move_headtool with an enforced angle range). The bridge mechanically translates each declaration into a FastMCP tool plus a centralized bridge-side validator; the bridge core carries zero device-specific semantics — all constraints are decided by the adapter's type annotations, not by the bridge. This is an optional, lazy mechanism: adapters that don't calldeclare_tools()behave exactly as in v1.0.
Fixed
- A payload the bridge cannot serialize no longer reports
offline. When building the outbound frame fails (deeply nested values →RecursionError, non-JSON values →TypeError, circular references →ValueError), the bridge previously caught it together with send failures and reportedofflinewithretryable: true— while the device was in fact connected. It now returnsbad_paramswithretryable: falseand a plain-language reason. Genuine send failures still reportoffline. The success path is unchanged.
Migration
- Zero changes required for existing adapters. The declaration hook is optional and lazy — an adapter that doesn't call
declare_tools()runs identically to v1.0. No config changes, no new environment variables.
Full changelog: see CHANGELOG.md