Skip to main content
Glama
mosandlt

Bosch Smart Home Camera MCP Server

by mosandlt

Bosch Smart Home Camera — MCP Server

Model Context Protocol (MCP) 서버 — Bosch Smart Home Camera 클라우드 API를 MCP 도구로 노출합니다. Claude Code, Claude Desktop 및 모든 MCP 호환 클라이언트에서 바로 사용할 수 있습니다. 검증된 역공학 API 클라이언트를 자매 프로젝트인 Python CLI tool에서 재사용합니다.

상태: v1.7.2 — 제품군 동일 기능 마무리(v1.7.0): 모션 영역, 프라이버시 마스크, 자동화 규칙, 카메라 공유/친구, 펌웨어 설치, 사이렌 지속 시간, 조명 일정, 오디오 인터콤 듣기. 그리고 2026-08-19 이미지/비디오 튜닝 + 카메라 수명주기 라운드: 타임스탬프 오버레이, 상태 LED, 렌즈 상하 각도, 어둠 임계값, 화이트 밸런스, 상단/하단 LED 밝기, 소프트/하드 리셋, 이름 변경. 도구 70개 + 리소스 3개 + 프롬프트 2개, stdio/SSE/streamable-HTTP, pipx/uvx 설치 가능

License Project Maintenance


목차


Related MCP server: Loxone MCP Server

면책 조항

이 프로젝트는 독립적이고 커뮤니티에서 개발한 도구입니다. Robert Bosch GmbH, Bosch Smart Home GmbH 또는 그 자회사나 계열사와 제휴, 보증, 후원 또는 어떠한 공식적 연관 관계도 없습니다. "Bosch", "Bosch Smart Home" 및 관련 이름과 로고는 Robert Bosch GmbH의 등록 상표입니다.

이 도구는 역공학된, 문서화되지 않은 비공식 API와 통신합니다. 어떠한 종류의 보증도 없이 "있는 그대로" 제공됩니다. 전적으로 사용자 본인의 책임 하에 사용하세요.

왜 별도의 MCP 서버인가?

자매 프로젝트들은 서로 다른 런타임을 대상으로 합니다:

프로젝트

버전

런타임

사용자 인터페이스

HA Integration

v16.0.1

Home Assistant

UI 엔티티, Lovelace 카드, 자동화

Python CLI

v10.12.3

터미널

bosch_camera ... 명령어

ioBroker Adapter

v1.8.3

ioBroker

데이터포인트, VIS-2 위젯(BoschCamera + BoschOverview), JSON 구성 관리 UI

Node-RED nodes

v0.4.2-alpha

Node-RED

자동화 파이프라인용 플로우 노드

Frontend (NiceGUI)

v0.4.2-alpha

독립형 웹 앱

대시보드 + 카메라 상세 + 설정 UI

MCP Server (this repo)

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를 다시 구현하지 않고 이를 import해서 사용합니다.

이는 단순한 문서 참조가 아니라 실제 런타임 의존성입니다. 서버는 일반적인 pip install 의존성 방식 대신, 프로세스 시작 시 sys.path 주입(adapters/cli_bridge.py)을 통해 bosch_camera.py의 위치를 찾습니다. 즉, 자매 프로젝트인 Python CLI tool 저장소가 디스크에 체크아웃되어 있어야 하며, MCP 서버는 그 위치를 알아야 합니다. 해석 순서는 다음과 같습니다. BOSCH_CAMERA_CLI_PATH 환경 변수가 설정되어 있으면 그것을 사용하고, 그렇지 않으면 유지보수자의 자체 설정에 사용되는 고정 기본 경로를 사용합니다(이식 불가 — 재정의하세요). 거의 모든 도구 호출은 호출 시점에 ensure_cli_importable()을 통해 해당 경로에서 bosch_camera를 import하므로, 경로가 없거나 잘못되면 서버 시작 시가 아니라 첫 번째 도구 호출에서 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:#000

bosch_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)

도구

설명

반환값

bosch_camera_list

구성된 모든 카메라 목록

{id, name, model, hw_version, status} 배열

bosch_camera_status

카메라 하나의 온라인/오프라인 + 프라이버시 상태 가져오기

{name, status, privacy_mode, light_on, last_event_at}

bosch_camera_snapshot

LAN 전용 JPEG 캡처(클라우드 없음) — 카메라 IP로 HTTP Digest

{path, method, timestamp}

bosch_camera_stream_url

LAN 전용 RTSPS 스트림 URL(클라우드 릴레이 없음) — ffmpeg/VLC/go2rtc에서 사용 가능

{camera, rtsps_url, note}

bosch_camera_events

최근 모션/사람/오디오 이벤트 목록

{event_id, type, tags, timestamp_iso, has_clip, clip_status} 배열

bosch_camera_privacy_set

프라이버시 모드 켜기/끄기; prefer_local=True는 먼저 LAN RCP로 라우팅

{name, status, privacy_mode, ...}

bosch_camera_light_set

스포트라이트 켜기/끄기; prefer_local=True는 먼저 LAN RCP로 라우팅

{name, status, light_on, ...}

bosch_camera_pan

360° 카메라 패닝(Gen1 CAMERA_360만); preset: home (0°) / left (-60°) / right (+60°) / back-left (-120°) / back-right (+120°)

{name, status, privacy_mode, light_on, last_event_at}

bosch_camera_notifications_set

푸시 알림 전환

{name, status, privacy_mode, light_on, last_event_at}

bosch_camera_lan_ping

LAN 포트 443에서 카메라 TCP 프로브(1.5초 타임아웃)

{reachable, ip, latency_ms}

bosch_camera_maintenance_status

커뮤니티 RSS 피드에서 현재 클라우드 유지보수 공지 가져오기

{state, title, link, pub_date, summary, …, recommended_action}

bosch_camera_audio_get

마이크 레벨, 스피커 레벨, 인터컴 플래그 가져오기(Gen2만)

{microphone_level, speaker_level, intercom_enabled}

bosch_camera_audio_set

마이크 레벨 및/또는 스피커 레벨 0-100 설정(Gen2만)

{microphone_level, speaker_level, intercom_enabled}

bosch_camera_intrusion_get

침입 감지 구성 가져오기: mode, sensitivity 0-7, distance 1-8m(Gen2만)

{mode, sensitivity, distance}

bosch_camera_intrusion_set

