You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* feat: consolidate list/get tool pairs to reduce tool count
Consolidate 5 pairs of ha_list_*/ha_get_* tools into single tools with optional
parameters, following the pattern established in issue #420 for ha_get_blueprint.
Tool consolidations:
- ha_list_updates + ha_get_release_notes → ha_get_updates(entity_id=None)
- ha_list_zones → ha_get_zone(zone_id=None)
- ha_list_devices + ha_get_device → ha_get_device(device_id=None, manufacturer=None)
- ha_list_exposed_entities + ha_get_entity_exposure → ha_get_entity_exposure(entity_id=None)
- ha_list_integrations + ha_get_config_entry → ha_get_integration(entry_id=None)
Net reduction: 4 tools (from 105 to 101)
The consolidated tools now support both modes:
- Without identifier: Lists all items (with optional filters)
- With identifier: Returns detailed info for specific item
Closes#424
* chore: update uv.lock
* feat: consolidate additional list tools (round 2) - reduce to 97 tools
Consolidate 4 more tool pairs to further reduce tool count:
- ha_config_list_dashboards → ha_config_get_dashboard(list_only=True)
- ha_config_list_labels → ha_config_get_label(label_id=None)
- ha_list_addons + ha_list_available_addons → ha_get_addon(source=None)
- ha_list_todo_lists + ha_get_todo_items → ha_get_todo(entity_id=None)
Tool count: 101 → 97 (saved 4 tools)
Combined with first round: 105 → 97 (saved 8 tools total)
All consolidated tools follow the established pattern:
- When optional ID/filter param is None → list mode
- When param provided → get specific item mode
Updated tests and documentation accordingly.
Closes#424
* fix: update voice assistant tests to match consolidated tool API
The ha_get_entity_exposure tool returns different response structures:
- When entity_id is provided: returns exposed_to, is_exposed_anywhere, etc.
- When listing all: returns exposed_entities, count, assistant_filter
Updated tests to match the actual implementation:
- Use assistant_filter instead of filters_applied.assistant
- Use entity-specific response keys when entity_id is provided
* fix: remove `or True` expressions that ignored user-provided False values
The `or True` pattern used to satisfy the type checker was causing
`coerce_bool_param(..., default=True) or True` to always return True,
even when the user explicitly passed False for preserve_voice_exposure,
parallel, or report_errors parameters.
Fixed by replacing `or True` with an assert for type narrowing, which
correctly preserves user input while satisfying the type checker.
Affected tools:
- ha_rename_entity(): preserve_voice_exposure parameter
- ha_rename_entity_and_device(): preserve_voice_exposure parameter
- ha_bulk_control(): parallel parameter
- ha_render_template(): report_errors parameter
Fixes bug identified by Gemini Code Assist review.
* chore: update uv.lock
* fix: validate credentials in standard mode entry points
The config now has OAuth-mode placeholder defaults for homeassistant_url
and homeassistant_token. In standard mode (main, main_web, main_sse),
validate that real credentials are provided - not the OAuth placeholders.
Also updates test mocks to match current function signatures:
- mock_run_async now accepts show_banner kwarg
- mock_run_http now accepts default_port kwarg
- HTTP entry point tests now provide mock credentials
This restores the expected behavior where missing credentials show a
friendly error message and exit with non-zero status.
* fix: update e2e tests to use consolidated tool names
The tool consolidation PR renamed/consolidated these tools:
- ha_config_list_dashboards -> ha_config_get_dashboard(list_only=True)
- ha_get_config_entry -> ha_get_integration
Update e2e tests to use the new consolidated tool names.
* fix: update voice assistant tests to match consolidated tool API
Change ha_get_entity_exposure response to use filters_applied dict
instead of assistant_filter to match the expected e2e test API.
- Rename assistant_filter -> filters_applied["assistant"]
- Update unit test to match new response structure
* fix: add pre-flight HACS availability check for install tests
Add pre-flight HACS availability check using ha_hacs_info before
attempting HACS install operations. This prevents flaky test failures
when HACS is rate-limited or temporarily unavailable.
Affects:
- test_install_mcp_tools_basic
- test_install_mcp_tools_idempotent
- test_check_mcp_tools_in_hacs
---------
Co-authored-by: Claude <noreply@anthropic.com>
0 commit comments