|
731 | 731 | }, |
732 | 732 | { |
733 | 733 | "name": "ha_get_device", |
734 | | - "title": "Get Device", |
735 | | - "description": "Get device information - list all devices or get details for a specific one.\n\nWithout device_id/entity_id: Lists all devices with optional filters.\nWith device_id or entity_id: Returns detailed info for that specific device.\n\n**List all devices:**\n- All devices: ha_get_device()\n- By area: ha_get_device(area_id=\"living_room\")\n- By manufacturer: ha_get_device(manufacturer=\"Philips\")\n- By integration: ha_get_device(integration=\"zigbee2mqtt\")\n- Combined filters: ha_get_device(integration=\"zha\", area_id=\"kitchen\")\n\n**Single device lookup:**\n- By device_id: ha_get_device(device_id=\"abc123\")\n- By entity_id: ha_get_device(entity_id=\"light.living_room\")\n\n**Zigbee automation tips:**\n- ZHA triggers: Use `ieee_address` for zha_event triggers\n- Z2M triggers: Use `friendly_name` for MQTT topics (zigbee2mqtt/{friendly_name}/action)\n\n**Returns (list mode):**\n- List of devices with device_id, name, manufacturer, model, area_id\n\n**Returns (single device):**\n- Full device details including integration_type, ieee_address, entities", |
| 734 | + "title": "Get Device (incl. Zigbee/ZHA/Z2M and Z-Wave)", |
| 735 | + "description": "Get device information, including Zigbee (ZHA/Z2M) and Z-Wave JS devices with protocol-specific details.\n\nWithout device_id/entity_id: Lists all devices with optional filters.\nWith device_id or entity_id: Returns detailed info for that specific device.\n\n**List all devices:**\n- All devices: ha_get_device()\n- By area: ha_get_device(area_id=\"living_room\")\n- By manufacturer: ha_get_device(manufacturer=\"Philips\")\n- By integration: ha_get_device(integration=\"zigbee2mqtt\")\n- Combined filters: ha_get_device(integration=\"zha\", area_id=\"kitchen\")\n\n**Single device lookup:**\n- By device_id: ha_get_device(device_id=\"abc123\")\n- By entity_id: ha_get_device(entity_id=\"light.living_room\")\n\n**Zigbee device support:**\n- Use integration=\"zha\" or integration=\"zigbee2mqtt\" to list Zigbee devices\n- Returns ieee_address, integration_type, and radio metrics (LQI/RSSI) for ZHA devices\n- ZHA triggers: Use `ieee_address` for zha_event triggers\n- Z2M triggers: Use `friendly_name` for MQTT topics (zigbee2mqtt/{friendly_name}/action)\n\n**Z-Wave JS device support:**\n- Use integration=\"zwave_js\" to list Z-Wave devices\n- Returns node_id extracted from device identifiers\n- Single device lookup includes node_status (security class, routing, Z-Wave+ version)\n\n**Returns (list mode):**\n- List of devices with device_id, name, manufacturer, model, area_id\n\n**Returns (single device):**\n- Full device details including integration_type, ieee_address/node_id, radio_metrics/node_status, entities", |
736 | 736 | "inputSchema": { |
737 | 737 | "properties": { |
738 | 738 | "device_id": { |
|
744 | 744 | "default": null |
745 | 745 | }, |
746 | 746 | "integration": { |
747 | | - "type": "Annotated[str | None, Field(description=\"Filter devices by integration: 'zha', 'zigbee2mqtt', 'mqtt', 'hue', etc.\", default=None)]", |
| 747 | + "type": "Annotated[str | None, Field(description=\"Filter devices by integration: 'zha', 'zigbee2mqtt', 'zwave_js', 'mqtt', 'hue', etc.\", default=None)]", |
748 | 748 | "default": null |
749 | 749 | }, |
750 | 750 | "area_id": { |
|
762 | 762 | "readOnlyHint": true |
763 | 763 | }, |
764 | 764 | "tags": [ |
765 | | - "Device Registry" |
| 765 | + "Device Registry", |
| 766 | + "Z-Wave", |
| 767 | + "Zigbee" |
766 | 768 | ], |
767 | 769 | "source_file": "tools_registry.py" |
768 | 770 | }, |
|
1671 | 1673 | "source_file": "tools_history.py" |
1672 | 1674 | }, |
1673 | 1675 | { |
1674 | | - "name": "ha_get_logbook", |
1675 | | - "title": "Get Logbook Entries", |
1676 | | - "description": "Get Home Assistant logbook entries for the specified time period.\n\nReturns paginated logbook entries to prevent excessively large responses.\n\n**Parameters:**\n- hours_back: Number of hours to look back (default: 1)\n- entity_id: Optional entity ID to filter entries\n- end_time: Optional end time in ISO format (defaults to now)\n- limit: Maximum number of entries to return (default: 50, max: 500)\n- offset: Number of entries to skip for pagination (default: 0)\n- compact: Return only essential fields per entry (default: True).\n When True, each entry contains only: when, entity_id, state, name, message, domain, context_id.\n Set to False to include full attribute dictionaries and all fields.\n\n**Pagination:**\nWhen the logbook has more entries than the limit, use offset to get\nadditional pages. The response includes `has_more` to indicate if\nmore entries are available.\n\n**IMPORTANT - Pagination Stability:**\nPagination is performed client-side on the full result set returned\nby Home Assistant. If new logbook entries are created between page\nrequests, results may shift and items could be missed or duplicated\nacross pages. For best results, use consistent time ranges (start/end)\nand retrieve pages in quick succession.\n\n**Example:**\n- First page: ha_get_logbook(hours_back=24, limit=50, offset=0)\n- Second page: ha_get_logbook(hours_back=24, limit=50, offset=50)\n- Full details: ha_get_logbook(hours_back=1, compact=False)", |
| 1676 | + "name": "ha_get_logs", |
| 1677 | + "title": "Get Logs", |
| 1678 | + "description": "Get Home Assistant logs from various sources.\n\n**Sources:**\n- \"logbook\" (default): Entity state change history with pagination\n- \"system\": Structured system log entries (errors, warnings) via system_log/list\n- \"error_log\": Raw home-assistant.log text\n- \"supervisor\": Add-on container logs (requires slug parameter)\n\n**Shared params:** limit, search (keyword filter on entries/lines)\n**Logbook params:** hours_back, entity_id, end_time, offset, compact (default True — strips attribute dicts to save context)\n**System/error_log params:** level (ERROR, WARNING, INFO, DEBUG)\n**Supervisor params:** slug (add-on slug, e.g. \"core_mosquitto\")", |
1677 | 1679 | "inputSchema": { |
1678 | 1680 | "properties": { |
| 1681 | + "source": { |
| 1682 | + "type": "Literal['logbook', 'system', 'error_log', 'supervisor']", |
| 1683 | + "default": "logbook" |
| 1684 | + }, |
| 1685 | + "limit": { |
| 1686 | + "type": "int | str | None", |
| 1687 | + "default": null |
| 1688 | + }, |
| 1689 | + "search": { |
| 1690 | + "type": "str | None", |
| 1691 | + "default": null |
| 1692 | + }, |
1679 | 1693 | "hours_back": { |
1680 | 1694 | "type": "int | str", |
1681 | 1695 | "default": 1 |
|
1688 | 1702 | "type": "str | None", |
1689 | 1703 | "default": null |
1690 | 1704 | }, |
1691 | | - "limit": { |
1692 | | - "type": "int | str | None", |
1693 | | - "default": null |
1694 | | - }, |
1695 | 1705 | "offset": { |
1696 | 1706 | "type": "int | str", |
1697 | 1707 | "default": 0 |
1698 | 1708 | }, |
1699 | 1709 | "compact": { |
1700 | 1710 | "type": "bool | str", |
1701 | 1711 | "default": true |
| 1712 | + }, |
| 1713 | + "level": { |
| 1714 | + "type": "str | None", |
| 1715 | + "default": null |
| 1716 | + }, |
| 1717 | + "slug": { |
| 1718 | + "type": "str | None", |
| 1719 | + "default": null |
1702 | 1720 | } |
1703 | 1721 | } |
1704 | 1722 | }, |
|
2139 | 2157 | { |
2140 | 2158 | "name": "ha_get_overview", |
2141 | 2159 | "title": "Get System Overview", |
2142 | | - "description": "Get AI-friendly system overview with intelligent categorization.\n\nReturns comprehensive system information at the requested detail level,\nincluding Home Assistant base_url, version, location, timezone, entity overview,\nand active persistent notifications (if any).\nDefault is 'minimal' — use this unless you specifically need all entities.", |
| 2160 | + "description": "Get AI-friendly system overview with intelligent categorization.\n\nReturns comprehensive system information at the requested detail level,\nincluding Home Assistant base_url, version, location, timezone, entity overview,\nand active persistent notifications (if any).\nUse 'minimal' (default) for most queries. Domain counts and states_summary\nare always complete regardless of entity pagination.\nStandard/full modes paginate entities (default 200 per page) — use offset\nto fetch more. Use 'domains' filter to narrow scope.", |
2143 | 2161 | "inputSchema": { |
2144 | 2162 | "properties": { |
2145 | 2163 | "detail_level": { |
2146 | | - "type": "Annotated[Literal['minimal', 'standard', 'full'], Field(default='minimal', description=\"'minimal': 10 entities per domain sample (default); 'standard': ALL entities per domain (friendly_name only); 'full': ALL entities with entity_id + friendly_name + state + system_info\")]", |
| 2164 | + "type": "Annotated[Literal['minimal', 'standard', 'full'], Field(default='minimal', description=\"'minimal': 10 entities/domain, top-5 states (default); 'standard': 200 entities/page, top-10 states (use offset for more); 'full': 200 entities/page + entity_id + state + full states. Use 'domains', 'limit', or max_entities_per_domain to control size\")]", |
2147 | 2165 | "default": "minimal" |
2148 | 2166 | }, |
| 2167 | + "domains": { |
| 2168 | + "type": "Annotated[str | list[str] | None, Field(default=None, description=\"Filter to specific domains (e.g. 'light,sensor' or ['light','sensor']). None = all domains. Useful to avoid context window overload.\")]", |
| 2169 | + "default": null |
| 2170 | + }, |
| 2171 | + "limit": { |
| 2172 | + "type": "Annotated[int | str | None, Field(default=None, description='Max total entities across all domains (default: unlimited for minimal, 200 for standard/full). Counts and states always complete. Use with offset for pagination.')]", |
| 2173 | + "default": null |
| 2174 | + }, |
| 2175 | + "offset": { |
| 2176 | + "type": "Annotated[int | str, Field(default=0, description='Number of entities to skip for pagination (default: 0)')]", |
| 2177 | + "default": 0 |
| 2178 | + }, |
2149 | 2179 | "max_entities_per_domain": { |
2150 | | - "type": "Annotated[int | None, Field(default=None, description='Override max entities per domain (None = all). Minimal defaults to 10.')]", |
| 2180 | + "type": "Annotated[int | None, Field(default=None, description='Override default entity cap per domain (minimal=10, standard/full=unlimited). 0 = no limit on entities or states.')]", |
2151 | 2181 | "default": null |
2152 | 2182 | }, |
2153 | 2183 | "include_state": { |
|
2486 | 2516 | }, |
2487 | 2517 | { |
2488 | 2518 | "name": "ha_get_system_health", |
2489 | | - "title": "Get System Health", |
2490 | | - "description": "Get Home Assistant system health information.\n\nReturns health check results from integrations, system resources, and connectivity.\nAvailable information varies by installation type and loaded integrations.", |
2491 | | - "inputSchema": {}, |
| 2519 | + "title": "Get System Health (incl. ZHA/Z-Wave diagnostics)", |
| 2520 | + "description": "Get Home Assistant system health, including Zigbee (ZHA) and Z-Wave JS network diagnostics.\n\nReturns health check results from integrations, system resources, and connectivity.\nAvailable information varies by installation type and loaded integrations.\n\n**Parameters:**\n- include: Optional comma-separated list of additional data to include.\n - \"repairs\": Repair items from Settings > System > Repairs\n - \"zha_network\": ZHA Zigbee devices with radio signal summary (name, LQI, RSSI)\n - \"zha_network_full\": ZHA Zigbee devices with all device details (can be large on 100+ device networks; prefer \"zha_network\" for summary)\n - \"zwave_network\": Z-Wave JS network status and node summary (status, security, routing)\n - Example: include=\"repairs,zha_network,zwave_network\"", |
| 2521 | + "inputSchema": { |
| 2522 | + "properties": { |
| 2523 | + "include": { |
| 2524 | + "type": "str | None", |
| 2525 | + "default": null |
| 2526 | + } |
| 2527 | + } |
| 2528 | + }, |
2492 | 2529 | "annotations": { |
2493 | 2530 | "idempotentHint": true, |
2494 | 2531 | "readOnlyHint": true |
2495 | 2532 | }, |
2496 | 2533 | "tags": [ |
2497 | | - "System" |
| 2534 | + "System", |
| 2535 | + "Z-Wave", |
| 2536 | + "Zigbee" |
2498 | 2537 | ], |
2499 | 2538 | "source_file": "tools_system.py" |
2500 | 2539 | }, |
|
0 commit comments