침입 감지 mode/sensitivity/distance 업데이트(Gen2만)

{mode, sensitivity, distance}

bosch_camera_audio_detection_get

유리 파손 + 연기/화재 경보 음향 감지 구성 가져오기(Gen2 Audio-Plus만)

{glass_break, fire_alarm}

bosch_camera_audio_detection_set

유리 파손 및/또는 화재 경보 음향 감지 업데이트(Gen2 Audio-Plus만)

{glass_break, fire_alarm}

bosch_camera_wifi

WiFi RSSI, SSID 및 파생 신호 품질 0-100% 가져오기

{rssi, ssid, signal_strength}

bosch_camera_mjpeg_snapshot

RTSP inst=3을 통한 직접 LAN MJPEG 스냅샷(Gen2만, ffmpeg, 클라우드 왕복 없음)

{path, method, timestamp, camera}

bosch_camera_onvif_scopes

카메라 LAN RCP 0x0a98에서 ONVIF 디바이스 스코프 읽기(Gen2만)

{name, hardware, profiles, raw_scopes}

bosch_camera_rcp_version

카메라 LAN opcode 0xff00 + 0xff04에서 RCP 라이브러리 버전 읽기

{primary, secondary, raw_primary_hex, raw_secondary_hex}

bosch_camera_feature_flags

계정 수준 Bosch 클라우드 기능 플래그 가져오기(카메라 매개변수 없음)

{FLAG_NAME: bool, ...}

bosch_camera_siren_trigger

실내 사이렌 트리거(Gen2 Indoor II만); 취소하려면 stop=True

{name, status, privacy_mode, light_on, last_event_at}

bosch_camera_motion_get

모션 감지 활성화 상태 + 민감도 가져오기

{enabled, sensitivity}

bosch_camera_motion_set

모션 감지 활성화 및/또는 민감도 설정

{enabled, sensitivity}

bosch_camera_recording_get

클라우드 녹화 사운드 설정 가져오기

{sound_on}

bosch_camera_recording_set

클라우드 녹화 사운드 설정

{sound_on}

bosch_camera_autofollow_get

360° 자동 추적 상태 가져오기(Gen1 Indoor만)

{enabled}

bosch_camera_autofollow_set

360° 자동 추적 설정(Gen1 Indoor만)

{enabled}

bosch_camera_privacy_sound_get

가청 프라이버시 차임 상태 가져오기

{enabled}

bosch_camera_privacy_sound_set

가청 프라이버시 차임 상태 설정

{enabled}

bosch_camera_unread_get

카메라의 읽지 않은 이벤트 수 가져오기

{count}

bosch_camera_health_check_all

모든 카메라 일괄 상태 요약(status + WiFi + privacy + last-event + unread)

카메라별 상태 딕셔너리 배열

bosch_camera_token_status

로컬 JWT 파싱 — 유효성, 만료, email 반환(네트워크 호출 없음)

{valid, expires_in_min, email}

bosch_camera_motion_zones_get

모션 감지 영역 사각형 목록(0.0-1.0으로 정규화)

{x, y, w, h} 배열

bosch_camera_motion_zones_set

모든 모션 영역 교체(전체 교체, 병합 아님)

{x, y, w, h} 배열

bosch_camera_motion_zones_clear

모든 모션 영역 제거

[]

bosch_camera_privacy_masks_get

프라이버시 마스크 영역 사각형 목록(0.0-1.0으로 정규화)

{x, y, w, h} 배열

bosch_camera_privacy_masks_set

모든 프라이버시 마스크 교체(전체 교체, 병합 아님)

{x, y, w, h} 배열

bosch_camera_privacy_masks_clear

모든 프라이버시 마스크 제거

[]

bosch_camera_rules_list

카메라 하나의 자동화(시간 일정) 규칙 목록

{id, name, active, start, end, days} 배열

bosch_camera_rules_add

새 일정 규칙 생성

{id, name, active, start, end, days}

bosch_camera_rules_edit

기존 규칙 업데이트(부분 업데이트)

{id, name, active, start, end, days}

bosch_camera_rules_delete

규칙 삭제

{deleted, rule_id}

bosch_camera_friends_list

카메라 공유 친구/초대 목록(계정 수준)

{id, email, nickname, status, shared_cameras} 배열

bosch_camera_friends_invite

이메일로 친구 초대(계정 수준)

{id, email, nickname, status, shared_cameras}

bosch_camera_friends_share

기존 친구와 카메라 하나 공유(기존 공유와 병합)

{shared, friend_id, camera}

bosch_camera_friends_unshare

친구에게 부여된 모든 카메라 공유 취소

{unshared, friend_id}

bosch_camera_friends_remove

친구 완전히 제거

{removed, friend_id}

bosch_camera_firmware_status

현재/최신 펌웨어 버전 + 업데이트 가능 여부 가져오기

{camera, current, up_to_date, update_available, installing}

bosch_camera_firmware_install

보류 중인 펌웨어 업데이트 설치(카메라 3-7분 재부팅)

{camera, current, up_to_date, update_available, installing}

bosch_camera_siren_duration_set

사이렌 경보 지속 시간 10-300초 설정(Gen2 Indoor II만)

{alarm_delay_seconds}

bosch_camera_lighting_schedule_get

LED 조명 일정 가져오기(실외 Eyes 카메라)

{on_time, off_time, light_on_motion, darkness_threshold, schedule_status}

bosch_camera_lighting_schedule_set

LED 조명 일정 업데이트(실외 Eyes 카메라)

{on_time, off_time, light_on_motion, darkness_threshold, schedule_status}

bosch_camera_intercom_open

듣기 오디오 세션 열기(카메라 마이크 → 호출자); RTSPS URL 반환, 듣기 전용

{camera, rtsps_url, duration, speaker_level_set}

bosch_camera_timestamp_overlay_get

비디오에 날짜/시간 오버레이 포함 여부 가져오기

{enabled}

bosch_camera_timestamp_overlay_set

날짜/시간 비디오 오버레이 켜기/끄기

{enabled}

bosch_camera_status_led_get

카메라 상태 LED 켜짐/꺼짐 상태 가져오기(Gen2만)

{enabled}

bosch_camera_status_led_set

카메라 상태 LED 켜기/끄기(Gen2만)

{enabled}

bosch_camera_lens_elevation_get

