Bosch Smart Home Camera MCP Server
Bosch Smart Home Camera — MCP 服务器
模型上下文协议(MCP)服务器,将 Bosch Smart Home Camera 云 API 以 MCP 工具的形式暴露出来。可直接用于 Claude Code、Claude Desktop 以及任何兼容 MCP 的客户端。复用了姊妹项目 Python CLI 工具 中经过验证的逆向工程 API 客户端。
状态: v1.7.2 — 家族功能对齐收官(v1.7.0):移动侦测区域、隐私遮罩、自动化规则、摄像头共享/好友、固件安装、警笛时长、照明计划、语音对讲。另加 2026-08-19 图像/视频调优 + 摄像头生命周期一轮:时间戳叠加、状态 LED、镜头俯仰角、黑暗阈值、白平衡、顶部/底部 LED 亮度、软/硬重置、重命名。70 个工具 + 3 个资源 + 2 个提示词,支持 stdio/SSE/streamable-HTTP,可通过 pipx/uvx 安装
目录
集成对比 — 为你的平台选择正确的项目
Related MCP server: Loxone MCP Server
免责声明
本项目是一个独立的、由社区开发的工具。它与 Robert Bosch GmbH、Bosch Smart Home GmbH 或其任何子公司或关联公司没有任何关联、未获其认可、赞助,也并非以任何方式与其有官方联系。"Bosch"、"Bosch Smart Home" 及相关名称和徽标均为 Robert Bosch GmbH 的注册商标。
该工具与一个经过逆向工程、无文档、非官方的 API 进行通信。按"原样"提供,不附带任何形式的保证。使用风险完全自负。
为什么单独做一个 MCP 服务器?
姊妹项目面向不同的运行时:
项目 | 版本 | 运行时 | 面向用户的界面 |
v16.0.1 | Home Assistant | UI 实体、Lovelace 卡片、自动化 | |
v10.12.3 | 终端 |
| |
v1.8.3 | ioBroker | 数据点、VIS-2 小部件(BoschCamera + BoschOverview)、JSON 配置管理 UI | |
v0.4.2-alpha | Node-RED | 用于自动化管道的流节点 | |
v0.4.2-alpha | 独立 Web 应用 | 仪表盘 + 摄像头详情 + 设置 UI | |
MCP 服务器(本仓库) | v1.7.1 | Claude 客户端 | 可供 LLM 调用的 MCP 工具 |
现有姊妹项目未覆盖的 LLM 用例:
"给花园摄像头拍一张快照,然后描述你看到了什么。"
"露台上最近一次移动事件是什么时候,具体时间?"
"启用室内摄像头的隐私模式直到 22:00,然后禁用它。"
"将 360° 摄像头向左平移并抓拍一张快照。"
"汇总今天所有摄像头的移动事件。"
这些流程需要 LLM 参与其中——这正是 MCP 的用武之地。
架构
┌─────────────────────────┐ stdio / SSE / streamable HTTP ┌─────────────────────────┐
│ Claude Code / Desktop │ ←─────────────────────────────────────→ │ bosch-smart-home- │
│ (MCP host) │ MCP protocol │ camera-mcp server │
└─────────────────────────┘ └────────────┬────────────┘
│
imports / shared API client
│
▼
┌─────────────────────────┐
│ bosch_camera.py │
│ (sister Python CLI tool)│
└────────────┬────────────┘
│ HTTPS (OAuth2 PKCE)
▼
┌─────────────────────────┐
│ residential.cbs.bosch- │
│ security.com (cloud) │
└─────────────────────────┘MCP 服务器是 Python CLI API 层的一个薄封装。它不会重新实现 OAuth、令牌刷新、FCM 推送、RTSP 或 RCP——它直接导入这些功能。
这是一个真实的运行时依赖,而不仅仅是文档引用。 服务器在进程启动时通过 sys.path 注入(adapters/cli_bridge.py)来定位 bosch_camera.py,而不是通过常规的 pip install 依赖——姊妹项目 Python CLI 工具 仓库必须检出到磁盘上,并且 MCP 服务器需要知道其位置。解析顺序:如果设置了 BOSCH_CAMERA_CLI_PATH 环境变量则使用该变量,否则使用维护者自身环境所用的固定默认路径(不可移植——请覆盖它)。几乎每次工具调用最终都会在调用时从该路径导入 bosch_camera(ensure_cli_importable()),因此路径缺失或错误会在首次工具调用时以 ImportError 的形式出现,而不是在服务器启动时。实际操作:克隆两个仓库,然后在 MCP 服务器运行的环境中设置 BOSCH_CAMERA_CLI_PATH=/path/to/Bosch-Smart-Home-Camera-Tool-Python,或者编辑 adapters/cli_bridge.py 中的 DEFAULT_CLI_PATH 以进行永久性的本地安装。CLI 工具通过 bosch_camera login 生成的同一个 bosch_config.json 就是本服务器读取凭据所用的文件——参见 认证模型。
LAN 回退工具路由
flowchart LR
Agent["LLM / Claude Code"] -->|tool call| MCP[MCP Server]
MCP -->|prefer_local=False| Cloud[Bosch CBS API]
MCP -->|prefer_local=True| RCP["Camera LAN RCP\n192.168.x.y:443\nHTTPS Digest"]
RCP -->|success| Done["return {status, method: local}"]
RCP -->|fail| Cloud
Cloud --> Done2["return {status, method: cloud}"]
style RCP fill:#d4f1c4,color:#000
style Cloud fill:#dce8fb,color:#000bosch_camera_lan_ping 工具流程
sequenceDiagram
participant Agent as LLM Agent
participant Tool as bosch_camera_lan_ping
participant TCP as TCP connect :443
Agent->>Tool: {camera_name: "Outdoor"}
Tool->>Tool: resolve LAN IP from bosch_config.json
Tool->>TCP: connect 192.168.x.y:443 (1.5 s timeout)
TCP-->>Tool: connected / timeout
Tool-->>Agent: {reachable: true, ip: "...", latency_ms: 12}MCP 工具(共 70 个,v1.7.2)
工具 | 描述 | 返回 |
| 列出所有已配置的摄像头 | 由 |
| 获取单个摄像头的在线/离线及隐私状态 |
|
| 仅局域网 JPEG 抓拍(无云端)— 通过 HTTP Digest 访问摄像头 IP |
|
| 仅局域网 RTSPS 流地址(无云端中继)— 可供 ffmpeg/VLC/go2rtc 使用 |
|
| 列出最近的移动/人物/音频事件 | 由 |
| 开启/关闭隐私模式; |
|
| 开启/关闭聚光灯; |
|
| 旋转 360° 摄像头(仅 Gen1 CAMERA_360); |
|
| 切换推送通知 |
|
| 在局域网 443 端口对摄像头进行 TCP 探测(1.5 秒超时) |
|
| 从社区 RSS 源获取当前云端维护公告 |
|
| 获取麦克风音量、扬声器音量、对讲标志(仅 Gen2) |
|
| 设置麦克风音量和/或扬声器音量 0-100(仅 Gen2) |
|
| 获取入侵检测配置:模式、灵敏度 0-7、距离 1-8 米(仅 Gen2) |
|
| 更新入侵检测模式/灵敏度/距离(仅 Gen2) |
|
| 获取玻璃破碎 + 烟雾/火警声音检测配置(仅 Gen2 Audio-Plus) |
|
| 更新玻璃破碎和/或火警声音检测(仅 Gen2 Audio-Plus) |
|
| 获取 WiFi RSSI、SSID 及派生的信号质量 0-100% |
|
| 通过 RTSP inst=3 直接进行局域网 MJPEG 抓拍(仅 Gen2,ffmpeg,无云端往返) |
|
| 从摄像头局域网 RCP 0x0a98 读取 ONVIF 设备作用域(仅 Gen2) |
|
| 从摄像头局域网操作码 0xff00 + 0xff04 读取 RCP 库版本 |
|
| 获取账户级别的 Bosch 云端功能开关(无需摄像头参数) |
|
| 触发室内警报器(仅 Gen2 Indoor II); |
|
| 获取移动检测启用状态 + 灵敏度 |
|
| 设置移动检测启用状态和/或灵敏度 |
|
| 获取云端录像声音设置 |
|
| 设置云端录像声音 |
|
| 获取 360° 自动跟踪状态(仅 Gen1 Indoor) |
|
| 设置 360° 自动跟踪(仅 Gen1 Indoor) |
|
| 获取隐私提示音状态 |
|
| 设置隐私提示音状态 |
|
| 获取摄像头的未读事件数 |
|
| 所有摄像头的批量健康摘要(状态 + WiFi + 隐私 + 最近事件 + 未读) | 由每个摄像头的健康字典组成的数组 |
| 本地 JWT 解析 — 返回有效性、过期时间、邮箱(无网络调用) |
|
| 列出移动检测区域矩形(归一化 0.0-1.0) | 由 |
| 替换所有移动区域(全量替换,非合并) | 由 |
| 移除所有移动区域 |
|
| 列出隐私遮罩区域矩形(归一化 0.0-1.0) | 由 |
| 替换所有隐私遮罩(全量替换,非合并) | 由 |
| 移除所有隐私遮罩 |
|
| 列出单个摄像头的自动化(时间计划)规则 | 由 |
| 创建新的计划规则 |
|
| 更新现有规则(部分更新) |
|
| 删除规则 |
|
| 列出摄像头共享好友/邀请(账户级别) | 由 |
| 通过邮箱邀请好友(账户级别) |
|
| 与现有好友共享一个摄像头(与其现有共享合并) |
|
| 撤销好友的所有摄像头共享 |
|
| 完全移除好友 |
|
| 获取当前/最新固件版本 + 更新可用性 |
|
| 安装待处理的固件更新(摄像头重启 3-7 分钟) |
|
| 设置警报器报警时长,10-300 秒(仅 Gen2 Indoor II) |
|
| 获取 LED 照明计划(室外 Eyes 摄像头) |
|
| 更新 LED 照明计划(室外 Eyes 摄像头) |
|
| 打开音频监听会话(摄像头麦克风 → 呼叫方);返回 RTSPS 地址,仅监听 |
|
| 获取视频中是否烧录了日期/时间叠加层 |
|
| 开启/关闭视频日期/时间叠加层 |
|
| 获取摄像头状态 LED 的开关状态(仅 Gen2) |
|
| 开启/关闭摄像头状态 LED(仅 Gen2) |
|
| 获取镜头安装高度(米)(仅 Gen2) |
|
| 设置镜头安装高度,0.5-5.0 米(仅 Gen2) |
|
| 获取昼夜照明阈值 + 渐暗模式(仅 Gen2) |
|
| 设置昼夜照明阈值和/或渐暗模式(仅 Gen2) |
|
| 获取前置灯的白平衡,-1.0 冷 .. 1.0 暖(仅 Gen2) |
|
| 设置前置灯的白平衡(仅 Gen2) |
|
| 获取顶部或底部 LED 亮度 0-100%(仅 Gen2) |
|
| 设置顶部或底部 LED 亮度 0-100%(仅 Gen2) |
|
| 重启单个摄像头(软重置) |
|
| 将单个摄像头恢复出厂设置 — 破坏性操作,会解除摄像头配对;需要 |
|
| 通过云端 API 重命名摄像头 |
|
有意不向 LLM 暴露的工具(有写入风险 / 耗时):
令牌刷新(由底层客户端静默处理)
云端片段下载(数据量较大)
双向对讲(呼叫方麦克风 → 摄像头扬声器):Bosch 云 API 完全不支持(姊妹 CLI 也有同样的限制)——
bosch_camera_intercom_open仅支持监听
从 HA 集成移植但有意未添加(架构不匹配——完整理由见 docs/family-parity-plan.md 2026-08-19 审计):
open_live_connection(显式会话打开/保持)——MCP 工具是一次性请求/响应调用,没有持久的后台进程在调用之间保持会话;bosch_camera_stream_url每次调用都会生成一个新的、立即可用的 URL,这是 MCP 形态的等价物。Frigate/外部 RTSP "前门"(持久的免凭据 RTSP 服务器)——原因相同:需要长时间运行的服务器进程,而这个无状态工具面没有。
delete_event/send_event_webhook——两者都操作 HA 自己的本地磁盘事件文件缓存和webhook_url/enable_webhook_delivery配置,这个工具没有这些基础设施(这里的事件是按需从 Bosch 云拉取的,从不本地存储)。AI 警报历史回读——HA 的
ai_alert_store.py从 HA 自己的存储布局中读取相对于hass.config.path的文件;与之耦合会很脆弱,而且当 MCP 客户端本身通常就是进行分析的 LLM 时,并不明确有用。video_quality/stream_mode选择和image_rotation_180——这三个都是 HA 中仅客户端侧的偏好(完全不调用 Bosch 云 API:质量选择 RTSPS 的inst=参数,stream_mode 选择 LOCAL 与 REMOTE,旋转是仅显示的 CSS/PIL 变换),这里没有持久的每会话状态可附加。pan_preset已经覆盖——bosch_camera_pan(preset=...)自 v1.x 起已发布。
可靠性——透明的凭据轮换
prefer_local=True 的 LAN-RCP 写入路径(bosch_camera_privacy_set、bosch_camera_light_set)在从 bosch_config.json 重新获取新的 Digest 凭据后,会在 HTTP 401 时自动重试一次。没有用户可见的 API 变化——重试是静默的,无论是否需要轮换,工具结果都是相同的。这消除了缓存的 Digest nonce 过期时的冷启动失败。bosch_camera_pan 目前不接受 prefer_local 参数——pan 始终通过 Bosch 云进行。
MCP 资源
Resource URI | Description |
| 所有摄像头的 JSON 列表(id、name、model、status、firmware、mac、description) |
| 最新缓存的 JPEG,如果缓存为空则进行新拍摄 |
| 最近 50 个事件(motion、person、audio)的 JSON 列表 |
bosch://cameras 是静态资源。{name} 变体是资源模板。
MCP 提示
Prompt | Arguments | Description |
|
| 多步骤报告:每个摄像头的事件、类型细分、时间分布、异常高亮 |
| (none) | 拍摄每个摄像头的快照,描述场景,标记异常,推荐室内隐私模式 |
隐私立场——媒体操作仅限局域网
快照和流 URL 直接从 MCP 主机通过局域网发送到摄像头——没有 Bosch 云中继。其余工具(status、events、privacy/light/pan/notifications)仍使用云,因为目前没有为这些端点暴露本地 API。
Tool | Path |
| 仅局域网——HTTP Digest 到摄像头 IP |
| 仅局域网——通过本地 Bosch TLS 代理的 RTSPS |
| 仅局域网——TCP 连接到摄像头端口 443 |
| Bosch 云(尚无本地 API) |
| Bosch 云 |
| 先 LAN-RCP,云回退——仅 Gen2 |
| Bosch 云(尚无本地 API) |
MCP 主机必须与摄像头在同一网络中,媒体工具才能工作。如果不是,快照/流工具会显示 local_unavailable,而不是回退到云——这是设计使然。
认证模型
服务器使用姊妹 Python CLI 工具中用户现有的 bosch_config.json 运行——没有单独的 OAuth 流程,此仓库不存储任何凭据。通过 CLI 的 bosch_camera login(基于浏览器的 OAuth2 PKCE)生成一次,然后将 MCP 服务器指向它:
--config <path>/BOSCH_CAMERA_CONFIG=<path>环境变量:bosch_config.json的显式路径。如果两者都未设置,桥接器会回退到
get_session_and_cameras()的默认解析在姊妹 CLI 检出旁边找到的任何内容(参见 架构——姊妹 CLI 的位置本身通过BOSCH_CAMERA_CLI_PATH或固定的默认路径解析)。
MCP 服务器不会读取或写入超出 CLI 工具已做的凭据(401 时刷新令牌、原子保存)——它通过 cli_bridge 导入直接调用 CLI 自己的会话/配置代码。
传输模式
通过 --transport 标志支持三种传输模式:
Mode | Flag | Use case |
|
| Claude Code / Claude Desktop——本地子进程 |
|
| 通过 HTTP 的远程/多客户端部署 |
|
| 旧版 SSE 客户端 |
HTTP 和 SSE 模式默认绑定到 127.0.0.1:8765(安全的本机专用)。仅在受信任的防火墙网络环境中传递 --http-host 0.0.0.0。
# stdio (default) — used by Claude Code / Claude Desktop
bosch-smart-home-camera-mcp --config ~/.config/bosch-camera/bosch_config.json
# streamable-HTTP — local port for multi-client use
bosch-smart-home-camera-mcp --transport http --http-port 8765
# streamable-HTTP — expose to LAN (ensure firewall rules!)
bosch-smart-home-camera-mcp --transport http --http-host 0.0.0.0 --http-port 8765技术栈
Python 3.10+
mcp— 官方 MCP Python SDKpydantic(已经是mcp的传递依赖)用于工具模式复用:来自姊妹 CLI 仓库的
bosch_camera.py,在运行时通过sys.path注入定位(BOSCH_CAMERA_CLI_PATH环境变量或可配置的默认值)——不是pip安装的依赖,参见 架构
安装
# via pipx (recommended for end users — isolated environment, PATH entry)
pipx install bosch-smart-home-camera-mcp
# via uvx (zero-install, one-shot — no persistent env needed)
uvx bosch-smart-home-camera-mcp --help
# from source (for development)
pip install -e .[test]维护者: PyPI 发布是自动化的——推送
v*.*.*标签会通过 OIDC Trusted Publisher 触发 publish-pypi workflow。不要手动运行twine upload。
添加到 Claude Code——stdio(本地,推荐)
claude mcp add bosch-camera -- bosch-smart-home-camera-mcp \
--config ~/.config/bosch-camera/bosch_config.json添加到 Claude Code——streamable-HTTP(远程服务器)
# Start server first:
bosch-smart-home-camera-mcp --transport http --http-port 8765
# Then register the HTTP endpoint:
claude mcp add bosch-camera --transport http http://127.0.0.1:8765/mcp添加到 Claude Desktop
将以下内容添加到你的 claude_desktop_config.json(通常在 macOS 上为 ~/Library/Application Support/Claude/claude_desktop_config.json,在 Windows 上为 %APPDATA%\Claude\claude_desktop_config.json):
{
"mcpServers": {
"bosch-camera": {
"command": "bosch-smart-home-camera-mcp",
"args": [
"--config",
"/path/to/bosch_config.json"
]
}
}
}将 /path/to/bosch_config.json 替换为你的 bosch_config.json 的实际路径(由姊妹 Python CLI 工具通过 bosch_camera login 生成)。服务器作为本地 stdio 子进程运行——Claude Desktop 不需要网络端口。
仓库布局
Bosch-Smart-Home-Camera-Tool-MCP/
├── README.md this file
├── CHANGELOG.md full version history
├── LICENSE MIT
├── pyproject.toml build + tool config
├── requirements.txt runtime pins (mcp, etc.)
├── requirements-test.txt pytest, pytest-asyncio, mocks
├── src/
│ └── bosch_camera_mcp/
│ ├── __init__.py
│ ├── server.py FastMCP server + all 70 MCP tools
│ ├── adapters/
│ │ ├── cli_bridge.py sys.path bridge to the sister Python CLI for cloud ops
│ │ └── __init__.py
│ ├── lan_rcp.py direct LAN HTTPS+Digest for RCP writes
│ ├── cloud_ssl.py pinned Bosch cloud CA / SSL context (CWE-295)
│ ├── time_utils.py Bosch timestamp cleanup helpers
│ ├── maintenance.py cloud maintenance RSS feed fetcher
│ ├── errors.py shared error types (MCPError)
│ ├── resources.py MCP resources (bosch://cameras/…)
│ └── prompts.py MCP prompts (daily-summary, pre-leave)
├── tests/ 30+ test modules — tool behavior, LAN-RCP/cred-rotation,
│ cert pinning, transports, resources, prompts, packaging
├── docs/
│ ├── architecture.md
│ └── release-process.md
└── .gitignore发布历史
v0.1.0 — 概念文档 + 骨架服务器,所有工具均已定义但尚未实现(返回
NotImplementedError)✅v0.2.0 — 全部 8 个工具已通过 sys.path 注入(Option C)接通:读取工具(list、status、events、snapshot)+ 写入工具(privacy、light、pan、notifications)✅
v0.4.0 — 资源(
bosch://cameras、bosch://cameras/{name}/snapshot.jpg、bosch://cameras/{name}/events)+ 提示词(daily-camera-summary、pre-leave-check)✅v0.5.0 — streamable-HTTP 传输(
--transport http|sse|stdio),为pipx/uvx打包分发,新增 24 个测试 ✅v1.0.0 — 首个稳定版:106 个测试,wheel + sdist 已发布到 GitHub Releases,PyPI 发布待完成 ✅
v1.1.0 — 仅局域网媒体路径(隐私加固):
bosch_camera_snapshot和新工具bosch_camera_stream_url直接通过局域网连接摄像头,媒体不再经过 Bosch 云中继。113 个测试。✅v1.2.0 —
bosch_camera_maintenance_status工具:从社区 RSS 源获取云端维护公告;返回状态(active/scheduled/past/recent/unknown/idle)、标题、时间窗口、链接。✅v1.3.0 — 局域网回退功能集(移植自 HA 集成 v12.4.10/v12.4.11):
bosch_camera_lan_ping工具(对局域网内任意摄像头进行 TCP 探测);在bosch_camera_privacy_set/bosch_camera_light_set上新增prefer_local=True(RCP-LAN 写入路径,Gen2,失败时回退到云端);bosch_camera_maintenance_status新增recommended_action字段(active 时为"check_lan",scheduled 时为"wait")。173 个测试。✅v1.3.3 — 音频获取/设置、入侵检测获取/设置、WiFi 信息(从 HA v12.7.0 交叉移植)。16 个工具。✅
v1.3.4 — PTZ 命名预设(
bosch_camera_pan preset=接受home / left / right / back-left / back-right);LAN-RCP 工具在收到 401 时进行透明的凭据轮换(静默重试,无 API 变更)。✅v1.3.6 — 修复了 2026-05-24 现场审计发现的 9 个 bug(摄像头列表始终实时取自云端、Gen1/Gen2 hw_version、UUID 解析、事件字段映射、audio camelCase、intrusion Gen2 gate、错误码、快照时间戳、requirements-test.txt 镜像)。✅
v1.4.0 — 4 个新工具:
bosch_camera_mjpeg_snapshot、bosch_camera_onvif_scopes、bosch_camera_rcp_version、bosch_camera_feature_flags。_fetch_rcp_lan异步辅助函数。共 20 个工具。✅v1.5.0 — 11 个新工具 + 8 个 bug 修复,均来自实机摄像头审计(4 台硬件设备,覆盖全部 4 代):siren trigger、motion get/set、recording get/set、autofollow get/set、privacy-sound get/set、unread-count、health-check-all、token-status。✅
v1.5.1 — 修复了
_fetch_rcp_lan(之前使用了不存在的aiohttp.DigestAuth→onvif_scopes/rcp_version在局域网下始终失败;现改用httpx.DigestAuth)。测试覆盖率 83→98%,测试夹具已脱敏,CI 升级到 Node-24 原生 action 主版本。✅v1.5.2 — 依赖清理:移除了未使用的
aiohttp运行时依赖(现仅用于测试),新增pyjwt>=2.13.0/starlette>=1.0.1安全下限(pip-audit通过),修复了一个 mock 错误 HTTP 栈的测试。✅v1.5.3 — 安全补丁:为 MCP 云会话固定 Bosch 云端 CA(CWE-295、GHSA-6qh5-x5m5-vj6v);封堵了针对 OAuth 令牌的相邻网络 MITM 攻击。本地 TOFU 固定保持不变。✅
v1.5.4 — 事件时间戳不再丢失时区偏移:
/v11/events返回带偏移的时间戳(例如+02:00[Europe/Berlin]);服务器现在只去掉末尾的[zone]后缀,而不是截断到 19 个字符,从而保留显式的 UTC 偏移。✅v1.5.5 —
camera_events资源现在使用eventType + eventTags进行正确的事件分类。✅v1.6.0 — 2 个新工具:
bosch_camera_audio_detection_get/bosch_camera_audio_detection_set— 为 Gen2 Audio-Plus 摄像头提供玻璃破碎 + 烟雾/火灾报警声音检测(从 HA 集成 v14.2.0 交叉移植)。共 34 个工具。✅v1.7.0 — 家族对齐收官(
docs/family-parity-plan.md§2b):21 个新工具,弥合 MCP 与 HA/CLI 之间的能力差距 — motion zones get/set/clear、privacy masks get/set/clear、automation rules list/add/edit/delete、camera sharing/friends list/invite/share/unshare/remove、firmware status/install(复刻 HA 的async_install_firmware防护)、siren duration、LED lighting schedule get/set,以及一个监听音频对讲工具(摄像头麦克风 → 呼叫方,RTSPS URL;双向对讲在 Bosch 云 API 中完全没有开放,姊妹 CLI 也有同样的限制)。CI 加固:覆盖率门禁(--cov-fail-under=96)、pip-audit(仅运行时依赖)、pylint、codespell、CodeQL、gitleaks 密钥扫描,以及 dependency-review 工作流 — 与 HA 集成的质量门禁达到 Gold 级对齐。共 55 个工具。✅v1.7.2 — 仅文档:修复了本仓库在集成对比表中的 Login 行,无功能变更。✅
发布
最新:v1.7.2 — 完整说明请参见 GitHub 发布页: v1.7.2 发布说明 →
所有版本 | GitHub Releases 页面 — 每个带标签的版本均附说明 + 可下载的资源文件 |
完整历史 |
|
集成对比
Bosch Smart Home Camera 逆向工程 API 通过五个姊妹项目对外提供。选择适合你平台的那个。
功能 | ||||||
成熟度 | v15.0+ — HA 质量等级 Platinum | v10.12+ 稳定版(Mini-NVR BETA) | v1.8+ 稳定版 · npm | v1.7+ 稳定版 · PyPI | v0.4.0 alpha · PyPI | v0.4.0 alpha · npm |
平台 | Home Assistant(HACS) | 独立 Python 3.10+ CLI | ioBroker(npm) | Python 3.10+ · pipx / uvx · stdio + streamable-HTTP,适用于 MCP 客户端(Claude Desktop、Claude Code、自定义) | NiceGUI Web 应用 · Python 3.10+ | Node-RED 调色板 · npm |
登录 | OAuth2 PKCE(浏览器) | OAuth2 PKCE(浏览器) | OAuth2 PKCE(浏览器) | ◑ 共享 CLI | ◑ 共享 CLI | ◑ 从 CLI 获取 refresh-token |
快照 | ✅ 原生 | ✅ | ✅ 文件存储 + base64 DP | ✅ | ✅ 实时 + 事件回退 | ✅ |
实时 RTSP 流(局域网) | ✅ 通过 HA Stream 组件 | ✅ ffmpeg/RTSPS 输出 | ✅ TLS 代理 → 本地 RTSP | ✅ | ◑ 内部(go2rtc) | ◑ |
WebRTC(亚秒级延迟) | ✅ 通过集成 go2rtc | ✅ (v10.6.0) | ❌ | ❌ | ✅ 通过 go2rtc(否则快照) | ❌ |
双流 URL(主码流 + 子码流) | ✅ | ✅ | ✅ | ◑ | ❌ (仅子码流) | ◑ 仅 URL — 无子码流选项 |
外部录像机(BlueIris、Frigate) | ✅ 通过 go2rtc | ✅ stdout 管道 | ✅ Digest 凭据 URL + 局域网绑定选项 | ✅ 返回 URL,交由下游 ffmpeg / go2rtc 处理 | ❌ | ◑ |
隐私模式 | ✅ 开关实体 | ✅ 命令 | ✅ DP | ✅ | ✅ 切换 | ✅ |
前置聚光灯(Gen1/Gen2) | ✅ 灯光实体 | ✅ 命令 | ✅ DP | ✅ | ❌ (第二阶段占位) | ✅ |
RGB 洗墙灯(Gen2 Outdoor II) | ✅ 带 RGB 的灯光 | ◑ 仅开/关 — 无 RGB | ✅ 颜色 + 亮度 DP | ❌ (仅开/关 — 未暴露 RGB) | ❌ | ◑ 仅开/关 + 强度 — 无 RGB (v0.3.0-alpha) |
恐慌警报器 | ✅ 按钮实体 (Gen2 Indoor II) | ✅ 命令 (仅 Gen2 Indoor II) | ✅ DP | ✅ | ✅ 触发 + 时长 (仅 Gen2 Indoor II) | ❌ |
固件更新 | ✅ 更新实体 + 修复流程、安装按钮 (v14.4.10) | ✅ 状态 + 安装 (v10.11.0) | ✅ 固件状态 + 安装触发、写锁保护 (v1.8.0) | ✅ 状态 + 安装工具 (v1.7.0) | ◑ 只读状态显示,无安装操作 | ✅ 状态 + 安装节点 (v0.4.0-alpha) |
图像旋转 180° | ✅ 开关 | ❌ | ✅ DP | ❌ | ❌ | ❌ |
移动 / 人形 / 音频事件 | ✅ FCM 推送 + 轮询回退 | ◑ 仅 | ✅ FCM 推送 + 轮询回退 | ✅ | ◑ 仅拉取事件表 | ✅ |
移动边沿触发状态 | ✅ | 不适用 | ✅ | 不适用 (请求-响应,无订阅) | ❌ | ❌ |
移动时自动快照 | ✅ 刷新摄像机实体 | 不适用 | ✅ 写入 | 不适用 (无后台循环) | ❌ | ❌ |
模拟移动触发(外部传感器) | ✅ 服务 | 不适用 | ✅ DP | ❌ | ❌ | ❌ |
移动区域 / 隐私遮挡 | ✅ 读取 + 写入 | ✅ 读取 + 写入 | ✅ 读取 + 写入 (v1.8.0) | ✅ 获取 / 设置 / 清除 (v1.7.0) | ❌ (尚无可视化编辑器) | ❌ |
自动化规则 / 定时计划 | ✅ 读取 + 写入 | ✅ 读取 + 写入 | ✅ 完整 CRUD (v1.8.0) | ✅ 列表 / 添加 / 编辑 / 删除 (v1.7.0) | ✅ 完整 CRUD(列表/添加/编辑/删除) | ❌ |
灯光定时 | ✅ 读取(通过服务写入,仅 Gen1 Eyes Outdoor) | ✅ 读取 + 写入 | ✅ 读取 (仅 Gen1,v1.2.0) | ✅ 获取 / 设置 (v1.7.0) | ✅ 读取 + 写入 (室外 Eyes 摄像机) | ❌ |
云录像下载(约 30 天历史) | ✅ 通过媒体浏览器 | ❌ | ❌ (搁置 — 尚无社区需求) | ❌ (有意不暴露 — 负载过大) | ❌ (使用 CLI) | ◑ 事件负载中的 |
Mini-NVR(本地录像) | ✅ 连续 + 事件缓冲、环形缓冲预录 (v11.2.0 BETA → v14.7.0 模式) | ◑ 事件触发分段封装,无预录环形缓冲 (v10.7.0 BETA) | ❌ (通过免凭据 RTSP 端点委托给外部录像机) | ❌ (无 NVR 概念) | ◑ 仅连续,无事件缓冲 (v0.4.0-alpha) | ◑ 仅通过 |
SMB / NAS 录像上传 | ✅ | ✅ (v10.7.0 BETA) | ❌ | ❌ | ❌ | ❌ |
摄像机共享(好友) | ✅ 服务(共享 / 邀请 / 列表) | ✅ 命令 | ✅ 共享 / 邀请 / 移除 (仅 Gen2,v1.8.0) | ✅ 列表 / 邀请 / 共享 / 取消共享 / 移除 (v1.7.0) | ✅ 列表/邀请/移除/共享/取消共享 | ❌ |
云台 / 俯仰(360° Gen1) | ✅ 服务 | ✅ 命令 | ✅ | ✅ | ✅ 滑块连接实时 API | ❌ |
命名云台预设(home / left / right / back-left / back-right) | ✅ 可选选择实体 | ✅ | ✅ | ✅ | ❌ | ❌ |
双向语音 / 对讲 | ❌ | ✅ 命令 | ❌ | ◑ 仅监听 | ❌ | ❌ |
事件 Webhook 投递 | ✅ 服务 + 可选选项 | ✅ | ✅ 通过 MQTT 桥接 | ❌ (请求-响应模型) | ❌ | ❌ |
MQTT 事件桥接(移动 / 音频 / 人形) | 不适用 (HA 事件总线原生) | 不适用 (单次运行) | ✅ 管理员配置 | 不适用 | ❌ | ❌ |
Apple HomeKit(通过 HA Core 桥接) | ✅ 已文档化 | 不适用 | 不适用 | 不适用 | 不适用 | 不适用 |
快照定时 / 延时摄影 | ✅ examples/ YAML | ✅ cron + ffmpeg 示例 | ✅ Blockly 示例 | 不适用 | ❌ | ❌ |
原生仪表盘卡片 / 组件 | ✅ 2 个 Lovelace 卡片(单个 + 网格) | 不适用 | ✅ 2 个 vis-2 组件 — BoschCamera + BoschOverview 多摄像机 | 不适用 | ✅ (本身就是一个 Web 仪表盘) | ❌ |
画中画在后台标签页下保持运行 | ✅ | 不适用(无界面) | ✅ 自带 PiP + 冻结恢复、Web-Worker 心跳 (v1.7.2/v1.7.3) | 不适用(无界面) | ✅ 重连超时 + 冻结恢复 (v0.4.0-alpha) | 不适用(无界面) |
云中继远程回退 | ✅ 局域网不可达时自动切换 | ✅ 远程模式 | ❌ (设计上仅限本地) | ❌ (媒体仅限局域网;状态/事件通过云) | ◑ 继承 CLI | ◑ 远程选项(手动) |
基于浏览器的管理 / 配置界面 | ✅ HA 配置流程 | 不适用(CLI) | ✅ JSON 配置标签页 | 不适用(LLM 中介;通过 CLI / MCP 客户端配置) | ✅ 设置页面 | ◑ 编辑器配置节点 |
界面语言 | EN · DE · FR · ES · IT · NL · PL · PT · RU · UK · ZH-Hans (v12.4.0) | EN · DE · FR · ES · IT · NL · PL · PT · RU · UK · ZH-Hans (v10.3.0) | EN · DE · FR · ES · IT · NL · PL · PT · RU · UK · ZH-CN | 不适用 (无界面 — LLM 即前端) | ◑ 后端 i18n · 界面主要为英文 | 不适用 (仅英文) |
图例: ✅ 支持 · ❌ 不支持 / 暂无计划 · n/a 不适用于此平台。
所有四个项目共享相同的逆向工程 Cloud API + RCP 协议研究,但各自独立演进。Home Assistant 集成是功能最完整的参考实现;Python CLI 是最底层 / 可脚本化的接口;ioBroker 适配器面向 VIS 仪表板和 Blockly 自动化;MCP 服务器向 MCP 客户端(Claude Desktop、Claude Code、自定义)暴露一个精选的、局域网优先的工具接口,用于自然语言摄像头控制。
相关项目
属于 Bosch Smart Home Cameras 的五实现家族的一部分(外加一个 alpha 前端):
实现 | 仓库 | 状态 |
🏆 Home Assistant Integration | v16.0.1 · HA Quality Scale Platinum · 生产就绪 | |
🐍 Python CLI | v10.12.3 · Mini-NVR + SMB 上传(BETA)· LAN 回退(ping / --local)· PTZ 预设 · webhook 投递 · 抓拍 / 研究 / 独立使用 | |
🟢 ioBroker Adapter | v1.8.3 · 稳定 · npm · 隐私开关 Digest 凭据轮换 · MQTT 桥接 · PTZ 预设 · VIS-2 组件(BoschCamera + BoschOverview) | |
🤖 MCP Server(本仓库) | v1.7.2 · 凭据轮换 · PTZ 预设 · TOFU 证书固定 · 云端 CA 固定(CWE-295)· LAN-ping + prefer_local · zones/masks/rules/friends/firmware-install · Claude Code / Claude Desktop 集成 | |
🔴 Node-RED 节点(alpha) | v0.4.2-alpha · 事件 / 快照 / 隐私 / 配置 / 更多节点 |
此外:Bosch Smart Home Camera — Python Frontend (NiceGUI) — v0.4.2-alpha(仪表盘 + 摄像头详情 + 设置)—— 欢迎社区关注
HA 仍然是参考实现 —— 新功能首先在 HA 落地;Python CLI、ioBroker Adapter 和 MCP Server 随后逐步跟进。
许可证
MIT —— 参见 LICENSE。
Available Tools
71 toolsbosch_camera_audio_detection_getA
Get the glass-break + smoke/fire-alarm sound detection config for one Gen2 camera.
Only available on Gen2 Audio-Plus cameras (featureSupport.sound=true).
Raises hardware_unsupported for Gen1 cameras. Ported from HA
integration v14.2.0 (BoschGlassBreakDetectionSwitch / BoschFireAlarmDetectionSwitch).
Returns {glass_break, fire_alarm} (Bosch API fields detectGlassBreak /
detectFireAlarm).
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| fire_alarm | No | Whether smoke/fire-alarm sound detection is enabled (Bosch API field 'detectFireAlarm') |
| glass_break | No | Whether glass-break sound detection is enabled (Bosch API field 'detectGlassBreak') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries the full burden. Discloses the return format ({glass_break, fire_alarm}) and a key error case (hardware_unsupported for Gen1). Does not mention authentication, rate limits, or other potential errors, but is sufficiently transparent for a simple read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the main purpose, followed by compatibility and return format. No extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, simple return) and the existence of an output schema, the description covers purpose, constraints, error behavior, and return format comprehensively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description adds minimal value beyond the parameter name. The 'camera' parameter is not described in terms of format or expected values (e.g., serial number vs device ID). With only one parameter, the description should provide more context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'get' and resource 'glass-break + smoke/fire-alarm sound detection config' for a Gen2 camera. It distinguishes from siblings like 'bosch_camera_audio_detection_set' and other audio tools by specifying the exact configuration returned.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit compatibility conditions: only Gen2 Audio-Plus cameras with featureSupport.sound=true, and raises hardware_unsupported for Gen1. However, lacks explicit guidance on when to use this tool versus related siblings like bosch_camera_audio_get or privacy_sound_get.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_audio_detection_setA
Update glass-break and/or fire-alarm sound detection for one Gen2 camera.
Gen2 Audio-Plus-only feature — raises hardware_unsupported for Gen1
cameras. At least one of glass_break or fire_alarm must be provided.
Read-modify-write: the current config is fetched first, only the provided
field(s) are merged in, and both detectGlassBreak and detectFireAlarm
are always sent together on the PUT — Bosch's API silently resets whichever
field is omitted (same requirement as intrusionDetectionConfig).
Returns the updated {glass_break, fire_alarm} after write.
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes | ||
| fire_alarm | No | ||
| glass_break | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| fire_alarm | No | Whether smoke/fire-alarm sound detection is enabled (Bosch API field 'detectFireAlarm') |
| glass_break | No | Whether glass-break sound detection is enabled (Bosch API field 'detectGlassBreak') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Discloses read-modify-write behavior, the fact that both fields are always sent on PUT (Bosch API resets omitted fields), and the return value. This is highly transparent for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Six sentences, each providing essential information. Front-loaded with main action. No wasted words. Important details are included without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (3 parameters, read-modify-write, API quirk, Gen2 requirement), the description covers all necessary context. Output schema exists, but description still succinctly notes return value. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so description must compensate. It explains that glass_break and fire_alarm are boolean, at least one required, and how they merge with current config. Does not explain camera parameter, but that is self-explanatory as device identifier.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it updates glass-break and fire-alarm detection for Gen2 cameras. The verb 'update' and specific resource 'audio detection' are explicit. It distinguishes from siblings like bosch_camera_audio_detection_get (read) and bosch_camera_audio_set (general audio settings).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states it is a Gen2 Audio-Plus-only feature and raises hardware_unsupported for Gen1. Specifies that at least one of glass_break or fire_alarm must be provided. However, it does not explicitly compare with sibling tools like bosch_camera_audio_detection_get, though the usage is clear from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_audio_getA
Get the microphone and speaker level settings for one Gen2 camera.
Only for cameras with featureSupport.sound=true (Gen2 Indoor II and
Gen2 Outdoor II). Raises hardware_unsupported immediately for Gen1
cameras or Gen2 cameras without audio hardware.
Returns {microphone_level, speaker_level, intercom_enabled}.
intercom_enabled is None for cameras without a two-way intercom
(e.g. Outdoor II).
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| speaker_level | No | Speaker / intercom playback volume (0-100) |
| intercom_enabled | No | Two-way intercom enabled flag (Gen2 Indoor II only; None for cameras without intercom) |
| microphone_level | No | Microphone recording level (0-100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It details the return structure ({microphone_level, speaker_level, intercom_enabled}) and explains the intercom_enabled field can be None. It also mentions the hardware_unsupported error condition. This is sufficient transparency for a read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with only 4 sentences, each adding value. It is front-loaded with the core purpose and efficiently covers scope, error condition, and return details without unnecessary text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (implied by listing return fields), the description provides all necessary context: purpose, hardware requirements, error behavior, and return structure. It is fully adequate for a single-parameter read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% (no parameter descriptions in schema). While the description does not explicitly describe the 'camera' parameter, it provides context about which cameras are valid (Gen2 with sound=true), implying the parameter is a camera identifier. However, it does not specify format or constraints on the parameter value, so it partially compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get', the resource 'microphone and speaker level settings', and qualifies it as 'for one Gen2 camera', distinguishing it from sibling tools like bosch_camera_audio_set (set) and bosch_camera_audio_detection_get (get detection settings).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly limits usage to cameras with featureSupport.sound=true, specifically Gen2 Indoor II and Gen2 Outdoor II, and warns that it raises an error for Gen1 or unsupported Gen2 cameras. It does not explicitly name alternative tools for unsupported cases, but the guidance is clear and practical.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_audio_setA
Set the microphone level and/or speaker level for one Gen2 camera.
Only for cameras with featureSupport.sound=true (Gen2 Indoor II and
Gen2 Outdoor II). Raises hardware_unsupported for cameras without audio
hardware. At least one of mic_level or speaker_level must be provided.
Both values must be in the range 0-100. The API persists the full audio payload — unspecified fields are preserved from the current camera state.
Returns updated {microphone_level, speaker_level, intercom_enabled} after write.
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes | ||
| mic_level | No | ||
| speaker_level | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| speaker_level | No | Speaker / intercom playback volume (0-100) |
| intercom_enabled | No | Two-way intercom enabled flag (Gen2 Indoor II only; None for cameras without intercom) |
| microphone_level | No | Microphone recording level (0-100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description fully discloses: hardware unsupported error, range constraints, persistence of unspecified fields, and return value structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise but slightly dense; could be broken into bullet points, but all information is front-loaded and every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers prerequisites, errors, constraints, behavior with unspecified fields, and return fields. Output schema exists, but description sufficiently describes return structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage, but the description explains parameter roles, optional nature, range (0-100), and at-least-one requirement, adding substantial meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sets microphone and/or speaker levels for Gen2 cameras with specific feature support, distinguishing it from siblings like bosch_camera_audio_get which retrieves levels.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly specifies conditions (featureSupport.sound=true), raises hardware_unsupported otherwise, and requires at least one of mic_level/speaker_level. Lacks explicit alternatives but provides clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_autofollow_getA
Get auto-follow (360° auto-tracking) state for one camera.
Returns {enabled}. Only meaningful for 360° cameras with panLimit > 0
(Gen1 CAMERA_360 indoor). Raises hardware_unsupported for non-360° cameras.
API: GET /v11/video_inputs/{id}/autofollow.
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| enabled | Yes | Whether auto-follow tracking is enabled |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses return format ({enabled}), conditions for meaningful use, error case for unsupported cameras, and underlying API endpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences, front-loaded with purpose, no unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, parameter, return format, conditions, and error case. Output schema exists, so return details are sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter 'camera', which is intuitive from tool name. Description could clarify it's a camera ID but schema coverage is 0% and no additional semantics added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it gets the auto-follow state for one camera. The description distinguishes it from 'set' sibling and specifies the camera type condition.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage for reading state, but lacks explicit comparison to 'set' tool. Provides context on when it's meaningful (360° cameras with panLimit>0) and error handling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_autofollow_setA
Enable or disable 360° auto-tracking for one camera.
Only available on 360° indoor cameras (panLimit > 0).
Raises hardware_unsupported for non-360° cameras.
API: PUT /v11/video_inputs/{id}/autofollow Body: {"result": bool}.
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes | ||
| enabled | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| enabled | Yes | Whether auto-follow tracking is enabled |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the main behavior (enable/disable), hardware dependency, and error condition. It does not detail side effects or response format, but for a toggle tool this is adequate. No contradiction with annotations as none exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with three sentences, each adding value. The first sentence sets the purpose, the second adds a usage constraint, and the third provides the API endpoint and body format. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists (not shown but indicated), the description need not explain return values. It covers the hardware requirement, error handling, and API details. For a simple set operation, this is near-complete, though adding a note that it performs a write operation would enhance completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains that 'enabled' is a boolean for turning auto-tracking on/off, but does not specify the format or expected values for the 'camera' parameter (likely an ID string). The API body example clarifies the structure, yet the camera parameter remains ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool enables or disables 360° auto-tracking for one camera, using a specific verb and resource. It distinguishes from siblings, such as bosch_camera_autofollow_get which retrieves the state, by indicating this tool is for setting the autofollow state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit context on when to use the tool: only for 360° indoor cameras with panLimit > 0. It also specifies the error raised for unsupported camera types. However, it does not explicitly state when not to use it, such as for non-360° cameras, beyond the error condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_darkness_threshold_getA
Get the day/night lighting threshold and fading mode. Gen2 cameras only.
0% = always day, 100% = always night. API: GET /v11/video_inputs/{id}/lighting.
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| soft_light_fading | Yes | Whether lights fade smoothly (True) or snap on/off (False) |
| threshold_percent | Yes | Ambient-darkness trigger threshold, 0=always day .. 100=always night |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of explaining behavior. It discloses the GET endpoint, the read-only nature through 'Get', the camera-generation limitation, and the interpretation of ranges (0% = always day, 100% = always night). This is useful contextual behavior beyond just restating the tool's name. It does not go into authentication or rate limits, but those are not present in any annotation and may not be expected for a simple GET.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: three short lines cover the high-level operation, compatibility, value semantics, and the HTTP endpoint. Every sentence earns its place and there is no filler. It is appropriately front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only operation, the description covers the purpose, important range interpretation, and API endpoint. An output schema exists and can define the response format. But because annotations and schema param descriptions are absent, the description falls short of fully explaining the camera param, and it doesn't mention whether any special auth or camera state is needed. It is useful but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter, 'camera', and the schema gives no description for it. The description's API line, 'GET /v11/video_inputs/{id}/lighting', obliquely suggests that the camera parameter corresponds to an ID, but it never explicitly maps 'camera' to '{id}' or explains expected values or format. With 0% schema coverage, the description should compensate more decisively.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Get') and a specific resource ('day/night lighting threshold and fading mode'), and it adds a compatibility restriction ('Gen2 cameras only'). It doesn't explicitly name sibling tools to differentiate itself, but the tool name and the read-oriented phrasing make its purpose unmistakable. A small deduction because it doesn't contrast itself with related tools like bosch_camera_darkness_threshold_set or bosch_camera_lighting_schedule_get.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear compatibility constraint: 'Gen2 cameras only.' This implies when not to use the tool, but it doesn't explicitly say 'use this when reading the threshold; use darkness_threshold_set when writing' or identify alternative siblings. The usage context is mostly inferable from the name and context signals, but it lacks direct when-to-use vs. alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_darkness_threshold_setA
Set the day/night lighting threshold and/or fading mode. Gen2 cameras only.
At least one of threshold_percent (0-100) or soft_light_fading must
be provided; the other field is preserved from the camera's current setting.
API: PUT /v11/video_inputs/{id}/lighting Body: {"darknessThreshold", "softLightFading"}.
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes | ||
| soft_light_fading | No | ||
| threshold_percent | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| soft_light_fading | Yes | Whether lights fade smoothly (True) or snap on/off (False) |
| threshold_percent | Yes | Ambient-darkness trigger threshold, 0=always day .. 100=always night |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It states that the operation is a mutation, that unspecified fields are preserved, and that only Gen2 cameras are supported. It also gives the exact API endpoint and body fields, which helps the agent anticipate the underlying request.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured: the main purpose leads, then the key constraint, then the API details. Each sentence serves a purpose and there is minimal redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter setter with an output schema and no annotations, the description is largely complete. It captures the core operation, the parameter constraint, the partial-update semantics, and the low-level API mapping. It omits permission requirements, but that is a relatively minor gap for this context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions are missing entirely (0% coverage), so the description must compensate. It does: it gives the 0-100 range for threshold_percent, explains soft_light_fading as a fading mode, and clarifies the 'at least one required' constraint. The camera parameter is not described, but the API path implies it is the camera ID.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Set the day/night lighting threshold and/or fading mode.' It also scopes the tool to Gen2 cameras only, which clearly identifies its purpose and distinguishes it from the corresponding getter, bosch_camera_darkness_threshold_get, and from other lighting tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives useful usage constraints: Gen2 cameras only, and at least one of threshold_percent or soft_light_fading must be provided. It clearly implies when to use this tool versus the matching getter, and explains the partial-update behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_eventsB
Return the most recent motion / person / audio events for one camera.
Each item contains: event_id, type, timestamp_iso, has_clip.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| camera | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must convey behavior. It states it returns 'most recent' events, which is vague regarding time window. It does not explicitly confirm read-only status, but returns data. Lacks details on ordering, pagination, or authentication. Adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is very short: two sentences. Front-loaded with purpose, then lists output fields. No unnecessary words. Could add more detail without sacrificing conciseness, but current structure is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 2 params, no annotations, and an output schema, the description covers the basic purpose and output fields. However, it lacks usage context among 30+ siblings, parameter details, and behavioral specifics. Minimal but functional; leaves gaps for an AI agent to resolve.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%. Description does not explain the camera parameter (expected value) or the limit parameter (default, meaning). It only lists output fields. The schema provides types but adds no semantic context beyond the description's purpose. Agent needs more param info to use correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it returns the most recent motion/person/audio events for a specific camera. The verb 'Return' and resource 'events' are specific. Among siblings like bosch_camera_motion_get and bosch_camera_audio_get, this tool aggregates event types, distinguishing it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like bosch_camera_motion_get or bosch_camera_unread_get. Description does not mention when-not-to-use or provide context for selection among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_feature_flagsA
Fetch account-level Bosch cloud feature flags from GET /v11/feature_flags.
Returns the raw dict of feature flag names to boolean values, e.g. {"APP_RATING": true, "IOT_THINGS_INTEGRATION": true, ...}. No camera parameter — flags are account-level. Useful for discovering which Bosch platform features are active for this account.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It discloses the HTTP method (GET), the return type (raw dict of booleans), and that it's account-level. However, it lacks details on authentication, rate limits, or potential side effects, though for a read operation this is minimally adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at four sentences, front-loads the action and endpoint, and includes a relevant example. Every sentence serves a purpose with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no parameters and a simple return type, the description fully explains what it does, what it returns (with example), and the scope (account-level). It meets all needs for correct selection and invocation given the context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema is empty (0 parameters), and schema description coverage is 100%. The description adds value by explicitly stating there is no camera parameter and that flags are account-level, which clarifies the scope beyond the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it fetches account-level Bosch cloud feature flags, returns a raw dict of flag names to booleans, and provides an example. It distinguishes itself from sibling tools which are camera-specific by explicitly noting no camera parameter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It says 'Useful for discovering which Bosch platform features are active for this account' and emphasizes 'No camera parameter — flags are account-level.' This implies when to use it, but does not explicitly mention when not to use it or name alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_firmware_installA
Install the pending firmware update for one camera right now.
Mirrors the HA integration's async_install_firmware guard: raises
invalid_argument if an install is already in progress, or if there is
no pending update to install (already up to date). The camera reboots for
roughly 3-7 minutes after the install starts; this call returns as soon
as Bosch accepts the request, it does not wait for the reboot to finish.
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| camera | Yes | Camera name |
| current | No | Currently installed version |
| installing | No | Whether an install is currently in progress |
| up_to_date | No | Whether the camera is already on the latest firmware |
| update_available | No | Pending update's target version, if any |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description effectively discloses key behaviors: it raises invalid_argument for concurrent installs or when up-to-date, and explains that the camera reboots for 3-7 minutes while the call returns immediately. Missing details like authentication or return value, but sufficient for a straightforward action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each providing essential information: the action, error guards, and post-install behavior. No redundant phrases; concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core action and notable behaviors but omits parameter details and any mention of the output schema (despite its presence). Given the tool's simplicity, this is a noticeable gap, though the output schema likely documents return values separately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description does not explain the 'camera' parameter (e.g., what values it accepts). It only mentions 'one camera' vaguely. This gap forces the agent to infer the parameter's meaning from the schema alone, which is inadequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (Install) and resource (pending firmware update for one camera). It distinguishes the tool from its sibling 'bosch_camera_firmware_status', which checks for updates, making it clear that this tool performs the installation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool (when a pending update exists) and specifies error conditions (install in progress, no pending update). It could be more explicit about prerequisites (e.g., check status first) and alternatives, but context from siblings helps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_firmware_statusB
Get the current/latest firmware version and update-availability for one camera.
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| camera | Yes | Camera name |
| current | No | Currently installed version |
| installing | No | Whether an install is currently in progress |
| up_to_date | No | Whether the camera is already on the latest firmware |
| update_available | No | Pending update's target version, if any |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description bears full responsibility. It only states the operation is a get (read), but does not disclose behavioral traits like permissions, rate limits, or behavior when camera is offline.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence of 12 words with no extra verbiage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has one parameter and an output schema. The description covers the core purpose, but lacks parameter details. However, for a simple info retrieval tool, it is mostly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not clarify the 'camera' parameter format (e.g., ID, name, serial). It only says 'one camera', adding no meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Get), resource (firmware version and update-availability), and scope (one camera). It distinguishes from sibling tool 'bosch_camera_firmware_install' which installs firmware.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use or alternatives. Usage is implied as checking firmware status before an install, but no prerequisites or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_friends_inviteB
Invite a new friend (by email) to share cameras with. Account-level.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | Friend id (Bosch API field 'id') |
| No | Friend's email address | |
| status | No | Invitation status, e.g. ACCEPTED/PENDING |
| nickname | No | Display nickname |
| shared_cameras | No | Camera ids currently shared with this friend |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must cover behavioral aspects. It only states the action, omitting details like authorization requirements, whether the invite is sent immediately, idempotency, or error cases (e.g., duplicate email).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two short phrases. It is front-loaded, but the brevity sacrifices necessary details for an agent to use the tool effectively.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given one parameter and an output schema, the description should clarify the result (e.g., success message, pending invite). It lacks prerequisites and side effects, making it incomplete for reliable agent decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds minimal value beyond the parameter name 'email' by noting '(by email)'. It does not explain format, validation, or implications.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Invite' and the resource 'a new friend (by email)' to share cameras, and specifies it is account-level. It distinguishes from sibling tools like friends_list, friends_remove, friends_share, and friends_unshare.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use: to invite someone via email. It mentions 'Account-level' which clarifies scope. However, it does not provide when-not-to-use or explicitly mention alternatives among sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_friends_listA
List all friends/invitations this account has shared cameras with.
No camera parameter — friends are account-level, not per-camera.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It explains the scope and that it lists both friends and invitations, but it does not disclose whether it returns pending or accepted ones, or require any authentication details. For a read-only list tool, the description is adequate but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, front-loaded with the verb, and contains no redundant information. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the existence of an output schema and the simplicity of the tool (no parameters), the description is sufficiently complete. It could optionally mention the format of the response, but overall it provides necessary context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so the schema coverage is effectively 100%. The description adds no parameter information, but none is needed. Baseline for 0 parameters is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'friends/invitations this account has shared cameras with'. It also clarifies the scope as account-level, distinguishing it from per-camera tools like bosch_camera_friends_share.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'No camera parameter — friends are account-level, not per-camera,' helping the agent understand when to use this tool. However, it lacks explicit comparisons to sibling tools like bosch_camera_friends_invite.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_friends_removeA
Remove a friend entirely (revokes shares and deletes the invitation/friendship).
Returns {removed, friend_id}.
| Name | Required | Description | Default |
|---|---|---|---|
| friend_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses destructive behavior (removes entirely) and return format, going beyond basic purpose. It does not cover authentication or reversibility, but it is transparent about side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences front-loaded with key information and no unnecessary words. Highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, side effects, and return format, but lacks parameter documentation and prerequisites (e.g., 'friend_id must exist'). Adequate for a simple tool but incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain the required 'friend_id' parameter (e.g., how to obtain it or its format). No added value beyond the schema structure.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Remove a friend entirely' with specific side effects (revokes shares, deletes invitation/friendship), which distinguishes it from sibling tools like friends_invite, friends_share, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is for final removal but does not explicitly say when to use it vs alternatives like friends_unshare. No when-not or comparative guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_hard_resetA
Factory-reset one camera (hard reset). DESTRUCTIVE.
Unpairs the camera from the Bosch account — it must be re-commissioned
from scratch via the Bosch app before it works again. Requires
confirm=True or raises invalid_argument without calling the API.
API: PUT /v11/video_inputs/{id}/hard_reset (empty body).
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes | ||
| confirm | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries full behavioral burden. It discloses destructive impact, account-unpairing, the need to re-commission the camera, confirmation requirement, the error behavior, and the API endpoint called.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, front-loaded with the critical DESTRUCTIVE label, and every sentence earns its place: what it does, why it is dangerous, what prerequisite must be set, and the exact API call.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given this tool's destructive nature, the description covers every essential bit an agent needs: purpose, side effects, required confirm flag, error when not set, and the underlying endpoint. Output schema exists, so return-value details are not required here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does explain the confirm parameter thoroughly—boolean required or invalid_argument is raised—and connects camera to the API path. It never explicitly defines what value `camera` should take, but the parameter name and endpoint context make this mostly inferable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names an exact operation—factory-reset one camera via an explicit API endpoint—and clearly differentiates itself from the many camera siblings by calling the operation DESTRUCTIVE and noting it unpairs the camera from the Bosch account. This makes it unambiguous compared to soft_reset and other non-destructive tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly conveys the consequence of use (unpairing and full re-commissioning), which tells an agent when this is appropriate. It does not name an explicit alternative like soft_reset, but the destructive-consequence context provides clear usage guidance without needing exclusions spell out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_health_check_allA
Bulk health check for ALL configured cameras in one call.
Returns status + WiFi signal + privacy mode + last event + unread count for each camera. Replaces 4+ separate MCP calls for dashboard use.
Errors per camera are captured in the error field rather than raising,
so a single failing camera does not abort the entire check.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses key behavioral traits: errors per camera are captured in the 'error' field instead of raising exceptions, and the return fields are listed. This goes beyond minimal disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences, front-loaded with the core purpose. Every sentence adds value: purpose, return values, error handling. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and an output schema exists, the description sufficiently explains its behavior, return fields, and error handling. It covers what an agent needs to know for invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and schema coverage is 100%. The description adds value by explaining that the check covers all cameras without needing parameters. Baseline for 0 params is 4, which is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'health check' and resource 'ALL configured cameras in one call'. It distinguishes from sibling tools that operate on individual cameras or settings by emphasizing bulk operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says it 'Replaces 4+ separate MCP calls for dashboard use', indicating when to use it for aggregated overview. However, it does not specify scenarios where this tool should not be used, but the context from sibling tools makes it clear that individual checks are alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_intercom_openA
Open a listen-audio session tunnel to a camera (cloud proxy).
Listen-only — returns an RTSPS URL streaming the camera's microphone
audio to the caller. True two-way talk (caller mic -> camera speaker) is
not exposed via the Bosch cloud API (same limitation as the Python CLI's
own intercom command — it falls back to ffplay for listen-only
playback). The returned URL is consumable by ffmpeg/ffplay/VLC; the MCP
server does not itself play audio.
Flow: optionally sets the camera's speaker level (full-body PUT to
/audio, preserving other fields), then opens a live connection via
PUT /v11/video_inputs/{id}/connection (tries REMOTE then LOCAL) and
builds an rtsps:// URL with enableaudio=1.
Args:
camera: Camera name (case-insensitive).
duration: Requested session duration in seconds (embedded in the URL
as maxSessionDuration), default 60.
speaker_level: Optional 0-100 speaker level to set before opening
the session.
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes | ||
| duration | No | ||
| speaker_level | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| camera | Yes | Canonical camera name |
| duration | Yes | Requested session duration in seconds |
| rtsps_url | Yes | Cloud-proxy RTSPS URL with enableaudio=1, consumable by ffmpeg/ffplay/VLC |
| speaker_level_set | No | Speaker level actually applied (0-100), or None if not requested/failed |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully covers behavioral aspects: listen-only limitation, optional speaker level setting, connection flow (REMOTE then LOCAL), and URL construction with enableaudio=1. It also notes the server does not play audio, providing complete transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is detailed and well-structured with paragraphs and a bullet list of arguments. It is longer than minimal but each sentence adds value. Minor redundancy could be trimmed, but overall effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity and that output schema exists, the description appropriately explains the return value (RTSPS URL) and the complete workflow. No critical gaps remain for an agent to correctly invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, yet the description explains each parameter: camera (case-insensitive name), duration (default 60s, embedded as maxSessionDuration), and speaker_level (optional 0-100). It adds practical context beyond the schema, fully compensating for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as opening a listen-audio session tunnel and returning an RTSPS URL. It explicitly states 'listen-only' and distinguishes from other intercom functions. The verb+resource combination is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description advises that the tool is listen-only and that true two-way talk is not supported, referencing the Python CLI limitation. It details the intended usage flow but does not explicitly state when to avoid using this tool in favor of siblings, though the context makes it clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_intrusion_getA
Get the intrusion detection configuration for one Gen2 camera.
Returns {mode, sensitivity, distance}. Only available on Gen2 cameras
(has_sound=true in config is reused as the Gen2 gate; intrusion detection
is a Gen2-only feature). Raises hardware_unsupported for Gen1 cameras.
mode: PERSON | STANDARD | HIGH_SENSITIVITY | ZONES |
ALL_MOTIONS | ONLY_HUMANS (maps to Bosch API field detectionMode).
sensitivity: 0 (low) to 7 (high) — confirmed range FW 9.40+.
distance: detection range in meters, 1-8 (Bosch API limit).
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| mode | No | Detection mode (Bosch API field 'detectionMode'). Valid: PERSON | STANDARD | HIGH_SENSITIVITY | ZONES | ALL_MOTIONS | ONLY_HUMANS. Corrected 2026-05-28 — previously documented as OFF|ACTIVE|SCHEDULED which Bosch silently ignored because both the field name and the value set were wrong. |
| distance | No | Detection distance in meters (1-8) |
| sensitivity | No | Detection sensitivity (0-7; 0=low, 7=high) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description carries full burden. Discloses return tuple structure, field meanings, valid ranges, and error condition for Gen1. Good behavioral coverage for a read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise with front-loaded purpose. Field details are structured in a code block, efficient but slightly lengthy. Could be trimmed if output schema covers returns.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Completeness is high given output schema existence. Description adds value by explaining return fields, detection mode mapping, and the Gen2 identification method.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description should compensate. The only parameter 'camera' is self-explanatory, but no additional format or usage guidance is provided. Adequate for a simple string parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the verb 'Get' and resource 'intrusion detection configuration' for one Gen2 camera. Distinguishes from sibling bosch_camera_intrusion_set and specifies Gen2-only scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states Gen2-only availability and raises hardware_unsupported for Gen1 cameras. Provides clear context for when to use, though no explicit alternative for Gen1 is suggested.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_intrusion_setA
Update the intrusion detection configuration for one Gen2 camera.
Gen2-only feature — raises hardware_unsupported for Gen1 cameras.
At least one parameter must be provided.
mode: PERSON | STANDARD | HIGH_SENSITIVITY | ZONES |
ALL_MOTIONS | ONLY_HUMANS (maps to Bosch API field detectionMode).
v1.6.0 incorrectly documented OFF|ACTIVE|SCHEDULED and silently sent mode
instead of detectionMode — Bosch's API accepted the request but dropped the
field. Fixed in v1.6.1.
sensitivity: 0-7 (0 = low, 7 = high; FW 9.40+ confirmed range).
distance: detection range in meters, 1-8 (Bosch API rejects 9+ with
HTTP 400 "must be less than or equal to 8" — verified 2026-05-28 FW 9.40.102).
Unspecified fields are preserved from the current camera configuration.
Returns the updated {mode, sensitivity, distance} after write.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | ||
| camera | Yes | ||
| distance | No | ||
| sensitivity | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| mode | No | Detection mode (Bosch API field 'detectionMode'). Valid: PERSON | STANDARD | HIGH_SENSITIVITY | ZONES | ALL_MOTIONS | ONLY_HUMANS. Corrected 2026-05-28 — previously documented as OFF|ACTIVE|SCHEDULED which Bosch silently ignored because both the field name and the value set were wrong. |
| distance | No | Detection distance in meters (1-8) |
| sensitivity | No | Detection sensitivity (0-7; 0=low, 7=high) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses mutation behavior ('Update[s]', 'unspecified fields are preserved'), return format, and a historical bug. It does not explicitly state authorization needs, rate limits, or idempotency, but covers key behavioral aspects like error conditions for distance >8.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately long but efficiently structured: purpose first, then key constraint, followed by parameter details. Every sentence adds value, though some historical notes could be condensed. Still, it remains focused and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters (1 required) and no output schema provided (but noted as existing), the description covers the return format and key behavioral details. The hardware constraint, version bug, and parameter ranges provide a complete picture for an agent to invoke correctly. No gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description fully compensates. Each parameter (mode, sensitivity, distance) is explained with accepted values, ranges, mapping to Bosch API fields, and version-specific behavior. This goes well beyond the bare schema, making parameter usage clear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it 'Update[s] the intrusion detection configuration for one Gen2 camera.' It specifies the resource (intrusion detection config), action (update), and scope (one Gen2 camera), distinguishing it from siblings like bosch_camera_intrusion_get (retrieval). The Gen2-only constraint further clarifies its domain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly notes Gen2-only requirement ('raises hardware_unsupported for Gen1 cameras') and 'At least one parameter must be provided.' It also provides version-specific advice (v1.6.0 vs v1.6.1). However, it does not compare with sibling set tools (e.g., motion_set) to guide when to use this over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_lan_pingA
Probe whether a camera is reachable on the LAN (TCP port 443, 1.5 s timeout).
Pass either camera (resolved against bosch_config.json) or a raw
lan_ip. Useful when diagnosing cloud-down situations: if this returns
reachable=true while the cloud API is returning 5xx, privacy/light writes
via prefer_local=True will work without waiting for Bosch infrastructure.
Returns {reachable, ip, latency_ms}.
| Name | Required | Description | Default |
|---|---|---|---|
| camera | No | ||
| lan_ip | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ip | Yes | IP address that was probed |
| reachable | Yes | True if the camera responded within the timeout |
| latency_ms | Yes | Round-trip latency in milliseconds, or -1.0 if unreachable |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It discloses the protocol (TCP port 443), timeout (1.5 s), and return values (reachable, ip, latency_ms). This is sufficient transparency for a simple network probe. A minor gap: it doesn't explain behavior on timeout or invalid IP, but the return schema indicates those cases would likely return reachable=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: three sentences covering functionality, parameter usage, and return format. No redundant information. Front-loaded with the core probe action, then rationale, then output shape.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the presence of an output schema (implied by context), the description fully covers the tool's purpose, parameters, and return value. Sibling tools are numerous but none overlap in functionality, so no further differentiation needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must add meaning. It explains that 'camera' is resolved from bosch_config.json, while 'lan_ip' is a raw IP. It also implies mutual exclusivity by saying 'Pass either... or...'. This adds essential semantic value beyond the schema's basic type declarations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool probes camera LAN reachability on TCP port 443 with a 1.5s timeout. This is distinct from all sibling tools, which are about camera features like audio, motion, or streaming. The verb 'probe' and resource 'camera reachability' are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises when to use this tool: diagnosing cloud-down situations. It explains the consequence: if reachable, local writes (privacy/light) will work without waiting for Bosch infrastructure. This provides clear context and guidance, differentiating it from other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_led_brightness_getA
Get top or bottom LED brightness (0-100%). Gen2 cameras only.
position must be "top" or "bottom".
API: GET /v11/video_inputs/{id}/lighting/switch.
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes | ||
| position | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| position | Yes | 'top' or 'bottom' |
| brightness_percent | Yes | 0-100 % |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'Get' and 'API: GET /v11/...' make the read-only nature clear, and the 0-100% plus Gen2-only scope sets expectations. It does not discuss error behaviors, permissions, or what happens on unsupported camera generations, but for a simple read operation this is a reasonable disclosure level.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the main action, allowed values, and Gen2-only constraint. The position constraint and HTTP endpoint are each stated once and in a structured way, with no filler or unnecessary repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple two-parameter getter, and the description sufficiently captures the key compatibility, position values, and API endpoint. Since an output schema exists, the return values do not need to be explained. The only real gap is the format/identifier expected for camera, which the API path partially addresses via {id}.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, so the description must compensate. It does add essential meaning: position must be exactly "top" or "bottom", and the API path maps camera to the {id} placeholder. However, the camera parameter itself is not fully explained, so the agent still has to infer what value to pass.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Get top or bottom LED brightness (0-100%)'. It also adds the Gen2-only compatibility constraint and the allowed positions, making it clear this is a read tool. It does not explicitly name the corresponding sibling, bosch_camera_led_brightness_set, to differentiate, so it stops just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Gen2 cameras only' is an explicit compatibility boundary, and 'position must be "top" or "bottom"' clearly states which reading must be made. The description does not explicitly name an alternative for Gen1 cameras or tell the agent when to prefer this tool over the setter sibling, but the overall usage context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_led_brightness_setB
Set top or bottom LED brightness (0-100%). Gen2 cameras only.
position must be "top" or "bottom".
API: PUT /v11/video_inputs/{id}/lighting/switch (full-body write, GET-merged).
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes | ||
| position | Yes | ||
| brightness_percent | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| position | Yes | 'top' or 'bottom' |
| brightness_percent | Yes | 0-100 % |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose more of the write/au behavior. It does mention 'API: PUT /v/video_inputs/{id}/lighting/switch' and 'full-body write, GET-merged', which hints at the underlying mechanism. However, it does not state side effects, reversibility, permissions requirements, or whether existing lighting settings get overwritten.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded, starting with the action and core constraint. The API line adds technical context about the write mode. It is concise, although the 'full-body write, GET-merged' detail could be clearer or more prominently linked to the call flow.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description gives enough to understand the operation and valid values for two key parameters, but the 'camera' parameter is left to inference. Even with a camera list sibling, trusting the caller to know the schema's camera pattern makes the description less complete than ideal.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% parameter description coverage, so the description must compensate. It clarifies that position must be 'top' or 'bottom' and that brightness is a 0-100% scale, and the API path suggests 'camera' is the id in the URL. The meaning of 'camera' is still implicit rather than explicitly define description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Set top or bottom LED brightness (0-100%).' It identifies the exact resource being modified and the valid value range. It also adds a compatibility constraint, but does not explicitly distinguish itself from sibling tools such as bosch_camera_light_set or bosch_camera_status_led_set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies its usage through the 'Set' verb and supports 'fromally' cameras, but it does not explicitly describe when to choose this tool over siblings like bosch_camera_led_brightness_get or bosch_camera_light_set. The 'Gen2 cameras only' note is a useful exclusion but does not fully route the model to or away from alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_lens_elevation_getA
Get the configured lens mounting height (meters). Gen2 cameras only.
Used by the camera for perspective correction in person detection. API: GET /v11/video_inputs/{id}/lens_elevation.
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| meters | Yes | Mounting height in meters, used for person-detection perspective correction |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden, and it does so well: 'GET' implies read-only access, 'configured' indicates it returns an existing setting rather than changing it, and the Gen2-only restriction is disclosed. It also explains why the value matters, which goes beyond the machine-readable schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with no fluff: the purpose and unit are front-loaded, the compatibility caveat is prominent, and the API path provides useful reference. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter getter with an output schema, the description covers the operation, scope, units, end-to-end reason, and API shape. A minor gap is that it does not explicitly state that `camera` must be a video input id or name, but the endpoint template largely fills that in.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides no per-parameter description, so the description must help map the lone `camera` parameter. The endpoint path suggests that `{id}` corresponds to `camera`, and the unit/direction of the value is clear, but the mapping is implicit rather than explicit. That is a useful clue but not a full parameter explanation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the exact action ('Get'), the resource ('configured lens mounting height'), the unit (meters), and a key constraint (Gen2 only). The companion setter is clearly distinguished, and the endpoint path is included for disambiguation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Mentions a concrete use case (perspective correction in person detection) and limits the tool to Gen2 cameras, giving an explicit applicability constraint. It does not name alternative tools or provide a when-not-to-use strategy, but the scope is clear enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_lens_elevation_setA
Set the lens mounting height in meters (0.5-5.0). Gen2 cameras only.
API: PUT /v11/video_inputs/{id}/lens_elevation Body: {"elevation": float}.
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes | ||
| meters | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| meters | Yes | Mounting height in meters, used for person-detection perspective correction |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It reveals that this is a write/set operation and gives the HTTP contract, but it does not mention side effects, required permissions, error behavior, reversibility, or whether the change takes effect immediately.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: the primary action and constraints come first, followed by the exact API specification. Every sentence adds operational value with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter setter, the description provides enough invocation-critical detail: operation, range, unit, and raw API shape. Since an output schema exists and the schema exposes the two required parameters, the remaining gaps around authentication and side effects are noticeable but not blocking.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It meaningfully defines the `meters` parameter with units and a valid range (0.5-5.0) and maps it to the API body field "elevation". However, the `camera` parameter is not explicitly described beyond the API path placeholder `{id}`, leaving some interpretation to the agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action as 'Set the lens mounting height in meters (0.5-5.0)', specifying a concrete verb, resource, unit, and allowed range. This also distinguishes the tool from the sibling getter bosch_camera_lens_elevation_get.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a meaningful usage constraint ('Gen2 cameras only') and the exact API endpoint, which tells the agent when it is not applicable. However, it does not explicitly contrast this with related tools or explain when to prefer the getter or other camera configuration tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_lighting_schedule_getA
Get the LED lighting schedule for one outdoor (Eyes) camera.
API: GET /v11/video_inputs/{id}/lighting_options. Only available on
outdoor cameras with LED light — raises hardware_unsupported (HTTP 442)
on cameras without this feature, and api_unreachable (HTTP 444) if the
camera is offline.
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| on_time | No | Light-on time HH:MM:SS (Bosch API field 'generalLightOnTime') |
| off_time | No | Light-off time HH:MM:SS (Bosch API field 'generalLightOffTime') |
| wallwasher_on | No | Wallwasher light state during general-light-on (read-only) |
| light_on_motion | No | Whether motion also triggers the light |
| schedule_status | No | Bosch API field 'scheduleStatus', e.g. FOLLOW_SCHEDULE |
| darkness_threshold | No | 0.0-1.0 ambient-darkness trigger threshold |
| front_illuminator_on | No | Front illuminator state during general-light-on (read-only) |
| front_illuminator_intensity | No | Front illuminator intensity (read-only) |
| light_on_motion_followup_secs | No | Seconds the light stays on after motion (read-only) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool raises specific HTTP errors (442 for hardware unsupported, 444 for camera offline), which adds valuable behavioral context beyond the schema. However, it does not explicitly state read-only behavior or idempotency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, starting with the core purpose. It is efficient, but the API endpoint detail could be integrated more concisely.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists, return values are covered. However, the description lacks parameter help and does not mention any required permissions. For a simple read tool with many siblings, it is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter 'camera' has a type but no description in the input schema (0% coverage). The tool description does not add any meaning about what the 'camera' parameter expects (e.g., format, ID, or valid values), leaving the agent without guidance to fill it correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Get' and identifies the exact resource 'LED lighting schedule for one outdoor (Eyes) camera'. It clearly distinguishes from sibling tools like 'bosch_camera_lighting_schedule_set' and 'bosch_camera_light_set'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions hardware and connectivity prerequisites and error conditions, but does not explicitly state when this tool should be used versus alternatives (e.g., 'use this to read the schedule, use set to change it'). The guidance is implied but not direct.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_lighting_schedule_setA
Update the LED lighting schedule for one outdoor (Eyes) camera.
Read-modify-write on GET/PUT /v11/video_inputs/{id}/lighting_options.
At least one of on_time/off_time/light_on_motion/
darkness_threshold must be provided. Writing any field forces
scheduleStatus to FOLLOW_SCHEDULE (matches CLI behavior).
Only available on outdoor cameras with LED light — raises
hardware_unsupported (HTTP 442) otherwise, api_unreachable
(HTTP 444) if the camera is offline.
Args: camera: Camera name (case-insensitive). on_time: Light-on time, "HH:MM" or "HH:MM:SS". off_time: Light-off time, "HH:MM" or "HH:MM:SS". light_on_motion: Whether motion also triggers the light. darkness_threshold: Ambient-darkness trigger threshold, 0.0-1.0.
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes | ||
| on_time | No | ||
| off_time | No | ||
| light_on_motion | No | ||
| darkness_threshold | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| on_time | No | Light-on time HH:MM:SS (Bosch API field 'generalLightOnTime') |
| off_time | No | Light-off time HH:MM:SS (Bosch API field 'generalLightOffTime') |
| wallwasher_on | No | Wallwasher light state during general-light-on (read-only) |
| light_on_motion | No | Whether motion also triggers the light |
| schedule_status | No | Bosch API field 'scheduleStatus', e.g. FOLLOW_SCHEDULE |
| darkness_threshold | No | 0.0-1.0 ambient-darkness trigger threshold |
| front_illuminator_on | No | Front illuminator state during general-light-on (read-only) |
| front_illuminator_intensity | No | Front illuminator intensity (read-only) |
| light_on_motion_followup_secs | No | Seconds the light stays on after motion (read-only) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Discloses read-modify-write pattern, side effect of forcing scheduleStatus, specific HTTP error codes (hardware_unsupported, api_unreachable), and that only outdoor cameras with LED light are supported. Thoroughly transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is about 150 words, highly concise. Opens with purpose, then explains behavior pattern, constraints, and parameter list. No redundant sentences. Every sentence adds necessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 parameters (1 required), no annotations, and presence of output schema, the description covers purpose, usage, constraints, side effects, error conditions, and parameter formats. It is sufficient for an agent to understand when and how to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so description must compensate. Provides a list of all five parameters with brief but meaningful descriptions: camera (case-insensitive), on_time/off_time (format HH:MM[:SS]), light_on_motion (boolean), darkness_threshold (0.0-1.0). Adds value beyond schema titles, though could include more detail like time format validation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Starts with 'Update the LED lighting schedule for one outdoor (Eyes) camera.' Clearly specifies verb (update), resource (LED lighting schedule), and scope (outdoor camera with LED light). Distinguishes from siblings like bosch_camera_lighting_schedule_get.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains when to use: to update the schedule. Notes that at least one optional field must be provided and that writing any field forces scheduleStatus to FOLLOW_SCHEDULE. Mentions availability constraints and error codes. Does not explicitly state when not to use it, but conditions are implied by error scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_light_setA
Turn the camera's spotlight on or off.
Only for cameras with featureSupport.light=true (currently: Eyes Outdoor II /
HOME_Eyes_Outdoor). Raises hardware_unsupported immediately for cameras without
a controllable light — no Bosch cloud call is made.
When prefer_local=True, attempt the RCP-LAN write path FIRST (skipping
the Bosch cloud entirely). Maps enabled=True to brightness 100, False
to 0. Falls back to the cloud API automatically if the LAN write fails or if
no local_ip is configured. Wallwasher RGB is always cloud-only.
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes | ||
| enabled | Yes | ||
| prefer_local | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| status | Yes | |
| light_on | No | |
| privacy_mode | Yes | |
| last_event_at | No | ISO 8601 timestamp of the latest motion event |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description fully discloses behavioral traits: immediate error for unsupported cameras, local vs cloud path preference, brightness mapping, fallback mechanism, and wallwasher RGB limitation. This goes well beyond the bare minimum.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with two clear paragraphs. The first sentence states the core action, followed by bullet-like details. Every sentence provides value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description covers all necessary aspects: purpose, prerequisites, error behavior, parameter details, and edge cases. It is fully sufficient for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully compensates by explaining the 'enabled' parameter's mapping to brightness 100/0, the 'prefer_local' parameter's effect on execution path and fallback, and implicitly the 'camera' parameter. It adds significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Turn the camera's spotlight on or off.' It specifies the verb and resource directly, and distinguishes from sibling tools by mentioning spotlight control and camera compatibility.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies when to use the tool: only for cameras with 'featureSupport.light=true', and mentions immediate error for unsupported cameras. It implicitly tells when not to use (for non-spotlight tasks), but does not explicitly compare to alternatives like 'bosch_camera_light_set' vs other light-related tools (none exist among siblings).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_listA
List all configured Bosch cameras with their online status.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the output includes online status, but lacks information on potential behavioral aspects like pagination, rate limits, or error handling. Without annotations, more detail would be beneficial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that conveys the purpose without waste. It is front-loaded with the key action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, output schema exists), the description is complete. It provides enough context for an agent to understand what the tool does without needing additional detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so the schema coverage is 100% trivially. The description adds nothing about parameters, but none are needed. Baseline score of 4 is appropriate for zero-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists all configured Bosch cameras with their online status. The verb 'list' and resource 'configured Bosch cameras' are specific, and it distinguishes itself from sibling tools that operate on individual cameras or features.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives, but it is implied that listing cameras is a prerequisite for other operations. However, no when-not-to-use or alternative recommendations are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_local_data_statusA
Read-only state of the camera's local data interface (never returns a password).
Only Gen2 cameras on firmware >= 9.40.105 are queried; others report
unsupported with queried=False.
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| state | Yes | active | inactive | unsupported | unknown |
| camera | Yes | Canonical camera name |
| queried | Yes | False when the camera is not eligible (Gen1 / old firmware) |
| password_configured | Yes | Whether a sticker password is configured |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does well: it declares the operation read-only, states that a password is never returned, and explains the fallback behavior for unsupported cameras ('unsupported' with 'queried=False'). It does not mention auth or permission requirements, but the core behavior is well disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the purpose and then the compatibility condition. Every sentence earns its place, and the code-formatted sentinel values improve scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema exists, so return details are largely covered, and the description supplies important version/model gating. However, the single required parameter remains undocumented, leaving the definition incomplete for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one required 'camera' parameter, but the schema has 0% description coverage and the description does not explain what the camera identifier should be (e.g., name, ID, IP). The description mentions 'cameras' generally but adds no usable meaning beyond the bare parameter name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource ('camera's local data interface') and describes its state as read-only, which is clearer than a generic status tool. It does not explicitly differentiate itself from the many sibling camera-status tools, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a meaningful precondition: only Gen2 cameras on firmware >= 9.40.105 are queried. However, it does not say when to use this tool versus other diagnostic or status tools, so the guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_maintenance_statusA
Fetch the current Bosch Smart Home cloud maintenance announcement from the official community RSS feed.
Returns title, time window, link, state (active/scheduled/past/recent/unknown/idle),
and a recommended_action hint for the calling agent:
"check_lan"— state is"active"(outage/maintenance in progress): runbosch_camera_lan_pingto check per-camera LAN reachability, then useprefer_local=Trueon privacy/light writes while the cloud is down."wait"— state is"scheduled": outage is upcoming; no action needed yet.null— state is past/recent/unknown/idle: normal operation expected.
Use this tool when users ask why cameras are unavailable or when the cloud returns 5xx errors.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool fetches from an RSS feed, returns specific fields, and provides recommended actions based on state. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with bullet points and front-loads the purpose. It is slightly verbose but still clear and effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters and no annotations, the description thoroughly explains the output, including detailed recommended_action logic. It is complete for a diagnostic tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters (0 params), so the baseline is 4. The description does not need to add parameter information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it fetches cloud maintenance announcements from an RSS feed and specifies the output fields, including recommended actions. It is distinct from sibling tools that focus on camera-specific operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use this tool when users ask why cameras are unavailable or when the cloud returns 5xx errors.' This provides clear context, though no explicit alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_mjpeg_snapshotA
Direct LAN MJPEG snapshot via RTSP inst=3 (Gen2 only). Faster than snap.jpg, no cloud roundtrip.
Uses ffmpeg to pull a single frame from the camera's RTSPS stream (inst=3 = sub-stream, lower resolution but faster). Saves JPEG to ~/.cache/bosch-camera-mcp/snapshots/. Requires ffmpeg installed and MCP host on same LAN as camera. Gen2 only (HOME_Eyes_Outdoor / HOME_Eyes_Indoor).
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden. It discloses using ffmpeg, pulling a single frame from RTSPS stream (inst=3 sub-stream), saving to a specific cache directory, and noting lower resolution but faster speed. It does not cover error handling or missing dependencies, but provides substantial behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a one-sentence summary, followed by technical details and prerequisites. It is not overly verbose, though the phrase 'Direct LAN MJPEG snapshot via RTSP inst=3 (Gen2 only)' could be slightly condensed. Still efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (local ffmpeg command, prerequisites) and presence of an output schema, the description covers behavior and constraints adequately. However, the missing parameter semantics and lack of guidance on how to specify the camera leave a gap. It is complete enough for agents with domain knowledge but incomplete for naive agents.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter 'camera' with type string, and schema description coverage is 0%. The description does not explain what value the 'camera' parameter expects (e.g., ID, name, IP). This is a gap, especially since the tool likely requires a specific camera identifier.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it performs a 'Direct LAN MJPEG snapshot' via RTSP, specifies it's for Gen2 only, and contrasts with 'snap.jpg' to distinguish from sibling tools like bosch_camera_snapshot. The verb 'snapshot' and resource 'camera MJPEG stream' are precise.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description tells when to use (for a faster local snapshot vs cloud) and prerequisites: ffmpeg installed, MCP host on same LAN, and Gen2 camera only. It implies when not to use (if these conditions aren't met) but doesn't explicitly mention alternatives beyond snap.jpg.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_motion_getA
Get motion detection settings for one camera.
Returns {enabled, sensitivity} where sensitivity is one of:
OFF | LOW | MEDIUM_LOW | MEDIUM_HIGH | HIGH | SUPER_HIGH.
API: GET /v11/video_inputs/{id}/motion.
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| enabled | Yes | Whether motion detection is enabled |
| sensitivity | No | Motion alarm sensitivity: OFF | LOW | MEDIUM_LOW | MEDIUM_HIGH | HIGH | SUPER_HIGH. Stored in 'motionAlarmConfiguration' field in the API. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes return value format (enabled, sensitivity) with enumerated values, and provides API endpoint. No annotations, so description carries burden well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences with no redundant text. First sentence states purpose, subsequent ones add useful detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given output schema exists and single parameter, description adequately covers return value and API. Could mention read-only nature but not required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only parameter 'camera' is mentioned in description as 'for one camera', but not explicitly described. Schema coverage is 0%, so description partially compensates but could be clearer.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'Get' and resource 'motion detection settings', clearly distinguishing from sibling 'bosch_camera_motion_set'. Scope 'for one camera' is explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance. Usage is implied by name and description, but no enrichment over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_motion_setA
Set motion detection enabled state and/or sensitivity for one camera.
At least one of enabled or sensitivity must be provided.
sensitivity: OFF | LOW | MEDIUM_LOW | MEDIUM_HIGH | HIGH | SUPER_HIGH.
Note: providing only sensitivity also implicitly enables motion detection
(mirrors the CLI behavior — setting sensitivity implies you want it active).
API: PUT /v11/video_inputs/{id}/motion.
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes | ||
| enabled | No | ||
| sensitivity | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| enabled | Yes | Whether motion detection is enabled |
| sensitivity | No | Motion alarm sensitivity: OFF | LOW | MEDIUM_LOW | MEDIUM_HIGH | HIGH | SUPER_HIGH. Stored in 'motionAlarmConfiguration' field in the API. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description compensates by disclosing the implicit enable when only sensitivity is set, and mentions the API endpoint. However, it lacks details on permissions, reversibility, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured with a bullet for sensitivity values. The API line is somewhat extra but not harmful. Could be slightly tighter without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main parameter interactions and implicit behavior. However, it lacks prerequisites (e.g., camera must exist, permissions needed) and does not reference the get counterpart or explain the output schema. Given moderate complexity and existing output schema, it is minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description explains the required combination of parameters, enumerates sensitivity values, and explains the implicit behavior. It does not describe the 'camera' parameter beyond its name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the function: 'Set motion detection enabled state and/or sensitivity for one camera.' The verb 'set' and resource 'motion detection' are specific. It distinguishes from sibling tools like bosch_camera_motion_get (which gets) and other set tools for different features.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies constraints: 'At least one of enabled or sensitivity must be provided' and explains the sensitivity values and implicit enabling behavior. However, it does not explicitly compare with sibling tools or provide when-not use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_motion_zones_clearB
Remove all motion-detection zones for one camera. Returns the (empty) list.
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that the tool removes all zones (destructive hint implied) and returns an empty list. However, with no annotations, the description is the sole source; it lacks details like irreversibility or state requirements. Acceptable but minimal for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise (one sentence), but sacrifices necessary details. Under-specification reduces effectiveness; conciseness alone does not suffice.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (clear action, one parameter, output schema exists), the description is mostly adequate but lacks parameter clarification and usage context, leaving room for misinterpretation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The sole parameter 'camera' is a string with no description in the schema. The description does not clarify what the camera parameter refers to (e.g., ID, name, or IP). With 0% schema coverage, the description fails to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Remove all motion-detection zones'), the resource ('for one camera'), and the return value ('Returns the (empty) list'). This distinguishes it from sibling tools like motion_zones_get and motion_zones_set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., removing zones individually via motion_zones_set). No prerequisites or context for appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_motion_zones_getA
List the motion-detection zone rectangles configured for one camera.
Coordinates are normalized 0.0-1.0 (x/y = top-left corner, w/h = size).
Returns an empty list if no zones are configured. Raises privacy_blocked
if the camera is currently in privacy mode (Bosch returns HTTP 443 for
this endpoint while privacy is on).
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description adequately covers behavior: coordinates are normalized 0.0-1.0, returns empty list if no zones, and raises privacy_blocked error when camera is in privacy mode. It also implies read-only nature. Could add details about response structure, but given the existence of an output schema, the description remains transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences: first states purpose, second explains coordinate normalization, third covers boundary cases (no zones, privacy mode). No redundant information, front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, list output), the description covers essential behavioral aspects. It mentions coordinates, empty list, and error handling. With an output schema in place, the description is sufficiently complete for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'camera' is self-explanatory by name and tool context, but the description does not elaborate on its format, allowed values, or how to obtain a camera identifier. Since schema coverage is 0%, the description could add more value but the parameter is simple enough.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List the motion-detection zone rectangles configured for one camera,' specifying the action (list), resource (motion-detection zone rectangles), and scope (one camera). This effectively distinguishes it from sibling tools like bosch_camera_motion_zones_set and bosch_camera_motion_zones_clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for retrieving zones of a single camera, but does not explicitly state when to use or when not to use compared to alternatives. However, the purpose is straightforward, and the mention of the privacy_blocked error condition gives guidance on a specific scenario to watch for.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_motion_zones_setA
Replace ALL motion-detection zones for one camera with the given list.
This is a full replace, not a merge — pass every zone you want to keep.
Each zone is {"x": ..., "y": ..., "w": ..., "h": ...}, normalized
0.0-1.0. Pass an empty list to clear all zones (equivalent to calling
bosch_camera_motion_zones_clear).
| Name | Required | Description | Default |
|---|---|---|---|
| zones | Yes | ||
| camera | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that the operation is a destructive full replace, that empty list clears zones, and specifies the zone format with normalized coordinates. This goes beyond the input schema by explaining behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long and front-loaded with the main action. Every sentence provides necessary information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 2 parameters, an output schema exists, and no nested objects, the description covers purpose, usage, parameter format, and behavioral notes. No critical information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description compensates by explaining the 'zones' parameter: each zone is an object with x, y, w, h normalized 0.0-1.0. It also clarifies that the 'camera' parameter identifies one camera. This adds meaning beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool replaces ALL motion-detection zones for one camera with a given list. It uses a specific verb ('Replace') and resource ('motion-detection zones'), and distinguishes from sibling tools like bosch_camera_motion_zones_clear and bosch_camera_motion_zones_get by clarifying it's a full replace.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states 'This is a full replace, not a merge — pass every zone you want to keep.' It also explains that passing an empty list is equivalent to clearing all zones, referencing the sibling tool bosch_camera_motion_zones_clear. This provides clear guidance on when to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_notifications_setC
Toggle push notifications for one camera.
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes | ||
| enabled | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| status | Yes | |
| light_on | No | |
| privacy_mode | Yes | |
| last_event_at | No | ISO 8601 timestamp of the latest motion event |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries full burden. It states the action (toggle) but discloses no side effects, permission requirements, rate limits, or behaviors like whether the change persists or requires camera connectivity. For a mutation tool, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, which is efficient but at the cost of omitting critical context. It is front-loaded but insufficiently informative, making it mediocre in structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool changes state (notifications toggle) and has an output schema (not shown) but the description does not cover prerequisites, expected outcomes, or error conditions. For a simple mutation tool, it lacks completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, and the description adds no clarification. The 'camera' parameter is not explained (e.g., type of identifier expected) and 'enabled' is described only as a boolean toggle, which is already clear from the schema. The description fails to add value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Toggle' and identifies the resource 'push notifications for one camera', making the purpose clear and distinct from sibling tools like audio or motion settings. However, it lacks specificity about what kind of notifications (e.g., motion alerts, all events) and could be more precise.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like bosch_camera_audio_detection_set or bosch_camera_motion_set. The description does not mention prerequisites, configuration state, or typical scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_onvif_scopesA
Read ONVIF device scopes from camera via LAN RCP command 0x0a98 (Gen2 only).
Returns parsed scope fields: name, hardware model, ONVIF profiles, and the raw scope string. Requires local_ip + local credentials in bosch_config.json. Gen2 only (HOME_Eyes_Outdoor / HOME_Eyes_Indoor).
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description carries full burden. It reveals the RCP command, that it's read-only, and the return structure. Lacks info on rate limits or latency, but acceptable for a simple read tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, no waste, directly states purpose, constraints, and output. Front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with output schema, description is complete: covers what it does, prerequisites, constraints, and what is returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 0% description coverage. Description does not explain the 'camera' parameter beyond the schema, but adds context about required configuration and Gen2 restriction. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states it reads ONVIF device scopes via LAN RCP command, lists returned fields, and distinguishes from sibling tools by specifying Gen2-only and the specific command code.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly states prerequisite (local credentials in bosch_config.json) and constraint (Gen2 only). Does not explicitly mention alternatives, but context is clear enough for an agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_panA
Pan the 360° indoor camera (Gen1 CAMERA_360 only, panLimit > 0).
Named presets (preferred, via preset parameter):
home → 0° (center)
left → -60°
right → +60°
back-left → -120° (full left limit)
back-right → +120° (full right limit)
direction accepts the same preset names, legacy aliases (center), or
an integer string in the range -panLimit to +panLimit.
When preset is set it takes priority over direction.
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes | ||
| preset | No | ||
| direction | No | home |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| status | Yes | |
| light_on | No | |
| privacy_mode | Yes | |
| last_event_at | No | ISO 8601 timestamp of the latest motion event |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses pan limits, preset angle mappings, and parameter prioritization. No annotations provided, so description carries burden. Lacks details on failure modes or rate limits but adequate for a panning action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with bullet points and clear sections. Information is dense but could be slightly more concise by reducing redundancy between preset and direction explanations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers constraints (camera model, panLimit), parameter usage, and priority rules. Output schema exists so return values not needed. Minor gap: doesn't specify behavior when panLimit is 0 or camera incompatible.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but description thoroughly explains all three parameters: camera (implied), preset (names and angles), direction (names, aliases, integer range). Adds significant meaning beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it pans a specific camera model (Gen1 CAMERA_360 only) and distinguishes from sibling camera tools. Provides specific verb 'Pan' and resource '360° indoor camera'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly notes the tool is only for Gen1 CAMERA_360 with panLimit > 0, and explains preset priority over direction. No explicit alternatives or when-not-to-use, but context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_privacy_masks_clearA
Remove all privacy-mask zones for one camera. Returns the (empty) list.
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that the tool removes zones and returns an empty list, but does not mention irreversibility, required permissions, or side effects. Basic disclosure but missing depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and front-loaded, with no unnecessary words. Every part earns its place, though it could include slightly more detail without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema shown, and a mutation operation, the description is somewhat thin. It covers the basic action and return, but lacks details on reversibility, prerequisites, or error conditions. Adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%. The description only says 'for one camera' but does not explain what the 'camera' parameter expects (e.g., ID, name). Minimal additional meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Remove all privacy-mask zones'), the specific resource ('for one camera'), and the output ('Returns the (empty) list'). This distinguishes it from siblings like get (returns current list) and set (sets specific zones).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: use when you want to clear all privacy masks. The context of sibling tools (get, set) makes the alternative clear, but no explicit 'when-not-to-use' or prerequisites are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_privacy_masks_getA
List the privacy-mask zone rectangles configured for one camera.
Coordinates are normalized 0.0-1.0 (x/y = top-left corner, w/h = size). Masked areas are permanently blacked out in both live view and recordings.
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full transparency burden. It adds valuable context: coordinates are normalized 0.0-1.0 and masked areas are permanently blacked out in live view and recordings. This helps the agent understand the return format and the persistent effect of masks. However, it does not mention what happens for invalid cameras or empty mask lists, which might be covered by the output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, each earning its place. The first states the purpose, the second adds crucial behavioral detail. No unnecessary words. Front-loaded with the primary action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no enums, output schema exists), the description covers the core functionality and output semantics. It does not address error scenarios or prerequisites, but for a read operation with a straightforward schema, this is reasonable. The presence of an output schema reduces the need to explain return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%: the description adds no information about the 'camera' parameter beyond its name. The schema already specifies it as a required string, so the description does not compensate by explaining the format (e.g., camera ID, IP, or URL) or any constraints. With only one parameter, even minimal elaboration would help.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists privacy-mask zone rectangles for a single camera. The verb 'List' and resource 'privacy-mask zone rectangles' are specific. The tool name itself distinguishes from siblings like bosch_camera_privacy_masks_set and bosch_camera_privacy_masks_clear, and no other sibling lists similar data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it (to retrieve existing masks), but does not provide explicit guidance on when not to use it, prerequisites (e.g., camera must exist), or alternatives. The purpose is clear, but no usage boundaries are set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_privacy_masks_setA
Replace ALL privacy-mask zones for one camera with the given list.
Full replace, not a merge. Each mask is {"x": ..., "y": ..., "w": ..., "h": ...}, normalized 0.0-1.0. Pass an empty list to clear all masks.
| Name | Required | Description | Default |
|---|---|---|---|
| masks | Yes | ||
| camera | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses that operation is a full replacement (not merge) and that empty list clears all masks. Does not mention side effects like reversibility or permissions, but for a set tool this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences, no extraneous words. Front-loaded with the core action. Earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 2 parameters and no annotations, the description covers the main behavioral aspects and mask format. Output schema exists but is not shown, so return value details are not needed. Missing camera format information is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but description explains the 'masks' parameter in detail: each mask has x, y, w, h normalized 0.0-1.0, and empty list clears. The 'camera' parameter is not explained but is straightforward.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb 'Replace' and resource 'privacy-mask zones for one camera'. Explicitly states 'Full replace, not a merge', distinguishing it from any merge-like sibling. Format of masks is specified.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implies usage: use when you want to replace all masks with a new list. Does not explicitly mention when not to use or compare to siblings like 'privacy_masks_clear', but the specificity of 'replace all' provides adequate guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_privacy_setA
Turn privacy mode on or off. enabled=True hides the camera.
When prefer_local=True, attempt the RCP-LAN write path FIRST (skipping
the Bosch cloud entirely). Useful when the agent already knows the cloud is
down but the camera is LAN-reachable (confirmed via bosch_camera_lan_ping).
Falls back to the cloud API automatically if the LAN write fails or if no
local_ip is configured.
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes | ||
| enabled | Yes | ||
| prefer_local | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| status | Yes | |
| light_on | No | |
| privacy_mode | Yes | |
| last_event_at | No | ISO 8601 timestamp of the latest motion event |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses the dual-path behavior (LAN vs cloud) and fallback mechanism. Does not mention rate limits or authentication, but the core behavioral trait of toggling privacy is well explained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: two sentences for core purpose and a short paragraph for optional behavior. No filler, front-loaded with key action, every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (context: 'Has output schema: true'), the description need not detail return values. It covers the action and conditional behavior well, though it omits mention of success/failure indications. Still sufficiently complete for a set tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so description must explain parameters. It explains 'enabled' (hides camera) and 'prefer_local' (LAN-first path). The 'camera' parameter is not explained but is a standard identifier. Two out of three params are clarified, adding value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Turn privacy mode on or off' and explains the effect of 'enabled=True' (hides the camera). The verb 'Turn' and resource 'privacy mode' are specific, and the tool is distinct from siblings like privacy_sound_get/set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on when to use the 'prefer_local=True' option: when the cloud is down but the camera is LAN-reachable, confirmed via sibling tool 'bosch_camera_lan_ping'. Mentions automatic fallback, giving clear context for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_privacy_sound_getA
Get the privacy-sound indicator setting for one camera.
When enabled, the camera plays an audible indicator when privacy mode changes.
Returns {enabled}.
API: GET /v11/video_inputs/{id}/privacy_sound_override.
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| enabled | Yes | Whether the camera plays an audible indicator when privacy mode changes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that this is a GET operation, specifies the API endpoint, and indicates the return format ({enabled}). However, it omits details like required authentication or potential errors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, with the main action front-loaded. Every sentence adds value: the verb-resource pair, behavioral context, return format, and API endpoint. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 parameter, read-only with output schema), the description adequately covers the purpose, usage, and return. The presence of an output schema reduces the need to explain return values further.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not elaborate on the 'camera' parameter (e.g., its format or expected values). The schema lists it as a string, but the description adds no additional meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and the resource ('privacy-sound indicator setting for one camera'). It distinguishes from sibling tools like bosch_camera_privacy_sound_set, which sets the same setting.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context about when the setting is used (plays audible indicator when privacy mode changes) but does not explicitly state when to use this getter vs. alternatives like the setter or other get tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_privacy_sound_setA
Enable or disable the audible indicator that plays when privacy mode changes.
enabled=True → camera beeps/chimes when privacy is toggled.
enabled=False → silent privacy mode switching.
API: PUT /v11/video_inputs/{id}/privacy_sound_override Body: {"result": bool}.
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes | ||
| enabled | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| enabled | Yes | Whether the camera plays an audible indicator when privacy mode changes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It explains the core behavior (enabling/disabling sound) and includes the API call format. However, it does not disclose requirements (e.g., camera permissions), side effects, or persistence. This is adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise with three clear sections: a sentence describing purpose, example usage with Python-like syntax, and the API endpoint. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, so return values do not need description. The description covers the main functionality and parameter usage. It lacks context on prerequisites (e.g., camera must already exist) but is otherwise sufficient for a simple setter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains the `enabled` parameter well with examples (`True`/`False`). However, the `camera` parameter lacks any explanation of its format or how to obtain it. Thus, adds partial value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool enables or disables the audible indicator for privacy mode changes. It uses specific verbs ('Enable or disable') and identifies the resource ('audible indicator'). The sibling `bosch_camera_privacy_sound_get` exists, so the description effectively distinguishes this as the setter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use the tool: to change the audible indicator behavior. It implies usage for toggling sound on/off. While no explicit alternatives are named, the sibling `bosch_camera_privacy_sound_get` is the complementary read tool, making the distinction clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_rcp_versionA
Read RCP firmware version from camera via LAN (opcodes 0xff00 + 0xff04).
Returns primary and secondary RCP library versions in dotted decimal and raw hex. Useful for diagnosing protocol compatibility. Requires local_ip + local credentials.
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description fully carries the burden. It correctly describes a read-only operation, explains the opcodes used, and states what is returned (primary and secondary versions in dotted decimal and raw hex). It could be more explicit about being non-destructive, but the intent is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with key information front-loaded: the main action in the first sentence, followed by return details and use case. It is structured logically without unnecessary words. A minor improvement would be clarifying the camera parameter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, returns version info), the description covers the purpose, return format, and use case. It assumes knowledge of the camera parameter, which is a gap, but overall it provides sufficient context. The existence of an output schema helps, though the description also explains the return format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has only one parameter 'camera' with no description (0% schema coverage). The description does not explain what this parameter represents or its expected format. It mentions requirements for local_ip and credentials, which are not part of the schema, leaving ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads the RCP firmware version, specifies the operation (via LAN with opcodes), and indicates the return format. It distinguishes itself from siblings which handle different camera functions (e.g., audio, motion).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions the tool is useful for diagnosing protocol compatibility and requires local IP and credentials, providing context for when to use it. However, it does not explicitly state when not to use it or list alternatives, but given the uniqueness of the function among siblings, this is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_recording_getB
Get cloud recording options for one camera.
Returns {sound_on} — whether audio is recorded in cloud clips.
API: GET /v11/video_inputs/{id}/recording_options.
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| sound_on | Yes | Whether audio is included in cloud recordings |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden. It describes a read operation returning a boolean, and mentions the API endpoint. However, it does not explicitly state that the tool is read-only, nor does it disclose any error conditions or auth requirements. The return type is mentioned, which is good.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and to the point, with two sentences and an API line. It is front-loaded with the purpose. The API endpoint adds useful context, though it could be omitted if not needed. No redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get tool with one parameter and an output schema (mentioned in context), the description is adequate. It explains the return value and the single capability. However, it could mention that it only gets audio recording options (since that's the only field returned), but the description already implies that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one required parameter 'camera' with no description (0% schema coverage). The description says 'for one camera' but does not clarify what format or identifier is expected (e.g., camera ID, name). This leaves ambiguity for the agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets cloud recording options for one camera and specifies the return value (sound_on). The verb 'get' and the resource 'cloud recording options' are specific. It distinguishes from sibling tools like recording_set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention any prerequisites, limitations, or when to avoid using it. Sibling tools exist (e.g., recording_set) but no comparison is made.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_recording_setB
Enable or disable audio in cloud recordings for one camera.
sound_on=True → record audio in cloud clips.
sound_on=False → no audio in cloud clips.
API: PUT /v11/video_inputs/{id}/recording_options Body: {"recordSound": bool}.
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes | ||
| sound_on | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| sound_on | Yes | Whether audio is included in cloud recordings |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must fully disclose behavior. It states the effect (enable/disable audio) and the API endpoint, but omits details on permission requirements, error handling, idempotency, or consequences of setting audio when not supported by the camera.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is very concise: one sentence, a code block with parameter clarifications, and the API call. Every element adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 2 required parameters and an output schema, so description need not cover returns. However, it lacks context on prerequisites (e.g., camera status, permissions) and fails to mention error cases or idempotency, which are important for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must add meaning. It explains the 'sound_on' parameter with examples and the API body format, but does not describe the 'camera' parameter beyond its name, leaving ambiguity about identifier format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Enable or disable audio in cloud recordings for one camera', specifying verb and resource. It distinguishes from siblings by focusing on recording audio settings, but does not explicitly contrast with other audio-related tools like bosch_camera_audio_set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implies usage by showing boolean parameter examples (sound_on=True/False). It does not provide when-not-to-use guidance or mention alternatives such as bosch_camera_audio_set for non-recording audio.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_renameA
Rename a camera via the Bosch cloud API. The new name appears in the Bosch app.
API: PUT /v11/video_inputs Body: {"videoInputId", "title", "timeZone"}.
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes | ||
| new_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description provides useful behavioral context: it exposes the underlying API method (PUT), the endpoint, the request body fields, and the observable consequence. With no annotations available, it could have covered more (authentication, failure cases, whether the operation is reversible), but the mutation behavior itself is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact: a one-line purpose statement, a short user-visible effect, and the exact API contract. Every sentence contributes information and the most important detail (rename) is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter rename operation, the description gives the API endpoint and visible outcome, and an output schema exists to describe results. However, because there are no annotations and no parameter descriptions, details like the expected format of `camera` or the source/handling of `timeZone` remain ambiguous.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the entire parameter burden. It adds the underlying API field names `videoInputId`, `title`, and `timeZone`, which hints at how `camera` and `new_name` map to the API, but the mapping is not explicit and `timeZone` is unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the operation: rename a camera through the Bosch cloud API, with an observable outcome (the name changes in the Bosch app). This is specific enough to distinguish it from the many sibling camera tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Rename is self-descriptive and the description implies the use case, but there is no explicit when-to-use vs alternatives guidance, no mention of prerequisites like having selected a camera, and no exclusions. The usage intent is clear but still left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_rules_addA
Create a new automation rule for one camera.
start/end are HH:MM 24h time. days are 0=Monday..6=Sunday.
The new rule is created active. Returns the created rule (with its id).
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | ||
| days | Yes | ||
| name | Yes | ||
| start | Yes | ||
| camera | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Rule id (Bosch API field 'id') |
| end | Yes | End time HH:MM:SS (Bosch API field 'endTime') |
| days | Yes | Active weekdays, 0=Monday .. 6=Sunday |
| name | Yes | Rule display name |
| start | Yes | Start time HH:MM:SS (Bosch API field 'startTime') |
| active | Yes | Whether the rule is currently active |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that the rule is created active and returns the created rule with an ID. This provides useful behavioral context, though side effects or prerequisites are not mentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two short paragraphs. The purpose is front-loaded, and every sentence adds value without repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 5 required parameters and an output schema, the description is moderately complete. It covers the time-related params and return value, but lacks explanations for camera and name parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description compensates partially. It explains start/end time format and days indexing (0=Monday), adding meaning for 3 of 5 parameters. However, camera and name are left unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a new automation rule for one camera.' This specifies a unique verb-resource combination, distinguishing it from sibling tools like edit, delete, and list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives (e.g., edit or delete). It only describes the tool's function without contextual usage advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_rules_deleteA
Delete an automation rule from one camera. Returns {deleted, rule_id}.
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes | ||
| rule_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden. It states the destructive nature (delete) and return format, but does not mention error handling, idempotency, or side effects beyond the deletion.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one sentence with the action and one with the return format. No redundant words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lacks context for a two-parameter tool with no annotations. It does not explain source for camera or rule_id, nor error scenarios. The return format is noted, but likely already in output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%; the description adds no meaning to parameters 'camera' and 'rule_id'. It does not clarify what these identifiers refer to (e.g., camera ID, rule ID) or how to obtain them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Delete), the resource (automation rule), and scope (from one camera). It is distinct from sibling tools like bosch_camera_rules_add, bosch_camera_rules_edit, and bosch_camera_rules_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use or alternatives. The description implies deletion when a rule is no longer needed, but lacks context like prerequisites or conditions for safe use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_rules_editB
Update an existing automation rule for one camera. Only provided fields change.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ||
| days | No | ||
| name | No | ||
| start | No | ||
| active | No | ||
| camera | Yes | ||
| rule_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Rule id (Bosch API field 'id') |
| end | Yes | End time HH:MM:SS (Bosch API field 'endTime') |
| days | Yes | Active weekdays, 0=Monday .. 6=Sunday |
| name | Yes | Rule display name |
| start | Yes | Start time HH:MM:SS (Bosch API field 'startTime') |
| active | Yes | Whether the rule is currently active |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description must disclose behavior. It mentions 'Only provided fields change', indicating partial update, but omits error conditions, idempotency, permissions, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (one sentence) and front-loaded, but could be slightly more structured. It earns its place with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description does not clarify the return value or provide enough context for correct usage. It is too sparse for a tool with 7 parameters and partial update semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description does not explain any parameter meanings, formats, or relationships. With 7 parameters, this is a significant gap that the description fails to address.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Update an existing automation rule for one camera' with a specific verb and resource, and distinguishes from sibling tools like add, delete, and list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when updating a rule but provides no explicit guidance on when not to use or alternatives. It lacks context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_rules_listB
List the automation (time-schedule) rules configured for one camera.
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must carry the burden. It implies a read-only operation ('list') but does not reveal any side effects, authentication needs, error handling, or performance characteristics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one concise sentence, front-loaded with the key action, and contains no extraneous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description adequately defines the tool's purpose for a simple list operation, but it fails to mention that an output schema exists (which could document return structure). It provides minimal context for an AI to understand the scope of results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description adds context by linking the 'camera' parameter to the act of listing rules. However, it does not explain the required format or any constraints beyond the parameter name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the verb 'List' and the resource 'automation rules configured for one camera', distinguishing it from sibling tools like add/delete/edit. It is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not specify when to list rules versus other list operations, nor does it mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_siren_duration_setA
Set the siren alarm duration for one camera (Gen2 Indoor II only).
Read-modify-write on GET/PUT /v11/video_inputs/{id}/alarm_settings
(field alarmDelayInSeconds) — existing fields in that config are
preserved. Does not trigger the siren itself; call
bosch_camera_siren_trigger afterwards to fire it with the new duration.
Raises hardware_unsupported for non-Gen2-Indoor-II cameras (matches
bosch_camera_siren_trigger's own gating). Raises invalid_argument
if seconds is outside 10-300. Raises privacy_blocked when the
camera is in privacy mode.
Args: camera: Camera name (case-insensitive). seconds: New siren duration, 10-300 seconds inclusive.
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes | ||
| seconds | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| alarm_delay_seconds | Yes | Configured siren duration in seconds (Bosch API field 'alarmDelayInSeconds') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes read-modify-write behavior, preservation of existing fields, no trigger side effect, and detailed error cases. No annotations provided, so description carries full burden, and it does so thoroughly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise yet comprehensive: front-loaded purpose, technical details, errors, and parameter list in a clear structure with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all essential aspects: purpose, usage, parameters, side effects, error handling, and compatibility. Output schema exists, so return values are not needed. Complete for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but description adds full semantics: camera (case-insensitive name), seconds (range 10-300), and context for each parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool sets siren alarm duration for Gen2 Indoor II cameras only, specifies verb 'Set' and resource, and distinguishes from sibling bosch_camera_siren_trigger by stating it does not trigger the siren.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells when to use (before triggering), directs to call bosch_camera_siren_trigger afterwards, and lists error conditions that guide when not to use (e.g., unsupported hardware).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_siren_triggerA
Trigger (or stop) the indoor siren on a camera.
Endpoint depends on the camera model:
Gen1 360° indoor (
model == "INDOOR") →PUT /v11/video_inputs/{id}/acoustic_alarmBody:{"enabled": <bool>}. Outdoor cameras return HTTP 442 (not supported).Gen2 Indoor II (
model == "HOME_Eyes_Indoor") →PUT /v11/video_inputs/{id}/panic_alarmBody:{"status": "ON"|"OFF"}. 75 dB integrated siren.
The siren plays for the camera-side configured duration (typically 30–60 s
on Gen2). To change the duration, use bosch_camera_siren_duration_set
(range 10–300 s) before triggering.
Raises hardware_unsupported for outdoor cameras and Gen1 outdoor models.
Raises privacy_blocked when the camera is in privacy mode (Gen2 panic
alarm is gated by privacyMode at the Bosch cloud level).
Args: camera: Camera name (case-insensitive). stop: If True, send the stop variant ({"enabled": False} or {"status": "OFF"}). Useful for cancelling an active Gen2 panic alarm before its duration expires.
| Name | Required | Description | Default |
|---|---|---|---|
| stop | No | ||
| camera | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| status | Yes | |
| light_on | No | |
| privacy_mode | Yes | |
| last_event_at | No | ISO 8601 timestamp of the latest motion event |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses endpoint variations, body syntax, error types, and the fact that Gen2 siren is 75 dB and plays for a configured duration. It lacks details on idempotency or whether multiple triggers stack, but overall provides good behavioral context for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with bullet points and parameter args. It is front-loaded with the essential purpose. While every sentence adds value, it is longer than necessary; a slight trim could improve conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (multiple camera models, error conditions, duration sibling), the description is thorough. It covers behavior, error cases, and parameter details. Since an output schema exists, the description does not need to explain return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description fully compensates by explaining each parameter beyond type and title: camera is case-insensitive, stop sends the stop variant with specific body examples and use case for cancelling Gen2 panic alarms.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first line clearly states the tool triggers or stops the indoor siren on a camera. It distinguishes from siblings like bosch_camera_siren_duration_set by mentioning that tool for duration changes, and it specifies it is for indoor models only, differentiating from outdoor-related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when/when-not guidance: it lists endpoints for different camera models, notes that outdoor cameras return HTTP 442, raises hardware_unsupported for outdoor, and mentions privacy_blocked for privacy mode. It also directs to use bosch_camera_siren_duration_set for duration changes, and explains the stop parameter's use for cancelling active alarms.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_snapshotB
Capture a fresh snapshot via LAN only (HTTP Digest to camera IP). No Bosch cloud roundtrip.
Requires the MCP host to be on the same network as the camera. Saves to ~/.cache/bosch-camera-mcp/snapshots//.jpg.
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| path | Yes | Filesystem path to the saved JPEG |
| method | Yes | Source: local_lan (LAN-only; cloud fallback removed in v1.1.0) |
| timestamp | Yes | ISO 8601 capture time |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses the fresh snapshot behavior, LAN-only constraint, and the file save location (~/.cache/...). However, with no annotations, it lacks explicit statements about destructiveness (presumably none) or rate limits, and does not detail the authentication mechanism beyond mentioning HTTP Digest.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences plus a requirement line. Every sentence adds value with no redundancy, front-loading the core action and key constraint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple parameter set (only one) and the presence of an output schema (which handles return value details), the description covers purpose, network constraint, and local file output. It is nearly complete, though could optionally mention whether the call is synchronous or blocking.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description should compensate. It mentions 'camera IP' in context but does not clearly define the 'camera' parameter (e.g., whether it expects a name, ID, or IP address). This lack of explicit mapping reduces its helpfulness for an AI agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool captures a fresh snapshot via LAN only, using HTTP Digest. The verb 'Capture' and resource 'snapshot' are specific. While it doesn't explicitly distinguish from sibling tools like bosch_camera_mjpeg_snapshot, the emphasis on LAN-only and no cloud roundtrip provides implicit differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a clear prerequisite: the MCP host must be on the same network as the camera. However, it does not offer when-not-to-use guidance or suggest alternative tools for cloud-based snapshots, leaving some ambiguity for the AI agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_soft_resetA
Reboot one camera (soft reset). The camera briefly drops offline.
API: PUT /v11/video_inputs/{id}/soft_reset (empty body).
NOTE: on real hardware this has been observed to return HTTP 404
sh:entity.notfound even when the request matches the official Bosch
app byte-for-byte (same finding that made HA disable its equivalent
button by default) — a 404 here likely means "not supported for this
camera/account", not a client bug.
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does well: it discloses that the camera briefly drops offline and—critically—warns that a 404 may really mean 'not supported for this camera/account' rather than a client error. It does not mention permissions or response behavior, but for a simple reset operation this is strong transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is frontloaded with the action and its main effect, then gives the API specifics, then the exception caveat. The 404 note is detailed but earns its place by preventing the agent from misdiagnosing a valid failure mode. No repeating or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter action with no annotations and an output schema present, the description includes enough: the HTTP method, path, empty body, side effect, and an operational ambiguity in the failure response. The main gap is that the 'camera' parameter itself is not described, so an agent may still need to infer that it is the camera ID used in previous Bosch tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only declares a required 'camera' string with zero description. The API path '/v11/video_inputs/{id}/soft_reset' hints that the camera parameter is the Bosch video input ID, but the description never explicitly maps the parameter to that ID. This partially compensates for the missing schema documentation but does not fully clarify format or where the value comes from.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Reboot one camera (soft reset).' It also distinguishes itself from the sibling bosch_camera_hard_reset by making the soft reset nature explicit. The API path and the behavior 'camera briefly drops offline' leave no doubt about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The use case is implied: rebooting a single camera via soft reset. However, there is no explicit guidance about when to choose this over alternatives such as hard reset, and no exclusions or conditions are given. The offline-warning is useful, but not a selection guide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_statusB
Get the current status of one camera by name (case-insensitive).
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| status | Yes | |
| light_on | No | |
| privacy_mode | Yes | |
| last_event_at | No | ISO 8601 timestamp of the latest motion event |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description only indicates it's a read operation ('get'), but lacks details on safety, idempotency, authentication requirements, or what happens if the camera name is invalid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with key information, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Sufficient for a simple get-status tool with an output schema (so return values are covered). However, without annotations, more context about error states or typical usage would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage with 1 required parameter 'camera' of type string. Description adds one useful detail: case-insensitivity, but does not explain what constitutes a valid camera name or how to obtain it, which is insufficient given low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states verb 'Get', resource 'current status', and scope 'one camera by name (case-insensitive)'. Distinguishes from sibling tools like 'bosch_camera_list' which lists all cameras.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage for retrieving status of a specific camera, but provides no guidance on when to use this versus alternatives like 'bosch_camera_health_check_all' for detailed health or 'bosch_camera_list' for listing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_status_led_getA
Get the camera's status LED on/off state. Gen2 cameras only.
API: GET /v11/video_inputs/{id}/ledlights.
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| enabled | Yes | Whether the camera's status LED is lit |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses that this is a read-only GET operation and adds the Gen2-only caveat, but it does not address authentication, errors for unsupported cameras, or how the LED state is presented beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a short, front-loaded statement: what the tool does plus the API path. There is no padding; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a simple single-parameter GETter and an output schema exists, so return value documentation is unnecessary. However, the description leaves the key parameter semantics underdetermined and doesn't state how unsupported cameras behave, so the context is only moderate-complete for correctly invoking it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage and only the required property 'camera'. The description's endpoint includes a URL parameter id, but it never connects this to the camera argument or explains whether an id, device name, device identifier is expected. The description does not compensate for the single wild card.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: getting the camera's status LED on/off state. It also narrows the domain to Gen2 cameras, so the agent can distinguish this from status LED setter and other camera state tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a clear compatibility constraint ('Gen2 cameras only') and the HTTP verb for retrieval. It implies when to use is (when finding current LED state), though it doesn't explicitly name a sibling alternative for setting it. The constraint is still useful for preconditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_status_led_setA
Turn the camera's status LED on or off. Gen2 cameras only.
API: PUT /v11/video_inputs/{id}/ledlights Body: {"state": "ON"/"OFF"}.
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes | ||
| enabled | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| enabled | Yes | Whether the camera's status LED is lit |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full behavioral burden. It compensates well by specifying a mutating HTTP method (PUT), the exact endpoint, the payload format, and the intended on/off effect. It could add details about permissions or persistence, but for a simple LED state toggle this is reasonably transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: purpose first, compatibility second, and API details last. Every sentence adds relevant information with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter setter with an output schema and no annotations, the description is largely complete: it gives purpose, compatibility, and the exact API contract. The only real gap is the absence of explicit parameter-to-field mapping, but the operation and endpoint are clear enough for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only partially compensates. The endpoint path and the body state 'ON'/'OFF' imply that `camera` maps to the path id and `enabled` maps to the state field, but the description never explicitly states this mapping. The `enabled` boolean to 'ON'/'OFF' relationship is inferred rather than documented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Turn the camera's status LED on or off.' It clearly identifies the operation, the target resource, and adds a compatibility constraint ('Gen2 cameras only'), making it easy to distinguish from sibling tools like status_led_get, light_set, or led_brightness_set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear scope condition: 'Gen2 cameras only.' However, it does not explicitly state when to prefer this tool over alternatives such as bosch_camera_status_led_get for reading the LED state or bosch_camera_led_brightness_set for brightness control. Usage guidance is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_stream_urlA
Get the LAN RTSPS stream URL for one camera. No Bosch cloud relay.
The returned URL is consumable by ffmpeg/VLC/go2rtc. Requires that the MCP host runs on the same network as the camera and has local credentials configured for the camera (bosch_config.json → cameras[name].local_*).
With the local data interface active and a local_data_password set, the URL is
rtsps://localuser:***@<ip>:9554/rtsp_tunnel?line=1&inst=<1|2>&enableaudio=<0|1>
(password masked). quality: "high" (inst=1) or "low" (inst=2);
audio: include AAC audio (16 kHz mono).
| Name | Required | Description | Default |
|---|---|---|---|
| audio | No | ||
| camera | Yes | ||
| quality | No | high |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| camera | Yes | Canonical camera name from config |
| source | No | 'local_data_interface' when the URL uses the camera's local data interface |
| rtsps_url | Yes | LAN RTSPS URL via TLS proxy (rtsps://<user>:<pass>@<ip>:443/...) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the load and does so well: it discloses the LAN-only constraint, the credential/config prerequisites, the consumability by ffmpeg/VLC/go2rtc, and the exact URL shape. It omits failure/error behavior when prerequisites are unmet, hence not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core purpose, then prerequisites, then the URL template and per-parameter meanings. Every part earns its place, though the inline URL template is dense and slightly heavy for the average invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return-value exposition is not required, and the description still explains the returned URL's usability. Combined with the explicit prerequisites and parameter meanings, it is nearly complete; only error/edge-case behavior is unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does for 2 of 3 params: quality maps to inst=1/inst=2 ('high'/'low') and audio is defined as AAC 16 kHz mono. The 'camera' param is left implicit but is self-evident from the name, so this is strong rather than perfect.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get the LAN RTSPS stream URL for one camera') and immediately scopes the source ('No Bosch cloud relay'). This is unambiguous and distinguishable from the many sibling status/snapshot/config tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete preconditions for use: the MCP host must be on the same LAN as the camera with local credentials in bosch_config.json, and the local data interface plus local_data_password must be active. It does not explicitly name alternative tools (e.g. snapshot vs. stream) but the context is clear enough to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_timestamp_overlay_getA
Get whether a date/time overlay is burned into the video for one camera.
API: GET /v11/video_inputs/{id}/timestamp.
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| enabled | Yes | Whether a date/time overlay is burned into the video |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It communicates that this is a read-only operation via 'GET' and 'Get whether', but it does not disclose error behavior, authentication requirements, or response semantics. It's minimally transparent but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded: the purpose appears in the first line, and the API endpoint provides concrete routing information. No redundant words or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter read tool with an output schema present, the description provides enough context to identify the intent and endpoint. It lacks explicit parameter guidance and sibling differentiation, but the complexity is low enough that these are not critical gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single 'camera' parameter has no schema description, and the description only loosely says 'for one camera'. The API path includes {id}, which helps imply the camera parameter represents an ID, but the description does not explicitly clarify the parameter format or meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Get whether...'), a specific resource ('date/time overlay... for one camera'), and the endpoint. It distinguishes itself from timestamp_overlay_set by indicating this is a read/state-check operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The tool's intended usage is implied by the verb 'Get' and HTTP GET method, but the description does not explicitly state when to use it instead of the paired timestamp_overlay_set sibling. It provides no explicit when/when-not guidance or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_timestamp_overlay_setA
Turn the date/time video overlay on or off for one camera.
API: PUT /v11/video_inputs/{id}/timestamp Body: {"result": bool}.
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes | ||
| enabled | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| enabled | Yes | Whether a date/time overlay is burned into the video |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits itself. It does state the outcome explicitly (turn overlay on/off) and includes the precise API call and body. However, it gives no information about whether the operation requires special permissions, whether it is idempotent, whether it takes effect immediately, or what errors may occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately short and front-loaded: the first sentence states the core purpose with no wasted words, and the second sentence supplies the actionable API contract. Every sentence provides distinct value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter setter, the description is largely complete. It names the target resource, the on/off behavior, the API endpoint, and the request body shape. There is an output schema available, so return-value documentation is not required. The main missing context is explicit guidance around alternatives and side effects, but for this low-complexity tool the level of detail is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the burden. It does clarify that the boolean parameter controls the date/time overlay, and the included API body shows a boolean value is sent. Yet it does not explain exactly how the 'camera' string is used, and the API body's 'result' field is not explicitly mapped to the 'enabled' parameter, so some ambiguity remains.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Turn the date/time video overlay on or off for one camera.' This clearly distinguishes the set operation from the sibling getter tool and leaves no doubt about the tool's function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives, and no mention of related tools such as bosch_camera_timestamp_overlay_get or other configuration setters. The API path is provided, but the tool does not state prerequisites, preconditions, or situations where a different tool should be used instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_token_statusA
Return the current bearer token validity, expiry, and account email.
Parses the JWT exp and email/preferred_username claims from the
stored bearer token without making a network call.
Returns {valid, expires_in_min, email}.
valid=False when the token is expired or missing.
expires_in_min is negative when already expired.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| No | Email/preferred_username from JWT claims | |
| valid | Yes | True if the token is not expired |
| expires_in_min | No | Minutes until expiry (negative = already expired); None if undecodable |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description fully discloses behavior: it parses JWT claims without network, returns fields valid, expires_in_min, email, and explains condition for expired/missing token. With no annotations, this provides high transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four concise sentences, front-loaded with the main purpose, no unnecessary words. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately describes the return structure. It covers edge cases (expired/missing token) but does not mention malformed tokens. Still, for a simple status tool, it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so description does not need to add param info. Baseline 4 for zero parameters applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns bearer token validity, expiry, and email. It specifies it parses the JWT locally without network call, distinguishing it from other camera tools that interact with camera hardware or settings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or alternatives are provided. The description implies it is a lightweight check (no network call) but does not guide the agent on when to use this over other tools, such as checking token before performing authenticated operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_unread_getA
Get the unread event count for one camera.
Reads numberOfUnreadEvents from the /v11/video_inputs listing
(the /unread_events_count endpoint returns HTTP 404 — verified in testing).
Returns {camera, count}.
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | Number of unread events (from video_inputs listing) |
| camera | Yes | Camera name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full burden. It transparently discloses the reading from the /v11/video_inputs listing, the failure of the direct endpoint, and the return structure. It does not mention permissions or side effects, but for a read-only operation, this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short (3 sentences) and front-loads the purpose. It includes a parenthetical about testing, which is helpful but slightly informal. No waste, but could be more structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (1 parameter, simple return), the description covers the essential behavior and return format. It lacks error handling details but is complete enough for a straightforward tool, especially with an output schema presumably available.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage for the 'camera' parameter, and the description adds no additional meaning beyond the parameter name. It does not specify the format (e.g., ID, name) or any constraints, leaving the parameter unclear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'unread event count for one camera'. It distinguishes itself by specifying the exact data source and noting a workaround for a failed endpoint, making the purpose specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for retrieving unread event counts but does not explicitly state when to use it over alternatives. No exclusions or when-not-to guidance is provided, leaving some ambiguity for the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_white_balance_getB
Get the front light's white balance (-1.0 cool .. 1.0 warm). Gen2 cameras only.
API: GET /v11/video_inputs/{id}/lighting/switch.
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| value | Yes | -1.0 (cool/blue) .. 1.0 (warm/orange), 0.0 = neutral |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry more weight. It discloses the returned polar range and the Gen2-only restriction, and the GET endpoint implies read-only access. However, it does not cover error cases, auth requirements, behavior on unsupported cameras, or whether any side effects exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded, with the Gen2 limitation placed clearly in its own sentence. The additional API path line is not essential but does not make the definition verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter getter with an output schema, the definition is mostly sufficient. It lacks explicit guidance on how to select this tool among the white-balance-related siblings and what the 'camera' parameter should contain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema's only param 'camera' has no description (0% schema coverage), and the tool description does not explain its meaning or expected values. The API endpoint's /{id} segment is the only indirect clue that the param is a camera identifier.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a clear resource ('front light's white balance') and action ('Get'), and adds the value range from -1.0 to 1.0. It is easily distinguishable from white_balance_set by verb, though it does not explicitly reference that sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description only says 'Gen2 cameras only,' which provides a compatibility restriction but not explicit guidance on when to prefer this over the set variant or how to handle non-Gen2 cameras. Usage niche is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_white_balance_setA
Set the front light's white balance (-1.0 cool/blue .. 1.0 warm/orange). Gen2 cameras only.
API: PUT /v11/video_inputs/{id}/lighting/switch (full-body write, GET-merged).
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| camera | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| value | Yes | -1.0 (cool/blue) .. 1.0 (warm/orange), 0.0 = neutral |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the valid input range, generation compatibility, the exact API endpoint, and that it is a full-body write with GET-merged semantics. This gives meaningful behavioral insight beyond the tool name, though it stops short of explaining side effects or permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loaded with the intended action, and every sentence contributes. The first sentence establishes the purpose and constraints; the second provides useful API-level detail without padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a two-parameter mutation tool with no annotations, the description covers the range and API but leaves the 'camera' parameter unexplained and omits clear guidance on permissions or failure conditions. The output schema exists, so return value documentation is less critical, but the missing camera semantics and preconditions make it only moderately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides no parameter descriptions, so the description must compensate. It fully explains the 'value' parameter via the white balance range (-1.0..1.0), but it does not explain the 'camera' parameter or its expected format beyond the schema's basic string type. Thus coverage is partial but helpful.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: 'Set the front light's white balance' with a specified numeric range and a Gen2-only compatibility constraint. It is a specific verb + resource that distinguishes it from siblings like bosch_camera_white_balance_get and bosch_camera_light_set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states a key usage constraint ('Gen2 cameras only') and clarifies the operation is a write/update to lighting settings. It does not explicitly name alternative tools to use instead, but the scope is sufficiently clear to infer when this tool applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bosch_camera_wifiA
Get the WiFi signal quality for one camera.
Queries GET /v11/video_inputs/{id}/wifiinfo and returns
{rssi, ssid, signal_strength}.
rssi: raw RSSI in dBm (negative integer, e.g. -67).
ssid: the connected WiFi network name.
signal_strength: 0-100 % quality derived from RSSI
(-50 dBm = 100 %, -100 dBm = 0 %).
Useful for diagnosing intermittent connectivity, stream drops, or deciding
whether to force prefer_local=True on privacy/light writes.
| Name | Required | Description | Default |
|---|---|---|---|
| camera | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| rssi | No | Raw RSSI in dBm (negative; e.g. -67) |
| ssid | No | Connected WiFi SSID |
| signal_strength | No | Signal quality 0-100 % derived from RSSI (-50 dBm = 100 %, -100 dBm = 0 %) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It explains the API call is a GET request, details the returned fields with units and examples, and implies read-only behavior. Does not cover error handling or rate limits, but is otherwise transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise, well-structured with a code block for API path and returned fields. Every sentence adds value, no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple nature (one parameter, read-only, output schema present), the description covers the output format and usage context completely. No gaps for an agent to misinterpret.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so description must compensate. It mentions 'for one camera' but does not elaborate on how to specify the camera (e.g., ID, name, or format). Minimal guidance beyond purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets WiFi signal quality for one camera, specifying the API endpoint and exact data returned (RSSI, SSID, signal_strength). It is distinct from sibling tools which cover other camera operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit use cases: diagnosing connectivity issues, stream drops, and deciding on prefer_local=True. Does not explicitly mention when not to use or alternatives, but context is clear and sufficient for a read-only diagnostic tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
v1.8.1- Added
bosch_camera_local_data_status - Changed
bosch_camera_stream_url3 fields changed- added
Input schema / properties / audioAdded value: +{ + "default": true, + "title": "Audio", + "type": "boolean" +} - added
Input schema / properties / qualityAdded value: +{ + "default": "high", + "title": "Quality", + "type": "string" +} - added
Output schema / properties / sourceAdded value: +{ + "default": "temporary_credentials", + "description": "'local_data_interface' when the URL uses the camera's local data interface", + "title": "Source", + "type": "string" +}
15 tool updates
v1.7.3- Added
bosch_camera_darkness_threshold_get - Added
bosch_camera_darkness_threshold_set - Added
bosch_camera_hard_reset - Added
bosch_camera_led_brightness_get - Added
bosch_camera_led_brightness_set - Added
bosch_camera_lens_elevation_get - Added
bosch_camera_lens_elevation_set - Added
bosch_camera_rename - Added
bosch_camera_soft_reset - Added
bosch_camera_status_led_get - Added
bosch_camera_status_led_set - Added
bosch_camera_timestamp_overlay_get - Added
bosch_camera_timestamp_overlay_set - Added
bosch_camera_white_balance_get - Added
bosch_camera_white_balance_set
21 tool updates
v1.7.0- Added
bosch_camera_firmware_install - Added
bosch_camera_firmware_status - Added
bosch_camera_friends_invite - Added
bosch_camera_friends_list - Added
bosch_camera_friends_remove - Added
bosch_camera_friends_share - Added
bosch_camera_friends_unshare - Added
bosch_camera_intercom_open - Added
bosch_camera_lighting_schedule_get - Added
bosch_camera_lighting_schedule_set - Added
bosch_camera_motion_zones_clear - Added
bosch_camera_motion_zones_get - Added
bosch_camera_motion_zones_set - Added
bosch_camera_privacy_masks_clear - Added
bosch_camera_privacy_masks_get - Added
bosch_camera_privacy_masks_set - Added
bosch_camera_rules_add - Added
bosch_camera_rules_delete - Added
bosch_camera_rules_edit - Added
bosch_camera_rules_list - Added
bosch_camera_siren_duration_set
34 tool updates
v1.6.0- First observed
bosch_camera_audio_detection_get - First observed
bosch_camera_audio_detection_set - First observed
bosch_camera_audio_get - First observed
bosch_camera_audio_set - First observed
bosch_camera_autofollow_get - First observed
bosch_camera_autofollow_set - First observed
bosch_camera_events - First observed
bosch_camera_feature_flags - First observed
bosch_camera_health_check_all - First observed
bosch_camera_intrusion_get - First observed
bosch_camera_intrusion_set - First observed
bosch_camera_lan_ping - First observed
bosch_camera_light_set - First observed
bosch_camera_list - First observed
bosch_camera_maintenance_status - First observed
bosch_camera_mjpeg_snapshot - First observed
bosch_camera_motion_get - First observed
bosch_camera_motion_set - First observed
bosch_camera_notifications_set - First observed
bosch_camera_onvif_scopes - First observed
bosch_camera_pan - First observed
bosch_camera_privacy_set - First observed
bosch_camera_privacy_sound_get - First observed
bosch_camera_privacy_sound_set - First observed
bosch_camera_rcp_version - First observed
bosch_camera_recording_get - First observed
bosch_camera_recording_set - First observed
bosch_camera_siren_trigger - First observed
bosch_camera_snapshot - First observed
bosch_camera_status - First observed
bosch_camera_stream_url - First observed
bosch_camera_token_status - First observed
bosch_camera_unread_get - First observed
bosch_camera_wifi
TDQS
Scored across 71 tools
Most tools have clearly distinct purposes, especially the many get/set pairs for separate features (motion, audio, intrusion, privacy masks, lighting, etc.). Slight overlap exists between bosch_camera_snapshot and bosch_camera_mjpeg_snapshot, and the family of light/LED/brightness tools could momentarily confuse, but descriptions clarify the differences.
All tools use a consistent bosch_camera_ snake_case prefix and mostly follow an action suffix pattern like _get/_set, _list/_add/_edit/_delete, _clear, _trigger. The main deviation is that several getters omit _get (e.g., bosch_camera_status, bosch_camera_events, bosch_camera_wifi), but the set remains highly predictable.
With 71 tools, the server is extremely over-scoped for practical agent use and falls into the rubric's 50+ extreme mismatch category. While each tool corresponds to a specific camera feature, the sheer volume makes tool selection and management impractical.
The surface covers nearly every camera management aspect—configuration get/set pairs, rules CRUD, friends sharing, firmware, resets, snapshots, streaming, and diagnostics. Minor gaps exist, such as no dedicated getter for notifications or siren duration, but agents can usually infer or work around these.
Maintenance
Related MCP Connectors
- mytesla.ioOAuthio.mytesla
Control your Tesla from your AI assistant - climate, charging, access, and security.
Chat with your Zihin.ai agents, list them and load platform skills from any MCP client.
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables natural language control of Xiaomi smart home devices through MCP, focusing on homes, rooms, device names, and scenes without requiring protocol details.71MIT
- AlicenseNot gradedqualityDmaintenanceEnables natural language control of Loxone smart home systems, including lighting, audio, climate, and environmental monitoring, through MCP-compatible clients.16 npm2AGPL 3.0
- AlicenseAqualityCmaintenanceMCP server for controlling USB-connected DSLR cameras (e.g., Canon EOS 6D) via natural language, with features like capture, exposure settings, and autonomous timelapse with feedback-based auto exposure.9MIT
- AlicenseNot gradedqualityDmaintenanceEnables control of OBSBOT Tiny-series cameras (gimbal, zoom, focus, AI tracking, snapshots) through MCP tools.MIT