ha-mcp-dev 7.8.0.dev714__tar.gz → 7.8.1.dev715__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ha_mcp_dev-7.8.0.dev714/src/ha_mcp_dev.egg-info → ha_mcp_dev-7.8.1.dev715}/PKG-INFO +12 -5
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/README.md +11 -4
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/pyproject.toml +1 -1
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715/src/ha_mcp_dev.egg-info}/PKG-INFO +12 -5
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/LICENSE +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/MANIFEST.in +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/setup.cfg +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/__init__.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/__main__.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/_pypi_marker +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/_version.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/auth/__init__.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/auth/consent_form.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/auth/provider.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/backup_manager.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/client/__init__.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/client/rest_client.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/client/supervisor_client.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/client/websocket_client.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/client/websocket_listener.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/config.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/errors.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/policy/__init__.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/policy/approval_queue.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/policy/evaluator.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/policy/handlers.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/policy/middleware.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/policy/model.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/policy/persistence.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/policy/value_sources.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/py.typed +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/read_only.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/resources/skills-vendor/.claude/settings.json +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/resources/skills-vendor/.claude-plugin/marketplace.json +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/resources/skills-vendor/.claude-plugin/plugin.json +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/resources/skills-vendor/.github/ISSUE_TEMPLATE/skill-rca.md +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/resources/skills-vendor/.github/pull_request_template.md +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/resources/skills-vendor/AGENTS.md +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/resources/skills-vendor/CLAUDE.md +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/resources/skills-vendor/CONTRIBUTING.md +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/resources/skills-vendor/README.md +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/evals/evals.json +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-patterns.md +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/server.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/settings.css +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/settings.js +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/settings_ui.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/smoke_test.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/__init__.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/auto_backup.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/backup.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/best_practice_checker.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/config_entry_flow.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/device_control.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/enhanced.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/helpers.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/reference_validator.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/registry.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/smart_search/_base.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/smart_search/_config.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/tools_addons.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/tools_areas.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/tools_blueprints.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/tools_bug_report.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/tools_calendar.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/tools_camera.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/tools_categories.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/tools_code.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/tools_config_automations.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/tools_energy.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/tools_entities.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/tools_filesystem.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/tools_groups.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/tools_hacs.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/tools_history.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/tools_integrations.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/tools_labels.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/tools_mcp_component.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/tools_registry.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/tools_resources.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/tools_search.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/tools_service.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/tools_services.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/tools_system.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/tools_themes.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/tools_todo.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/tools_traces.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/tools_updates.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/tools_utility.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/tools_zones.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/util_helpers.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/validation_middleware.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/transforms/__init__.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/transforms/categorized_search.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/utils/__init__.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/utils/config_hash.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/utils/data_paths.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/utils/domain_handlers.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/utils/fuzzy_search.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/utils/operation_manager.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/utils/python_sandbox.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/utils/skill_loader.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/utils/usage_logger.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp_dev.egg-info/SOURCES.txt +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp_dev.egg-info/dependency_links.txt +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp_dev.egg-info/entry_points.txt +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp_dev.egg-info/requires.txt +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp_dev.egg-info/top_level.txt +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/tests/__init__.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/tests/test_constants.py +0 -0
- {ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/tests/test_env_manager.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ha-mcp-dev
|
|
3
|
-
Version: 7.8.
|
|
3
|
+
Version: 7.8.1.dev715
|
|
4
4
|
Summary: Home Assistant MCP Server - Complete control of Home Assistant through MCP
|
|
5
5
|
Author-email: Julien <github@qc-h.net>
|
|
6
6
|
License: MIT
|
|
@@ -319,9 +319,16 @@ Skills can still be installed manually for clients that prefer local skill files
|
|
|
319
319
|
|
|
320
320
|
## 🔍 Tool Discovery for AI Agents
|
|
321
321
|
|
|
322
|
-
By default, the full tool catalog (~
|
|
322
|
+
By default, the full tool catalog (~84 tools) is listed to the client through the standard MCP `tools/list` response. Clients with deferred / on-demand tool loading (Claude Sonnet, Claude Opus) handle that fine — tools are pulled into context only when needed, so idle context cost is near-zero.
|
|
323
323
|
|
|
324
|
-
For models *without* deferred tool support — Claude Haiku, Gemini, ChatGPT OpenAI-compatible local models, smaller open-weights models — listing
|
|
324
|
+
For models *without* deferred tool support — Claude Haiku, Gemini, ChatGPT OpenAI-compatible local models, smaller open-weights models — listing the full tool catalog up front adds a lot of idle context and can overwhelm smaller models. To address that, the server ships with a **search-based discovery mode** built on top of FastMCP's BM25 search transform.
|
|
325
|
+
|
|
326
|
+
### Smaller or local LLMs (Ollama, etc.)
|
|
327
|
+
|
|
328
|
+
If your model can't see the tools or your Home Assistant, it may be getting handed the whole tool catalog at once and struggling with it. It's recommended to try the following to see if it helps:
|
|
329
|
+
|
|
330
|
+
- **Enable tool search** (`ENABLE_TOOL_SEARCH=true`, or the add-on option below). Instead of listing every tool up front, the server defers the catalog behind a search interface so the model pulls in only the tools it needs, when it needs them.
|
|
331
|
+
- **Raise the model's context window above the default.** Local runtimes ship with small defaults (Ollama's `num_ctx` is one example) that can't hold a large tool set plus the conversation — increase it well beyond the default.
|
|
325
332
|
|
|
326
333
|
### Enable search-based discovery
|
|
327
334
|
|
|
@@ -338,14 +345,14 @@ The proxy split lets MCP clients apply different permission policies per categor
|
|
|
338
345
|
|
|
339
346
|
| Setting | Default | Description |
|
|
340
347
|
|---------|---------|-------------|
|
|
341
|
-
| `ENABLE_TOOL_SEARCH` | `false` | Replace full tool catalog with search-based discovery (
|
|
348
|
+
| `ENABLE_TOOL_SEARCH` | `false` | Replace full tool catalog with search-based discovery (tools deferred behind on-demand search). |
|
|
342
349
|
| `TOOL_SEARCH_MAX_RESULTS` | `5` | Max results returned by `ha_search_tools` (range 2–10). |
|
|
343
350
|
| `PINNED_TOOLS` | empty | Comma-separated tool names to keep always visible. The web settings UI is the primary way to manage this. |
|
|
344
351
|
|
|
345
352
|
### When to enable
|
|
346
353
|
|
|
347
354
|
- **Claude Haiku, OpenAI-compatible local models, Gemini, ChatGPT or any model without native deferred tool support** — large idle-context savings.
|
|
348
|
-
- MCP clients that cap total tool count (some cap at 100) — surfaces a minimal set (~10 tools) instead of
|
|
355
|
+
- MCP clients that cap total tool count (some cap at 100) — surfaces a minimal set (~10 tools) instead of 84.
|
|
349
356
|
- **Cost-sensitive deployments** — fewer idle tokens per turn.
|
|
350
357
|
|
|
351
358
|
Leave it off when using Claude Sonnet/Opus or any client with deferred tool loading; the full catalog has no idle cost there and direct calls skip the search step. If you choose to use our toolsearch then you should disable the native Claude Opus/Sonnet toolsearch, which is called deferred tools in the settings.
|
|
@@ -288,9 +288,16 @@ Skills can still be installed manually for clients that prefer local skill files
|
|
|
288
288
|
|
|
289
289
|
## 🔍 Tool Discovery for AI Agents
|
|
290
290
|
|
|
291
|
-
By default, the full tool catalog (~
|
|
291
|
+
By default, the full tool catalog (~84 tools) is listed to the client through the standard MCP `tools/list` response. Clients with deferred / on-demand tool loading (Claude Sonnet, Claude Opus) handle that fine — tools are pulled into context only when needed, so idle context cost is near-zero.
|
|
292
292
|
|
|
293
|
-
For models *without* deferred tool support — Claude Haiku, Gemini, ChatGPT OpenAI-compatible local models, smaller open-weights models — listing
|
|
293
|
+
For models *without* deferred tool support — Claude Haiku, Gemini, ChatGPT OpenAI-compatible local models, smaller open-weights models — listing the full tool catalog up front adds a lot of idle context and can overwhelm smaller models. To address that, the server ships with a **search-based discovery mode** built on top of FastMCP's BM25 search transform.
|
|
294
|
+
|
|
295
|
+
### Smaller or local LLMs (Ollama, etc.)
|
|
296
|
+
|
|
297
|
+
If your model can't see the tools or your Home Assistant, it may be getting handed the whole tool catalog at once and struggling with it. It's recommended to try the following to see if it helps:
|
|
298
|
+
|
|
299
|
+
- **Enable tool search** (`ENABLE_TOOL_SEARCH=true`, or the add-on option below). Instead of listing every tool up front, the server defers the catalog behind a search interface so the model pulls in only the tools it needs, when it needs them.
|
|
300
|
+
- **Raise the model's context window above the default.** Local runtimes ship with small defaults (Ollama's `num_ctx` is one example) that can't hold a large tool set plus the conversation — increase it well beyond the default.
|
|
294
301
|
|
|
295
302
|
### Enable search-based discovery
|
|
296
303
|
|
|
@@ -307,14 +314,14 @@ The proxy split lets MCP clients apply different permission policies per categor
|
|
|
307
314
|
|
|
308
315
|
| Setting | Default | Description |
|
|
309
316
|
|---------|---------|-------------|
|
|
310
|
-
| `ENABLE_TOOL_SEARCH` | `false` | Replace full tool catalog with search-based discovery (
|
|
317
|
+
| `ENABLE_TOOL_SEARCH` | `false` | Replace full tool catalog with search-based discovery (tools deferred behind on-demand search). |
|
|
311
318
|
| `TOOL_SEARCH_MAX_RESULTS` | `5` | Max results returned by `ha_search_tools` (range 2–10). |
|
|
312
319
|
| `PINNED_TOOLS` | empty | Comma-separated tool names to keep always visible. The web settings UI is the primary way to manage this. |
|
|
313
320
|
|
|
314
321
|
### When to enable
|
|
315
322
|
|
|
316
323
|
- **Claude Haiku, OpenAI-compatible local models, Gemini, ChatGPT or any model without native deferred tool support** — large idle-context savings.
|
|
317
|
-
- MCP clients that cap total tool count (some cap at 100) — surfaces a minimal set (~10 tools) instead of
|
|
324
|
+
- MCP clients that cap total tool count (some cap at 100) — surfaces a minimal set (~10 tools) instead of 84.
|
|
318
325
|
- **Cost-sensitive deployments** — fewer idle tokens per turn.
|
|
319
326
|
|
|
320
327
|
Leave it off when using Claude Sonnet/Opus or any client with deferred tool loading; the full catalog has no idle cost there and direct calls skip the search step. If you choose to use our toolsearch then you should disable the native Claude Opus/Sonnet toolsearch, which is called deferred tools in the settings.
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "ha-mcp-dev"
|
|
7
|
-
version = "7.8.
|
|
7
|
+
version = "7.8.1.dev715"
|
|
8
8
|
description = "Home Assistant MCP Server - Complete control of Home Assistant through MCP"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.13,<3.14"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ha-mcp-dev
|
|
3
|
-
Version: 7.8.
|
|
3
|
+
Version: 7.8.1.dev715
|
|
4
4
|
Summary: Home Assistant MCP Server - Complete control of Home Assistant through MCP
|
|
5
5
|
Author-email: Julien <github@qc-h.net>
|
|
6
6
|
License: MIT
|
|
@@ -319,9 +319,16 @@ Skills can still be installed manually for clients that prefer local skill files
|
|
|
319
319
|
|
|
320
320
|
## 🔍 Tool Discovery for AI Agents
|
|
321
321
|
|
|
322
|
-
By default, the full tool catalog (~
|
|
322
|
+
By default, the full tool catalog (~84 tools) is listed to the client through the standard MCP `tools/list` response. Clients with deferred / on-demand tool loading (Claude Sonnet, Claude Opus) handle that fine — tools are pulled into context only when needed, so idle context cost is near-zero.
|
|
323
323
|
|
|
324
|
-
For models *without* deferred tool support — Claude Haiku, Gemini, ChatGPT OpenAI-compatible local models, smaller open-weights models — listing
|
|
324
|
+
For models *without* deferred tool support — Claude Haiku, Gemini, ChatGPT OpenAI-compatible local models, smaller open-weights models — listing the full tool catalog up front adds a lot of idle context and can overwhelm smaller models. To address that, the server ships with a **search-based discovery mode** built on top of FastMCP's BM25 search transform.
|
|
325
|
+
|
|
326
|
+
### Smaller or local LLMs (Ollama, etc.)
|
|
327
|
+
|
|
328
|
+
If your model can't see the tools or your Home Assistant, it may be getting handed the whole tool catalog at once and struggling with it. It's recommended to try the following to see if it helps:
|
|
329
|
+
|
|
330
|
+
- **Enable tool search** (`ENABLE_TOOL_SEARCH=true`, or the add-on option below). Instead of listing every tool up front, the server defers the catalog behind a search interface so the model pulls in only the tools it needs, when it needs them.
|
|
331
|
+
- **Raise the model's context window above the default.** Local runtimes ship with small defaults (Ollama's `num_ctx` is one example) that can't hold a large tool set plus the conversation — increase it well beyond the default.
|
|
325
332
|
|
|
326
333
|
### Enable search-based discovery
|
|
327
334
|
|
|
@@ -338,14 +345,14 @@ The proxy split lets MCP clients apply different permission policies per categor
|
|
|
338
345
|
|
|
339
346
|
| Setting | Default | Description |
|
|
340
347
|
|---------|---------|-------------|
|
|
341
|
-
| `ENABLE_TOOL_SEARCH` | `false` | Replace full tool catalog with search-based discovery (
|
|
348
|
+
| `ENABLE_TOOL_SEARCH` | `false` | Replace full tool catalog with search-based discovery (tools deferred behind on-demand search). |
|
|
342
349
|
| `TOOL_SEARCH_MAX_RESULTS` | `5` | Max results returned by `ha_search_tools` (range 2–10). |
|
|
343
350
|
| `PINNED_TOOLS` | empty | Comma-separated tool names to keep always visible. The web settings UI is the primary way to manage this. |
|
|
344
351
|
|
|
345
352
|
### When to enable
|
|
346
353
|
|
|
347
354
|
- **Claude Haiku, OpenAI-compatible local models, Gemini, ChatGPT or any model without native deferred tool support** — large idle-context savings.
|
|
348
|
-
- MCP clients that cap total tool count (some cap at 100) — surfaces a minimal set (~10 tools) instead of
|
|
355
|
+
- MCP clients that cap total tool count (some cap at 100) — surfaces a minimal set (~10 tools) instead of 84.
|
|
349
356
|
- **Cost-sensitive deployments** — fewer idle tokens per turn.
|
|
350
357
|
|
|
351
358
|
Leave it off when using Claude Sonnet/Opus or any client with deferred tool loading; the full catalog has no idle cost there and direct calls skip the search step. If you choose to use our toolsearch then you should disable the native Claude Opus/Sonnet toolsearch, which is called deferred tools in the settings.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/dashboard_screenshot/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/dashboard_screenshot/capture.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/dashboard_screenshot/provision.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/resources/skills-vendor/AGENTS.md
RENAMED
|
File without changes
|
{ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/resources/skills-vendor/CLAUDE.md
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/resources/skills-vendor/LICENSE
RENAMED
|
File without changes
|
{ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/resources/skills-vendor/README.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/best_practice_checker.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/smart_search/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/smart_search/_config.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/smart_search/_entities.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/smart_search/_overview.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/smart_search/_scenes.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/smart_search/_scoring.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/tool_search_hint_middleware.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/tools_config_automations.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/tools_config_dashboards.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/tools_config_helpers.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/tools_config_scripts.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/tools_dashboard_screenshot.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/tools_voice_assistant.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/tools/validation_middleware.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/transforms/categorized_search.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/transforms/lite_docstrings.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp/utils/kill_signal_diagnostics.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp_dev.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{ha_mcp_dev-7.8.0.dev714 → ha_mcp_dev-7.8.1.dev715}/src/ha_mcp_dev.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|