렌즈 장착 높이(미터) 가져오기(Gen2만)

{meters}

bosch_camera_lens_elevation_set

렌즈 장착 높이 0.5-5.0m 설정(Gen2만)

{meters}

bosch_camera_darkness_threshold_get

주간/야간 조명 임계값 + 페이딩 모드 가져오기(Gen2만)

{threshold_percent, soft_light_fading}

bosch_camera_darkness_threshold_set

주간/야간 조명 임계값 및/또는 페이딩 모드 설정(Gen2만)

{threshold_percent, soft_light_fading}

bosch_camera_white_balance_get

전면등 화이트 밸런스 가져오기, -1.0 차가움 .. 1.0 따뜻함(Gen2만)

{value}

bosch_camera_white_balance_set

전면등 화이트 밸런스 설정(Gen2만)

{value}

bosch_camera_led_brightness_get

상단 또는 하단 LED 밝기 0-100% 가져오기(Gen2만)

{position, brightness_percent}

bosch_camera_led_brightness_set

상단 또는 하단 LED 밝기 0-100% 설정(Gen2만)

{position, brightness_percent}

bosch_camera_soft_reset

카메라 하나 재부팅(소프트 리셋)

{camera, rebooting}

bosch_camera_hard_reset

카메라 하나 공장 초기화 — 파괴적, 카메라 페어링 해제; confirm=True 필요

{camera, factory_reset}

bosch_camera_rename

클라우드 API를 통해 카메라 이름 변경

{camera, new_name}

Tools intentionally NOT exposed to LLMs (write-risky / time-consuming):

  • 토큰 갱신(기본 클라이언트가 자동으로 처리)

  • 클라우드 클립 다운로드(대용량 페이로드)

  • 양방향 통화(발신자 마이크 → 카메라 스피커): 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 호출이 전혀 없음: quality는 RTSPS inst= 매개변수를 선택하고, stream_mode는 LOCAL과 REMOTE를 선택하며, rotation은 표시 전용 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

bosch://cameras

모든 카메라의 JSON 목록(id, name, model, status, firmware, mac, description)

bosch://cameras/{name}/snapshot.jpg

최신 캐시된 JPEG, 캐시가 비어 있으면 새로 캡처

bosch://cameras/{name}/events

최근 50개 이벤트(motion, person, audio)의 JSON 목록

bosch://cameras는 정적 리소스입니다. {name} 변형은 리소스 템플릿입니다.

MCP 프롬프트

Prompt

Arguments

Description

daily-camera-summary

hours: int = 24

다단계 보고서: 카메라별 이벤트, 유형별 분류, 시간 분포, 이상 징후 하이라이트

pre-leave-check

(없음)

모든 카메라 스냅샷 촬영, 장면 설명, 이상 징후 표시, 실내 프라이버시 모드 권장

프라이버시 입장 — 미디어 작업은 LAN 전용

스냅샷과 스트림 URL은 MCP 호스트에서 LAN을 통해 카메라로 직접 전송되며 Bosch 클라우드 릴레이를 거치지 않습니다. 나머지 도구(status, events, privacy/light/pan/notifications)는 해당 엔드포인트에 대해 현재 로컬 API가 노출되지 않으므로 여전히 클라우드를 사용합니다.

Tool

Path

bosch_camera_snapshot

LAN 전용 — 카메라 IP에 HTTP Digest

bosch_camera_stream_url

LAN 전용 — 로컬 Bosch TLS 프록시를 통한 RTSPS

bosch_camera_lan_ping

LAN 전용 — 카메라 포트 443에 TCP 연결

bosch_camera_list / status / events

Bosch 클라우드(아직 로컬 API 없음)

bosch_camera_privacy_set / light_set (기본값)

Bosch 클라우드

bosch_camera_privacy_set / light_set (prefer_local=True)

LAN-RCP 우선, 클라우드 폴백 — Gen2 전용

bosch_camera_pan / notifications_set

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

stdio

--transport stdio (기본값)

Claude Code / Claude Desktop — 로컬 하위 프로세스

streamable-http

--transport http

HTTP를 통한 원격 / 다중 클라이언트 배포

sse

--transport sse

