# ha-direct MCP Tools Reference

Use these tools only when ha-direct specific features are needed (BPS, backup, python_transform).

## Automations
| Tool | Purpose |
|------|---------|
| `ha_config_get_automation` | Read automation config |
| `ha_config_set_automation` | Create/update automation |
| `ha_config_remove_automation` | Delete automation |
| `ha_get_automation_traces` | Debug automation execution |

## Scripts
| Tool | Purpose |
|------|---------|
| `ha_config_set_script` | Create/update script |

## Scenes
| Tool | Purpose |
|------|---------|
| `ha_config_get_scene` | Read scene config |
| `ha_config_set_scene` | Create/update scene |
| `ha_config_remove_scene` | Delete scene |

## Dashboards
| Tool | Purpose |
|------|---------|
| `ha_config_get_dashboard` | List/get/search dashboards |
| `ha_config_set_dashboard` | Create/update dashboard |
| `ha_config_delete_dashboard` | Delete dashboard |

## Entities
| Tool | Purpose |
|------|---------|
| `ha_get_entity` | Get entity registry info |
| `ha_set_entity` | Update entity properties |
| `ha_remove_entity` | Remove entity |

## Labels/Categories
| Tool | Purpose |
|------|---------|
| `ha_config_get_label` | List/get labels |
| `ha_config_set_label` | Create/update label |
| `ha_config_remove_label` | Delete label |
| `ha_config_get_category` | List/get categories |
| `ha_config_set_category` | Create/update category |
| `ha_config_remove_category` | Delete category |

## System
| Tool | Purpose |
|------|---------|
| `ha_reload_core` | Reload config without restart |
| `ha_manage_updates` | Manage system updates |
| `ha_get_overview` | System overview |
| `ha_get_skill_guide` | Best practices |
| `ha_report_issue` | File bug reports |

## Control
| Tool | Purpose |
|------|---------|
| `ha_call_service` | Call any HA service |
| `ha_call_event` | Fire custom event |

## Search
| Tool | Purpose |
|------|---------|
| `ha_search` | Search entities/configs |

## Notes
- Write tools require `BestPracticeKey` (read from `SKILL.md` first)
- Key rotates hourly, re-read for fresh key
- `python_transform` requires `config_hash` from GET call
