ha-mcp-dev 7.4.1.dev487__tar.gz → 7.4.1.dev488__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.4.1.dev487/src/ha_mcp_dev.egg-info → ha_mcp_dev-7.4.1.dev488}/PKG-INFO +1 -1
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/pyproject.toml +1 -1
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/tools_service.py +109 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488/src/ha_mcp_dev.egg-info}/PKG-INFO +1 -1
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/LICENSE +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/MANIFEST.in +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/README.md +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/setup.cfg +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/__init__.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/__main__.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/_pypi_marker +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/_version.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/auth/__init__.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/auth/consent_form.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/auth/provider.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/client/__init__.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/client/rest_client.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/client/supervisor_client.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/client/websocket_client.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/client/websocket_listener.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/config.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/errors.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/py.typed +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/resources/skills-vendor/.claude/settings.json +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/resources/skills-vendor/.claude-plugin/marketplace.json +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/resources/skills-vendor/.claude-plugin/plugin.json +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/resources/skills-vendor/.github/ISSUE_TEMPLATE/skill-rca.md +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/resources/skills-vendor/AGENTS.md +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/resources/skills-vendor/CLAUDE.md +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/resources/skills-vendor/CONTRIBUTING.md +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/resources/skills-vendor/README.md +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/evals/evals.json +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-patterns.md +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/server.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/settings_ui.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/smoke_test.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/__init__.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/backup.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/best_practice_checker.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/device_control.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/enhanced.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/helpers.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/reference_validator.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/registry.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/smart_search.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/tools_addons.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/tools_areas.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/tools_blueprints.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/tools_bug_report.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/tools_calendar.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/tools_camera.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/tools_categories.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/tools_code.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/tools_config_automations.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/tools_config_entry_flow.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/tools_energy.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/tools_entities.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/tools_filesystem.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/tools_groups.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/tools_hacs.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/tools_history.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/tools_integrations.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/tools_labels.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/tools_mcp_component.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/tools_registry.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/tools_resources.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/tools_search.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/tools_services.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/tools_system.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/tools_todo.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/tools_traces.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/tools_updates.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/tools_utility.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/tools_zones.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/util_helpers.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/transforms/__init__.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/transforms/categorized_search.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/utils/__init__.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/utils/config_hash.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/utils/data_paths.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/utils/domain_handlers.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/utils/fuzzy_search.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/utils/operation_manager.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/utils/python_sandbox.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/utils/usage_logger.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp_dev.egg-info/SOURCES.txt +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp_dev.egg-info/dependency_links.txt +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp_dev.egg-info/entry_points.txt +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp_dev.egg-info/requires.txt +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp_dev.egg-info/top_level.txt +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/tests/__init__.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/tests/test_constants.py +0 -0
- {ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/tests/test_env_manager.py +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "ha-mcp-dev"
|
|
7
|
-
version = "7.4.1.
|
|
7
|
+
version = "7.4.1.dev488"
|
|
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"
|
|
@@ -431,6 +431,115 @@ class ServiceTools:
|
|
|
431
431
|
)
|
|
432
432
|
return cast(dict[str, Any], result)
|
|
433
433
|
|
|
434
|
+
@tool(
|
|
435
|
+
name="ha_call_event",
|
|
436
|
+
tags={"Service & Device Control"},
|
|
437
|
+
annotations={
|
|
438
|
+
"destructiveHint": True,
|
|
439
|
+
"idempotentHint": False,
|
|
440
|
+
"title": "Call Event",
|
|
441
|
+
},
|
|
442
|
+
)
|
|
443
|
+
@log_tool_usage
|
|
444
|
+
async def ha_call_event(
|
|
445
|
+
self,
|
|
446
|
+
event_type: str,
|
|
447
|
+
data: str | dict[str, Any] | None = None,
|
|
448
|
+
) -> dict[str, Any]:
|
|
449
|
+
"""Execute a custom event on the Home Assistant event bus.
|
|
450
|
+
|
|
451
|
+
When NOT to use: for controlling entities (lights, switches, climate) — use
|
|
452
|
+
ha_call_service instead. For triggering automations by name, use
|
|
453
|
+
ha_call_service("automation", "trigger").
|
|
454
|
+
|
|
455
|
+
Use this to publish custom event types consumed by event-triggered automations,
|
|
456
|
+
Node-RED flows, or custom integrations that subscribe to specific event types.
|
|
457
|
+
|
|
458
|
+
Caveats: Events are fire-and-forget; this tool confirms the event was accepted
|
|
459
|
+
by the bus but does not verify whether any automation or subscriber acted on it.
|
|
460
|
+
"""
|
|
461
|
+
# Validate event_type before hitting the wire — empty strings or path separators
|
|
462
|
+
# produce malformed URLs at POST /api/events/{event_type}.
|
|
463
|
+
if not event_type or not event_type.strip():
|
|
464
|
+
raise_tool_error(
|
|
465
|
+
create_validation_error(
|
|
466
|
+
"event_type cannot be empty or whitespace",
|
|
467
|
+
parameter="event_type",
|
|
468
|
+
)
|
|
469
|
+
)
|
|
470
|
+
if "/" in event_type or "\\" in event_type:
|
|
471
|
+
raise_tool_error(
|
|
472
|
+
create_validation_error(
|
|
473
|
+
"event_type cannot contain path separators",
|
|
474
|
+
parameter="event_type",
|
|
475
|
+
details=f"Received: {event_type!r}",
|
|
476
|
+
)
|
|
477
|
+
)
|
|
478
|
+
|
|
479
|
+
parsed_data: dict[str, Any] | None = None
|
|
480
|
+
if data is not None:
|
|
481
|
+
raw: Any = None
|
|
482
|
+
try:
|
|
483
|
+
raw = parse_json_param(data, "data")
|
|
484
|
+
except ValueError as e:
|
|
485
|
+
raise_tool_error(
|
|
486
|
+
create_validation_error(
|
|
487
|
+
f"Invalid data parameter: {e}",
|
|
488
|
+
parameter="data",
|
|
489
|
+
invalid_json=True,
|
|
490
|
+
)
|
|
491
|
+
)
|
|
492
|
+
if raw is not None:
|
|
493
|
+
if not isinstance(raw, dict):
|
|
494
|
+
raise_tool_error(
|
|
495
|
+
create_validation_error(
|
|
496
|
+
"Event data must be a JSON object (dict)",
|
|
497
|
+
parameter="data",
|
|
498
|
+
details=f"Received type: {type(raw).__name__}",
|
|
499
|
+
)
|
|
500
|
+
)
|
|
501
|
+
parsed_data = raw
|
|
502
|
+
|
|
503
|
+
try:
|
|
504
|
+
response = await self._client.fire_event(event_type, parsed_data)
|
|
505
|
+
except HomeAssistantConnectionError as error:
|
|
506
|
+
if isinstance(error.__cause__, httpx.TimeoutException):
|
|
507
|
+
return {
|
|
508
|
+
"success": True,
|
|
509
|
+
"partial": True,
|
|
510
|
+
"event_type": event_type,
|
|
511
|
+
"message": (
|
|
512
|
+
f"Event {event_type} was dispatched but Home Assistant "
|
|
513
|
+
"did not respond within the timeout period."
|
|
514
|
+
),
|
|
515
|
+
"warning": (
|
|
516
|
+
"Response timed out. The event was dispatched and may still "
|
|
517
|
+
"have been delivered to subscribers."
|
|
518
|
+
),
|
|
519
|
+
}
|
|
520
|
+
exception_to_structured_error(
|
|
521
|
+
error,
|
|
522
|
+
context={"event_type": event_type},
|
|
523
|
+
suggestions=["Check Home Assistant connection"],
|
|
524
|
+
)
|
|
525
|
+
except ToolError:
|
|
526
|
+
raise
|
|
527
|
+
except Exception as e:
|
|
528
|
+
exception_to_structured_error(
|
|
529
|
+
e,
|
|
530
|
+
context={"event_type": event_type},
|
|
531
|
+
suggestions=[
|
|
532
|
+
"Check Home Assistant connection",
|
|
533
|
+
"Verify event_type is a valid identifier",
|
|
534
|
+
],
|
|
535
|
+
)
|
|
536
|
+
|
|
537
|
+
return {
|
|
538
|
+
"success": True,
|
|
539
|
+
"event_type": event_type,
|
|
540
|
+
"message": response.get("message", f"Event {event_type} fired."),
|
|
541
|
+
}
|
|
542
|
+
|
|
434
543
|
|
|
435
544
|
def register_service_tools(mcp: Any, client: Any, **kwargs: Any) -> None:
|
|
436
545
|
"""Register service call and operation monitoring tools with the MCP server."""
|
|
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
|
|
File without changes
|
{ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/resources/skills-vendor/AGENTS.md
RENAMED
|
File without changes
|
{ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/resources/skills-vendor/CLAUDE.md
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/resources/skills-vendor/LICENSE
RENAMED
|
File without changes
|
{ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/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
|
{ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/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
|
|
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.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/tools_config_automations.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/tools_config_dashboards.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/tools_config_entry_flow.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/tools_config_helpers.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/tools_config_scripts.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
|
{ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/tools/tools_voice_assistant.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/transforms/categorized_search.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp/utils/kill_signal_diagnostics.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/src/ha_mcp_dev.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{ha_mcp_dev-7.4.1.dev487 → ha_mcp_dev-7.4.1.dev488}/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
|