레거시 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 SDK

  • 도구 스키마용 pydantic(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*.*.* 태그를 푸시하면 publish-pypi 워크플로가 OIDC 신뢰 게시자를 통해 트리거됩니다. 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개 도구 모두 연결: 읽기 도구(list, status, events, snapshot) + 쓰기 도구(privacy, light, pan, notifications)를 sys.path 주입(옵션 C)으로 연결 ✅

  • v0.4.0 — 리소스(bosch://cameras, bosch://cameras/{name}/snapshot.jpg, bosch://cameras/{name}/events) + 프롬프트(daily-camera-summary, pre-leave-check) ✅

  • v0.5.0 — 스트리밍 가능한 HTTP 전송(--transport http|sse|stdio), pipx/uvx용 패키징, 신규 테스트 24개 ✅

  • v1.0.0 — 첫 안정 릴리스: 테스트 106개, GitHub Releases에 wheel + sdist 게시, PyPI 게시 대기 중 ✅

  • v1.1.0 — LAN 전용 미디어 경로(프라이버시 강화): bosch_camera_snapshot 및 신규 bosch_camera_stream_url이 LAN을 통해 카메라로 직접 접근하며, 미디어에 Bosch 클라우드 중계를 사용하지 않음. 테스트 113개. ✅

  • v1.2.0 — bosch_camera_maintenance_status 도구: 커뮤니티 RSS 피드에서 클라우드 유지보수 공지를 가져옴. 상태(active/scheduled/past/recent/unknown/idle), 제목, 시간 범위, 링크를 반환. ✅

  • v1.3.0 — LAN 폴백 기능 세트(HA 통합 v12.4.10/v12.4.11에서 이식): bosch_camera_lan_ping 도구(LAN의 모든 카메라에 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 — 오디오 get/set, 침입 감지 get/set, 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건(카메라 목록은 항상 클라우드에서 실시간 조회, Gen1/Gen2 hw_version, UUID 해석, events 필드 매핑, audio camelCase, intrusion Gen2 게이트, 오류 코드, 스냅샷 타임스탬프, 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건(하드웨어 4대, 4개 세대 모두): 사이렌 트리거, 모션 get/set, 녹화 get/set, 자동 추적 get/set, 프라이버시 사운드 get/set, unread-count, health-check-all, token-status. ✅

  • v1.5.1 — _fetch_rcp_lan 수정(존재하지 않는 aiohttp.DigestAuth를 사용해 onvif_scopes / rcp_version이 LAN에서 항상 실패했음. 이제 httpx.DigestAuth 사용). 테스트 커버리지 83→98%, 픽스처 정리, CI를 Node-24 네이티브 액션 메이저 버전으로 업그레이드. ✅

  • v1.5.2 — 의존성 정리: 사용하지 않는 aiohttp 런타임 의존성 제거(이제 테스트 전용), pyjwt>=2.13.0 / starlette>=1.0.1 보안 하한선 추가(pip-audit 클린), 잘못된 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]). 서버는 이제 19자로 잘라내는 대신 끝의 [zone] 접미사만 제거하여 명시적 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): MCP-vs-HA/CLI 기능 격차를 해소하는 신규 도구 21개 — 모션 영역 get/set/clear, 프라이버시 마스크 get/set/clear, 자동화 규칙 list/add/edit/delete, 카메라 공유/친구 목록/invite/share/unshare/remove, 펌웨어 상태/설치(HA의 async_install_firmware 가드를 미러링), 사이렌 지속 시간, LED 조명 일정 get/set, 그리고 듣기 전용 오디오 인터콤 도구(카메라 마이크 → 발신자, RTSPS URL. 양방향 통화는 Bosch 클라우드 API에서 전혀 제공되지 않으며, 자매 CLI와 동일한 제약). CI 강화: 커버리지 게이트(--cov-fail-under=96), pip-audit(런타임 의존성만), pylint, codespell, CodeQL, gitleaks 시크릿 스캔, 의존성 검토 워크플로우 — HA 통합의 품질 게이트와 Gold 등급 동등성. 총 도구 55개. ✅

  • v1.7.2 — 문서 전용: 이 저장소의 통합 비교 표에 있는 Login 행 수정, 기능 변경 없음. ✅

릴리스

최신: v1.7.2 — 전체 노트는 GitHub 릴리스 페이지를 참조하세요: v1.7.2 릴리스 노트 →

전체 릴리스

GitHub Releases 페이지 — 노트 + 다운로드 가능한 자산이 포함된 모든 태그 버전

전체 기록

CHANGELOG.md — 동일한 노트, 저장소 내에서 열람 가능

통합 비교

Bosch Smart Home Camera 리버스 엔지니어링 API는 다섯 개의 자매 프로젝트를 통해 제공됩니다. 사용자 플랫폼에 맞는 것을 선택하세요.

기능

Home Assistant Integration

Python CLI Tool

ioBroker Adapter

MCP Server

Frontend (NiceGUI)

Node-RED

성숙도

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 웹 앱 · Python 3.10+

Node-RED 팔레트 · npm

로그인

OAuth2 PKCE (브라우저)

OAuth2 PKCE (브라우저)

OAuth2 PKCE (브라우저)

◑ CLI bosch_config.json 공유

◑ CLI bosch_config.json 공유

◑ CLI에서 리프레시 토큰

스냅샷

✅ 네이티브 Camera.image

✅ snapshot 명령

✅ 파일 저장소 + base64 DP

✅ bosch_camera_snapshot (LAN 전용)

✅ 라이브 + 이벤트 폴백

✅ snapshot 노드

라이브 RTSP 스트림 (LAN)

✅ HA Stream 컴포넌트 통해

✅ ffmpeg/RTSPS 출력

✅ TLS 프록시 → 로컬 RTSP

✅ bosch_camera_stream_url (LAN 전용, 클라우드 릴레이 없음)

◑ 내부 (go2rtc)

◑ stream-url 노드 (URL만)

WebRTC (1초 미만 지연)

✅ 통합 go2rtc 통해

✅ (v10.6.0) live --webrtc

❌

❌

✅ go2rtc 통해 (그 외 스냅샷)

❌

듀얼 스트림 URL (메인 + 서브)

✅ sensor.bosch_<n>_stream_url + _sub (v12.4.0, 카메라별 옵트인)

✅ info 둘 다 표시 · live --sub (v10.5.0)

✅ stream_url + stream_url_sub (v0.5.3 실험적)

◑ bosch_camera_stream_url — 메인 스트림만

❌ (서브 스트림만)

◑ URL만 — 서브 옵션 없음

외부 레코더 (BlueIris, Frigate)

✅ go2rtc 통해

✅ stdout 파이프

✅ Digest 자격 증명 URL + LAN 바인드 옵션

✅ URL 반환, 다운스트림 ffmpeg / go2rtc에 전달

❌

◑ stream-url → 다운스트림 연결

프라이버시 모드

✅ 스위치 엔티티

✅ 명령

✅ DP

✅ bosch_camera_privacy_set (prefer_local 통한 LAN 폴백)

✅ 토글

✅ privacy 노드

전면 스포트라이트 (Gen1/Gen2)

✅ 조명 엔티티

✅ 명령

✅ DP

✅ bosch_camera_light_set (LAN 폴백)

❌ (2단계 스텁)

✅ bosch-camera-light 노드 (v0.3.0-alpha)

RGB 월워셔 (Gen2 Outdoor II)

✅ RGB 지원 조명

◑ 켜기/끄기만 — RGB 없음

✅ 색상 + 밝기 DP

❌ (켜기/끄기만 — RGB 미노출)

❌

◑ 켜기/끄기 + 강도만 — RGB 없음 (v0.3.0-alpha)

패닉 알람 사이렌

✅ 버튼 엔티티 (Gen2 Indoor II)

✅ 명령 (Gen2 Indoor II만)

✅ DP

✅ bosch_camera_siren_trigger (Gen2 Indoor II만)

✅ 트리거 + 지속 시간 (Gen2 Indoor II만)

❌

펌웨어 업데이트

✅ 업데이트 엔티티 + Repairs 수정 흐름, 설치 버튼 (v14.4.10)

✅ 상태 + 설치 (v10.11.0)

✅ 펌웨어 상태 + 설치 트리거, 쓰기 잠금 가드 (v1.8.0)

✅ 상태 + 설치 도구 (v1.7.0)

◑ 읽기 전용 상태 표시, 설치 동작 없음

✅ 상태 + 설치 노드 (v0.4.0-alpha)

이미지 180° 회전

✅ 스위치

❌

✅ DP

❌

❌

❌

모션 / 사람 / 오디오 이벤트

✅ FCM 푸시 + 폴링 폴백

◑ watch 명령만 (이벤트 명령 제거됨)

✅ FCM 푸시 + 폴링 폴백

✅ bosch_camera_events (온디맨드 풀)

◑ 풀 전용 이벤트 테이블

✅ event 노드 (폴)

모션 엣지 트리거 상태

✅ binary_sensor.motion

n/a

✅ motion_active DP (v0.5.3)

n/a (요청-응답, 구독 없음)

❌

❌

모션 시 자동 스냅샷

✅ Camera 엔티티 새로고침

n/a

✅ last_event_image base64 기록 (v0.5.3)

n/a (백그라운드 루프 없음)

❌

❌

합성 모션 트리거 (외부 센서)

✅ 서비스

n/a

✅ DP

❌

❌

❌

모션 영역 / 프라이버시 마스크

✅ 읽기 + 쓰기

✅ 읽기 + 쓰기

✅ 읽기 + 쓰기 (v1.8.0)

✅ get / set / clear (v1.7.0)

❌ (아직 비주얼 편집기 없음)

❌

자동화 규칙 / 일정

✅ 읽기 + 쓰기

✅ 읽기 + 쓰기

✅ 전체 CRUD (v1.8.0)

✅ list / add / edit / delete (v1.7.0)

✅ 전체 CRUD (list/add/edit/delete)

❌

조명 일정

✅ 읽기 (서비스 통한 쓰기, Gen1 Eyes Outdoor만)

✅ 읽기 + 쓰기

✅ 읽기 (Gen1 전용, v1.2.0)

✅ get / set (v1.7.0)

✅ 읽기 + 쓰기 (실외 Eyes 카메라)

❌

클라우드 클립 다운로드 (기록 ~30일)

✅ Media Browser 통해

❌

❌ (보류 — 아직 커뮤니티 요청 없음)

❌ (의도적으로 미노출 — 대용량 페이로드)

❌ (CLI 사용)

◑ 이벤트 페이로드의 clip_url

미니 NVR (로컬 녹화)

✅ 연속 + 이벤트 버퍼링, 링 버퍼 프리롤 (v11.2.0 BETA → v14.7.0 모드)

◑ 이벤트 트리거 세그먼트 먹싱, 프리롤 링 없음 (v10.7.0 BETA)

❌ (자격 증명 없는 RTSP 엔드포인트 통해 외부 레코더에 위임)

❌ (NVR 개념 없음)

◑ 연속만, 이벤트 버퍼링 없음 (v0.4.0-alpha)

◑ bosch-camera-nvr-record 노드 통해 연속만 (v0.4.0-alpha)

SMB / NAS 클립 업로드

✅

✅ (v10.7.0 BETA)

❌

❌

❌

❌

카메라 공유 (친구)

✅ 서비스 (share / invite / list)

✅ 명령

✅ share / invite / remove (Gen2만, v1.8.0)

✅ list / invite / share / unshare / remove (v1.7.0)

✅ list/invite/remove/share/unshare

❌

팬 / 틸트 (360° Gen1)

✅ 서비스

✅ 명령

✅ pan_position DP

✅ bosch_camera_pan

✅ 라이브 API에 연결된 슬라이더

❌

이름 지정 팬 프리셋 (홈 / 왼쪽 / 오른쪽 / 뒤-왼쪽 / 뒤-오른쪽)

✅ 옵트인 선택 엔티티

✅ pan --preset 플래그

✅ pan_preset DP

✅ bosch_camera_pan preset=

❌

❌

양방향 오디오 / 인터콤

❌

✅ 명령

❌

◑ 듣기 전용 bosch_camera_intercom_open (v1.7.0)

❌

❌

이벤트 시 웹훅 전달

✅ 서비스 + 옵트인 옵션

✅ watch --webhook URL

✅ MQTT 브리지 통해

❌ (요청-응답 모델)

❌

❌

MQTT 이벤트 브리지 (모션 / 오디오 / 사람)

n/a (HA 이벤트 버스 네이티브)

n/a (단일 실행)

✅ 관리자 구성

n/a

❌

❌

Apple HomeKit (HA Core 브리지 통해)

✅ 문서화됨

n/a

n/a

n/a

n/a

n/a

스냅샷 스케줄러 / 타임랩스

✅ examples/ YAML

✅ cron + ffmpeg 예제

✅ Blockly 예제

n/a

❌

❌

네이티브 대시보드 카드 / 위젯

✅ Lovelace 카드 2개 (단일 + 그리드)

n/a

✅ vis-2 위젯 2개 — BoschCamera + BoschOverview 멀티캠

n/a

✅ (그 자체로 웹 대시보드)

❌

백그라운드 탭에서도 유지되는 PiP

✅ hass-suspend-when-hidden keep-alive (v14.0.0)

n/a (UI 없음)

✅ 자체 PiP + 프리즈 복구, Web-Worker 하트비트 (v1.7.2/v1.7.3)

n/a (UI 없음)

✅ 재연결 타임아웃 + 프리즈 복구 (v0.4.0-alpha)

n/a (UI 없음)

클라우드 릴레이 REMOTE 폴백

✅ LAN 연결 불가 시 자동 전환

✅ 원격 모드

❌ (설계상 LOCAL 전용)

❌ (미디어 LAN 전용; 상태/이벤트는 클라우드 통해)

◑ CLI 상속

◑ REMOTE 옵트 (수동)

브라우저 기반 관리 / 구성 UI

✅ HA Config Flow

n/a (CLI)

✅ JSON 구성 탭

n/a (LLM 매개; CLI / MCP 클라이언트 통한 구성)

✅ 설정 페이지

◑ 편집기 구성 노드

UI 언어

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

n/a (UI 없음 — LLM이 프런트엔드)

◑ 백엔드 i18n · UI 대부분 EN

n/a (영어 전용)

범례: ✅ 지원됨 · ❌ 지원되지 않음 / 계획되지 않음 · n/a 이 플랫폼에는 적용되지 않음.

네 프로젝트 모두 동일한 리버스 엔지니어링 Cloud API + RCP 프로토콜 연구를 공유하지만, 각자 독립적으로 발전합니다. Home Assistant 연동이 가장 기능이 완전한 레퍼런스 구현체이며, Python CLI는 가장 저수준/스크립팅 가능한 인터페이스이고, ioBroker 어댑터는 VIS 대시보드와 Blockly 자동화를 대상으로 합니다. MCP 서버는 MCP 클라이언트(Claude Desktop, Claude Code, 커스텀)에게 자연어 카메라 제어를 위한 선별된 LAN 우선 도구 표면을 노출합니다.


관련 프로젝트

Bosch Smart Home Cameras를 위한 5가지 구현체 계열 중 하나입니다(알파 프론트엔드 포함):

Implementation

Repo

Status

🏆 Home Assistant Integration

Bosch-Smart-Home-Camera-Tool-HomeAssistant

v16.0.1 · HA Quality Scale Platinum · 프로덕션 준비 완료

🐍 Python CLI

Bosch-Smart-Home-Camera-Tool-Python

v10.12.3 · Mini-NVR + SMB 업로드(BETA) · LAN 폴백(ping / --local) · PTZ 프리셋 · 웹훅 전달 · 캡처 / 연구 / 독립 실행형

🟢 ioBroker Adapter

ioBroker.bosch-smart-home-camera

v1.8.3 · 안정적 · npm · privacy-toggle Digest 로테이션 · MQTT 브리지 · PTZ 프리셋 · VIS-2 위젯(BoschCamera + BoschOverview)

🤖 MCP Server (이 저장소)

Bosch-Smart-Home-Camera-Tool-MCP

v1.7.2 · cred-rotation · PTZ 프리셋 · TOFU 인증서 고정 · 클라우드 CA 고정 (CWE-295) · LAN-ping + prefer_local · zones/masks/rules/friends/firmware-install · Claude Code / Claude Desktop 통합

🔴 Node-RED nodes (alpha)

Bosch-Smart-Home-Camera-Tool-NodeRED

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 tools
bosch_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).

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
fire_alarmNoWhether smoke/fire-alarm sound detection is enabled (Bosch API field 'detectFireAlarm')
glass_breakNoWhether glass-break sound detection is enabled (Bosch API field 'detectGlassBreak')

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes
fire_alarmNo
glass_breakNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
fire_alarmNoWhether smoke/fire-alarm sound detection is enabled (Bosch API field 'detectFireAlarm')
glass_breakNoWhether glass-break sound detection is enabled (Bosch API field 'detectGlassBreak')

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
speaker_levelNoSpeaker / intercom playback volume (0-100)
intercom_enabledNoTwo-way intercom enabled flag (Gen2 Indoor II only; None for cameras without intercom)
microphone_levelNoMicrophone recording level (0-100)

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes
mic_levelNo
speaker_levelNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
speaker_levelNoSpeaker / intercom playback volume (0-100)
intercom_enabledNoTwo-way intercom enabled flag (Gen2 Indoor II only; None for cameras without intercom)
microphone_levelNoMicrophone recording level (0-100)

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
enabledYesWhether auto-follow tracking is enabled

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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}.

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes
enabledYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
enabledYesWhether auto-follow tracking is enabled

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
soft_light_fadingYesWhether lights fade smoothly (True) or snap on/off (False)
threshold_percentYesAmbient-darkness trigger threshold, 0=always day .. 100=always night

