Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add instructions/ganhammar/hass-mcp-server/agents-mdgit clone --depth 1 https://github.com/ganhammar/hass-mcp-serverWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/instructions/ganhammar/hass-mcp-server/agents-md)<a href="https://agentmods.dev/instructions/ganhammar/hass-mcp-server/agents-md"><img src="https://agentmods.dev/badge/instructions/ganhammar/hass-mcp-server/agents-md.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00863 | $0.00863 |
| Opus 5 | $0.00432 | $0.00432 |
| Sonnet 5 | $0.00173 | $0.00173 |
| Haiku 4.5 | $0.00086 | $0.00086 |
Grade A, and why
hass-mcp-server AGENTS.md scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 72 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Working on this integration
Calling into Home Assistant
Tools live in custom_components/mcp_server_http_transport/tools/. Most reach into
Home Assistant, and not every reach carries the same risk. Three categories, and
they are easy to confuse because they all look like homeassistant.components.*:
- Entity platform contracts. Methods declared on an entity base class that
every integration on that platform implements:
CalendarEntity.async_get_events,async_turn_on, and so on. Safe to call. Home Assistant's own services and REST views are thin wrappers over them. - Cross-integration internals. Module-level functions imported out of another
integration, such as
recorder.statistics.statistics_during_period. No compatibility promise, no deprecation cycle. Prefer a service call. hass.data[DATA_*]lookups. Unsupported, and usually the only way to resolve an entity object. Guard for the component being absent.
Before replacing a private call with a service
Read the handler in core to the end. Three things have to hold, and each has bitten this repo:
The fields. Services routinely return less than the method they wrap.
calendar.get_events filters events through LIST_EVENT_FIELDS and drops uid,
rrule and recurrence_id, which the calendar tools need, so it is not a
substitute for async_get_events.
The response shape. A plain service returns whatever its handler returns, which
is often an envelope rather than the payload. recorder.get_statistics returns
{"statistics": {statistic_id: [rows]}}, not rows keyed by ID. Entity services are
the ones keyed by entity ID, and that keying is added by the helper, not the
handler. Getting this wrong fails silently: the lookup misses and the tool reports
no data rather than an error.
The version it landed in. A service is only supported API on versions that have
it. recorder.get_statistics arrived in 2025.6 and raises ServiceNotFound on
anything older. Check the oldest HA in the CI matrix in .github/workflows/main.yml
before assuming a service is reachable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- yesterday Changed · +16 lines · +227 tokens per session d4b78ce66f21
- 5d ago First seen · 56 lines · 636 tokens per session scan A 1ce697ddeee7
hass-mcp-server AGENTS.md is an instructions file published in the GitHub repository ganhammar/hass-mcp-server (69 stars, last pushed today), licensed MIT. It adds 863 tokens to every session, about $0.0043 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other instructions, from other repositories
hass-mcp CLAUDE.md
Instructions for czechbol/hass-mcp, covering claude.md, what this is, commands, architecture and adding a tool.
ha-selora-ai CLAUDE.md
Claude Code instructions for SeloraHomes/ha-selora-ai, covering selora ai — home assistant integration, what this is, architecture, project structure and key conventions.
ecowitt_local CLAUDE.md
Claude Code instructions for alexlenk/ecowitt_local, covering claude.md, project overview, ⚠️ critical: entity creation pipeline issues, development commands and local environment.
hac-mcp AGENTS.md
AGENTS.md instructions for lemanjo/hac-mcp, a project described as: Safety-first administrative MCP server for Home Assistant.
OVO_Aus_api CLAUDE.md
Claude Code instructions for HallyAus/OVO_Aus_api, a project described as: Home Assistant custom integration for OVO Energy Australia - solar, grid, export, rate breakdowns, and analytics.
ha-mcp AGENTS.md
AGENTS.md instructions for homeassistant-ai/ha-mcp, covering agents.md, instruction structure, repository structure, worktree workflow and project overview.