TDQS

A3.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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"}.

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes
soft_light_fadingNo
threshold_percentNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
soft_light_fadingYesWhether lights fade smoothly (True) or snap on/off (False)
threshold_percentYesAmbient-darkness trigger threshold, 0=always day .. 100=always night

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cameraYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
cameraYesCamera name
currentNoCurrently installed version
installingNoWhether an install is currently in progress
up_to_dateNoWhether the camera is already on the latest firmware
update_availableNoPending update's target version, if any

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
cameraYesCamera name
currentNoCurrently installed version
installingNoWhether an install is currently in progress
up_to_dateNoWhether the camera is already on the latest firmware
update_availableNoPending update's target version, if any

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesFriend id (Bosch API field 'id')
emailNoFriend's email address
statusNoInvitation status, e.g. ACCEPTED/PENDING
nicknameNoDisplay nickname
shared_camerasNoCamera ids currently shared with this friend

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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}.

ParametersJSON Schema
NameRequiredDescriptionDefault
friend_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_friends_shareA

Share one camera with an existing friend.

days limits the share to a time window starting now; omit for an unlimited share. Returns {shared, friend_id, camera}.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
cameraYes
friend_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description carries full burden, disclosing that 'days' limits share duration and that omitting it gives unlimited sharing. It also mentions the return format. However, it omits error conditions or idempotency details, which are partially mitigated by the tool's simplicity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise: two sentences clearly state purpose, parameter behavior, and return value. 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.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with no annotations and an output schema only hinted at in the description, the description covers purpose, parameter semantics, and return format. However, it lacks error handling details, prerequisites (e.g., friend must exist), and whether sharing is additive or replaces existing shares.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description compensates by explaining the 'days' parameter and its optionality, but provides no additional details for 'camera' or 'friend_id'. The other parameters are self-explanatory from context, but more explicit semantics would be beneficial given the low coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Share one camera with an existing friend,' specifying the verb, resource, and target audience. This effectively distinguishes it from sibling tools like bosch_camera_friends_invite (inviting new friends) and bosch_camera_friends_unshare (removing sharing).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies using this tool for sharing with an existing friend, contrasting with invite for new friends, but does not explicitly state when to use it versus alternatives. No exclusions or when-not-to-use 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_friends_unshareA

Revoke ALL camera shares from a friend (the friend entry itself remains).

Returns {unshared, friend_id}.

ParametersJSON Schema
NameRequiredDescriptionDefault
friend_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden. It discloses that the action revokes all shares, the friend entry persists (non-destructive to friend), and the return format. It lacks details on side effects or prerequisites but is adequate for a simple operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences: first states action and side effect, second describes return. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity (1 param, implied output schema), the description covers the essential behavior and return. It could mention that the friend must exist, but overall it is complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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 what 'friend_id' is or how to obtain it. The parameter name alone is insufficient.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Revoke ALL camera shares') and distinguishes from related siblings (e.g., bosch_camera_friends_remove removes the friend, bosch_camera_friends_share adds shares) by noting the friend entry remains.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The context of siblings (friends_share, friends_remove, etc.) implies when to use this tool (to revoke shares without removing the friend), but it does not explicitly state alternatives or when not to use.

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes
confirmNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes
durationNo
speaker_levelNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
cameraYesCanonical camera name
durationYesRequested session duration in seconds
rtsps_urlYesCloud-proxy RTSPS URL with enableaudio=1, consumable by ffmpeg/ffplay/VLC
speaker_level_setNoSpeaker level actually applied (0-100), or None if not requested/failed

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
modeNoDetection 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.
distanceNoDetection distance in meters (1-8)
sensitivityNoDetection sensitivity (0-7; 0=low, 7=high)

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNo
cameraYes
distanceNo
sensitivityNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
modeNoDetection 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.
distanceNoDetection distance in meters (1-8)
sensitivityNoDetection sensitivity (0-7; 0=low, 7=high)

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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}.

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraNo
lan_ipNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
ipYesIP address that was probed
reachableYesTrue if the camera responded within the timeout
latency_msYesRound-trip latency in milliseconds, or -1.0 if unreachable

TDQS

A4.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes
positionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
positionYes'top' or 'bottom'
brightness_percentYes0-100 %

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes
positionYes
brightness_percentYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
positionYes'top' or 'bottom'
brightness_percentYes0-100 %

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
metersYesMounting height in meters, used for person-detection perspective correction

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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}.

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes
metersYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
metersYesMounting height in meters, used for person-detection perspective correction

TDQS

A3.6/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
on_timeNoLight-on time HH:MM:SS (Bosch API field 'generalLightOnTime')
off_timeNoLight-off time HH:MM:SS (Bosch API field 'generalLightOffTime')
wallwasher_onNoWallwasher light state during general-light-on (read-only)
light_on_motionNoWhether motion also triggers the light
schedule_statusNoBosch API field 'scheduleStatus', e.g. FOLLOW_SCHEDULE
darkness_thresholdNo0.0-1.0 ambient-darkness trigger threshold
front_illuminator_onNoFront illuminator state during general-light-on (read-only)
front_illuminator_intensityNoFront illuminator intensity (read-only)
light_on_motion_followup_secsNoSeconds the light stays on after motion (read-only)

TDQS

A3.5/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes
on_timeNo
off_timeNo
light_on_motionNo
darkness_thresholdNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
on_timeNoLight-on time HH:MM:SS (Bosch API field 'generalLightOnTime')
off_timeNoLight-off time HH:MM:SS (Bosch API field 'generalLightOffTime')
wallwasher_onNoWallwasher light state during general-light-on (read-only)
light_on_motionNoWhether motion also triggers the light
schedule_statusNoBosch API field 'scheduleStatus', e.g. FOLLOW_SCHEDULE
darkness_thresholdNo0.0-1.0 ambient-darkness trigger threshold
front_illuminator_onNoFront illuminator state during general-light-on (read-only)
front_illuminator_intensityNoFront illuminator intensity (read-only)
light_on_motion_followup_secsNoSeconds the light stays on after motion (read-only)

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes
enabledYes
prefer_localNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameYes
statusYes
light_onNo
privacy_modeYes
last_event_atNoISO 8601 timestamp of the latest motion event

TDQS

A4.8/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
stateYesactive | inactive | unsupported | unknown
cameraYesCanonical camera name
queriedYesFalse when the camera is not eligible (Gen1 / old firmware)
password_configuredYesWhether a sticker password is configured

TDQS

A3.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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): run bosch_camera_lan_ping to check per-camera LAN reachability, then use prefer_local=True on 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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
enabledYesWhether motion detection is enabled
sensitivityNoMotion alarm sensitivity: OFF | LOW | MEDIUM_LOW | MEDIUM_HIGH | HIGH | SUPER_HIGH. Stored in 'motionAlarmConfiguration' field in the API.

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes
enabledNo
sensitivityNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
enabledYesWhether motion detection is enabled
sensitivityNoMotion alarm sensitivity: OFF | LOW | MEDIUM_LOW | MEDIUM_HIGH | HIGH | SUPER_HIGH. Stored in 'motionAlarmConfiguration' field in the API.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior3/5

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.

Conciseness3/5

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.

Completeness3/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
zonesYes
cameraYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes
enabledYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameYes
statusYes
light_onNo
privacy_modeYes
last_event_atNoISO 8601 timestamp of the latest motion event

TDQS

C2.4/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes
presetNo
directionNohome

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameYes
statusYes
light_onNo
privacy_modeYes
last_event_atNoISO 8601 timestamp of the latest motion event

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
masksYes
cameraYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes
enabledYes
prefer_localNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameYes
statusYes
light_onNo
privacy_modeYes
last_event_atNoISO 8601 timestamp of the latest motion event

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
enabledYesWhether the camera plays an audible indicator when privacy mode changes

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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}.

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes
enabledYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
enabledYesWhether the camera plays an audible indicator when privacy mode changes

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
sound_onYesWhether audio is included in cloud recordings

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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}.

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes
sound_onYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
sound_onYesWhether audio is included in cloud recordings

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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"}.

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes
new_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
endYes
daysYes
nameYes
startYes
cameraYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNoRule id (Bosch API field 'id')
endYesEnd time HH:MM:SS (Bosch API field 'endTime')
daysYesActive weekdays, 0=Monday .. 6=Sunday
nameYesRule display name
startYesStart time HH:MM:SS (Bosch API field 'startTime')
activeYesWhether the rule is currently active

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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}.

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes
rule_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNo
daysNo
nameNo
startNo
activeNo
cameraYes
rule_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNoRule id (Bosch API field 'id')
endYesEnd time HH:MM:SS (Bosch API field 'endTime')
daysYesActive weekdays, 0=Monday .. 6=Sunday
nameYesRule display name
startYesStart time HH:MM:SS (Bosch API field 'startTime')
activeYesWhether the rule is currently active

TDQS

B3/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes
secondsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
alarm_delay_secondsYesConfigured siren duration in seconds (Bosch API field 'alarmDelayInSeconds')

TDQS

A5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_alarm Body: {"enabled": <bool>}. Outdoor cameras return HTTP 442 (not supported).

  • Gen2 Indoor II (model == "HOME_Eyes_Indoor") → PUT /v11/video_inputs/{id}/panic_alarm Body: {"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.

ParametersJSON Schema
NameRequiredDescriptionDefault
stopNo
cameraYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameYes
statusYes
light_onNo
privacy_modeYes
last_event_atNoISO 8601 timestamp of the latest motion event

TDQS

A4.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
pathYesFilesystem path to the saved JPEG
methodYesSource: local_lan (LAN-only; cloud fallback removed in v1.1.0)
timestampYesISO 8601 capture time

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameYes
statusYes
light_onNo
privacy_modeYes
last_event_atNoISO 8601 timestamp of the latest motion event

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
enabledYesWhether the camera's status LED is lit

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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"}.

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes
enabledYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
enabledYesWhether the camera's status LED is lit

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
audioNo
cameraYes
qualityNohigh

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteNo
cameraYesCanonical camera name from config
sourceNo'local_data_interface' when the URL uses the camera's local data interface
rtsps_urlYesLAN RTSPS URL via TLS proxy (rtsps://<user>:<pass>@<ip>:443/...)

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
enabledYesWhether a date/time overlay is burned into the video

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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}.

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes
enabledYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
enabledYesWhether a date/time overlay is burned into the video

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
emailNoEmail/preferred_username from JWT claims
validYesTrue if the token is not expired
expires_in_minNoMinutes until expiry (negative = already expired); None if undecodable

TDQS

A4.4/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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}.

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYesNumber of unread events (from video_inputs listing)
cameraYesCamera name

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueYes-1.0 (cool/blue) .. 1.0 (warm/orange), 0.0 = neutral

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYes
cameraYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueYes-1.0 (cool/blue) .. 1.0 (warm/orange), 0.0 = neutral

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
rssiNoRaw RSSI in dBm (negative; e.g. -67)
ssidNoConnected WiFi SSID
signal_strengthNoSignal quality 0-100 % derived from RSSI (-50 dBm = 100 %, -100 dBm = 0 %)

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

  1. 2 tool updatesv1.8.1
    • Addedbosch_camera_local_data_status
    • Changedbosch_camera_stream_url3 fields changed
      • addedInput schema / properties / audio
        Added value: +{
        +  "default": true,
        +  "title": "Audio",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / quality
        Added value: +{
        +  "default": "high",
        +  "title": "Quality",
        +  "type": "string"
        +}
      • addedOutput schema / properties / source
        Added value: +{
        +  "default": "temporary_credentials",
        +  "description": "'local_data_interface' when the URL uses the camera's local data interface",
        +  "title": "Source",
        +  "type": "string"
        +}
  2. 15 tool updatesv1.7.3
    • Addedbosch_camera_darkness_threshold_get
    • Addedbosch_camera_darkness_threshold_set
    • Addedbosch_camera_hard_reset
    • Addedbosch_camera_led_brightness_get
    • Addedbosch_camera_led_brightness_set
    • Addedbosch_camera_lens_elevation_get
    • Addedbosch_camera_lens_elevation_set
    • Addedbosch_camera_rename
    • Addedbosch_camera_soft_reset
    • Addedbosch_camera_status_led_get
    • Addedbosch_camera_status_led_set
    • Addedbosch_camera_timestamp_overlay_get
    • Addedbosch_camera_timestamp_overlay_set
    • Addedbosch_camera_white_balance_get
    • Addedbosch_camera_white_balance_set
  3. 21 tool updatesv1.7.0
    • Addedbosch_camera_firmware_install
    • Addedbosch_camera_firmware_status
    • Addedbosch_camera_friends_invite
    • Addedbosch_camera_friends_list
    • Addedbosch_camera_friends_remove
    • Addedbosch_camera_friends_share
    • Addedbosch_camera_friends_unshare
    • Addedbosch_camera_intercom_open
    • Addedbosch_camera_lighting_schedule_get
    • Addedbosch_camera_lighting_schedule_set
    • Addedbosch_camera_motion_zones_clear
    • Addedbosch_camera_motion_zones_get
    • Addedbosch_camera_motion_zones_set
    • Addedbosch_camera_privacy_masks_clear
    • Addedbosch_camera_privacy_masks_get
    • Addedbosch_camera_privacy_masks_set
    • Addedbosch_camera_rules_add
    • Addedbosch_camera_rules_delete
    • Addedbosch_camera_rules_edit
    • Addedbosch_camera_rules_list
    • Addedbosch_camera_siren_duration_set
  4. 34 tool updatesv1.6.0
    • First observedbosch_camera_audio_detection_get
    • First observedbosch_camera_audio_detection_set
    • First observedbosch_camera_audio_get
    • First observedbosch_camera_audio_set
    • First observedbosch_camera_autofollow_get
    • First observedbosch_camera_autofollow_set
    • First observedbosch_camera_events
    • First observedbosch_camera_feature_flags
    • First observedbosch_camera_health_check_all
    • First observedbosch_camera_intrusion_get
    • First observedbosch_camera_intrusion_set
    • First observedbosch_camera_lan_ping
    • First observedbosch_camera_light_set
    • First observedbosch_camera_list
    • First observedbosch_camera_maintenance_status
    • First observedbosch_camera_mjpeg_snapshot
    • First observedbosch_camera_motion_get
    • First observedbosch_camera_motion_set
    • First observedbosch_camera_notifications_set
    • First observedbosch_camera_onvif_scopes
    • First observedbosch_camera_pan
    • First observedbosch_camera_privacy_set
    • First observedbosch_camera_privacy_sound_get
    • First observedbosch_camera_privacy_sound_set
    • First observedbosch_camera_rcp_version
    • First observedbosch_camera_recording_get
    • First observedbosch_camera_recording_set
    • First observedbosch_camera_siren_trigger
    • First observedbosch_camera_snapshot
    • First observedbosch_camera_status
    • First observedbosch_camera_stream_url
    • First observedbosch_camera_token_status
    • First observedbosch_camera_unread_get
    • First observedbosch_camera_wifi

TDQS

B3.4/5.0

Scored across 71 tools

Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count1/5

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.

Completeness4/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables natural language control of Xiaomi smart home devices through MCP, focusing on homes, rooms, device names, and scenes without requiring protocol details.
    71
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables natural language control of Loxone smart home systems, including lighting, audio, climate, and environmental monitoring, through MCP-compatible clients.
    16 npm
    2
    AGPL 3.0
  • A
    license
    A
    quality
    C
    maintenance
    MCP 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.
    9
    MIT