Skip to main content
Glama
aderik

ha-automation-mcp

by aderik

ha-automation-mcp

Deprecated. Since v1.1.0 the Home Assistant Automation API integration serves the same 58 tools itself, over Streamable HTTP at /api/automation_api/mcp. Point your MCP client there; this standalone server is no longer maintained.

MCP server for the Home Assistant Automation API custom integration. It exposes the integration's REST API as MCP tools, so an AI agent can manage Home Assistant without anyone pasting YAML:

  • automations: list, read (live state and YAML), create/update, delete, trigger

  • managed package: helpers (input_*), template entities, history_stats sensors, notify groups

  • Lovelace dashboards: dashboards, views and cards

  • registries: entities, devices, config entries (reload / enable / disable / remove)

  • recorder history, reload and restart

  • native HA: entity state and service calls

Requirements

  • Home Assistant with the automation_api integration (>= 1.0.0) installed via HACS

  • A long-lived access token of an administrator (profile → Security)

  • For the managed package tools, packages enabled in configuration.yaml:

    homeassistant:
      packages: !include_dir_named packages

Related MCP server: Home Assistant MCP Server (HA-mcp)

Configuration

Variable

Required

Description

HA_URL

yes

Base URL, e.g. http://homeassistant.local:8123

HA_TOKEN

yes

Long-lived access token of an administrator, used for every call

Install and run

The server speaks MCP over stdio. Install it as a tool with uv:

uv tool install git+https://github.com/aderik/ha-automation-mcp

That puts ha-automation-mcp on your PATH. To run it without installing:

uvx --from git+https://github.com/aderik/ha-automation-mcp ha-automation-mcp

Claude Code

claude mcp add ha-automation -s user \
  -e HA_URL=http://homeassistant.local:8123 \
  -e HA_TOKEN=... \
  -- ha-automation-mcp

LogicForce

Under Settings → MCP connections:

Field

Value

Name

ha-automation

Transport

stdio

Command

uvx

Arguments

["--from", "git+https://github.com/aderik/ha-automation-mcp@v1.0.0", "ha-automation-mcp"]

Secrets

{"HA_URL": "http://<ha-host>:8123", "HA_TOKEN": "..."}

The first start in a container downloads Python and the server (about half a minute); LogicForce allows for that, and later starts are cached. To upgrade, change the tag in the arguments.

Available Tools

58 tools
append_dashboard_cardC

Append a card to the given view.

card is any valid Lovelace card config (e.g. {"type": "entities", ...}).

ParametersJSON Schema
NameRequiredDescriptionDefault
cardYes
url_pathYes
view_indexYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It mentions 'Append' which implies a mutation, but says nothing about required permissions, whether the dashboard must exist, whether append is idempotent, or what happens on failure. The fact that it can be a nested card config is mentioned, but that is parameter info rather than behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very short, front-loaded with the action. The example for card adds some clarity without bloat. No wasted sentences, though the example might be marginally over-specific given the schema already implies an object.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with 3 required params, no annotations, no output schema, and no parameter guidance, this is incomplete. It does not explain what view_index refers to, whether the dashboard must be loaded, or what constitutes a valid card beyond an example.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It only explains the 'card' parameter loosely with an example, and does nothing for 'url_path' or 'view_index' – leaving 2 of 3 parameters completely undocumented. With 0% coverage, this is a significant gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (append) and resource (card to a view). It is reasonably distinguishable from replace_dashboard_card and set_dashboard_config by the 'append' verb, but it does not explicitly name the alternatives or scope like the calibration example did.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus replace_dashboard_card, delete_dashboard_card, or set_dashboard_config. There are no prerequisites or context notes about what 'view_index' refers to or which dashboard is being targeted.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

append_dashboard_viewC

Append a view to a dashboard.

A view looks like:: {"title": "Moestuin", "path": "moestuin", "icon": "mdi:sprout", "cards": [ ... ]}

ParametersJSON Schema
NameRequiredDescriptionDefault
viewYes
url_pathYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It only signals a mutation via 'append' and shows a sample view shape; it says nothing about permissions, ordering/index behavior, what happens to existing views, or failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action in the first sentence and follows with a single illustrative example; nothing is wasted. The '::' punctuation is awkward but does not impede comprehension.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A mutation tool with no annotations, no output schema, and 0% parameter description coverage needs more than this. The view example is helpful, but url_path, return behavior, and error handling are all absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the schema does not help. The description partially compensates by giving a concrete example of the free-form 'view' object (title/path/icon/cards), but it gives no explanation of 'url_path' at all, leaving one of two required parameters fully opaque.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('append'), resource ('view'), and target ('dashboard'), so an agent can immediately grasp the operation. It implicitly differs from siblings like replace_dashboard_view and delete_dashboard_view via the verb, but never names those alternatives explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The verb 'append' weakly implies a use case (adding rather than replacing a view), but there is no explicit when-to-use guidance, no mention of prerequisites, and no comparison to replace_dashboard_view, set_dashboard_config, or create_dashboard.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

call_serviceC

Call any Home Assistant service via the native REST API.

Example: domain='light', service='turn_on', data={'entity_id': 'light.kitchen', 'brightness': 200}.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataNo
domainYes
serviceYes

TDQS

C2.5/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations provided, so the description must carry the full behavioral burden. It does not disclose any behavioral traits beyond the basic action: no mention of side effects, required permissions, rate limits, error handling, or what happens on success/failure. For a generic service-calling tool that could trigger arbitrary actions (lights, locks, etc.), this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is brief and front-loaded with the core action, followed by an example. It is efficient and contains no extraneous information. The example is useful and concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (a generic tool that can call any service) and the lack of annotations, output schema, and parameter documentation, the description is incomplete. It should explain more about the expected format of 'data', what domains/services are available, and any safety considerations. The example helps but doesn't compensate for the missing guidance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, meaning none of the parameters are documented in the schema. The description includes an example that shows the format of domain, service, and data, which adds some meaning. However, it doesn't explain that 'data' should contain service-specific parameters or that it's optional, leaving ambiguity for the agent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Call any Home Assistant service via the native REST API'), which is a specific verb and resource. It distinguishes itself from siblings like list_automations or get_state, which are more specific. However, it doesn't explicitly mention what makes it different from other generic tools, but the purpose is understandable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not state when it should be used, what prerequisites exist, or what alternatives exist. The example shows how to invoke it but not when.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_dashboardA

Create a new storage-mode Lovelace dashboard.

The dashboard is immediately visible under Settings → Dashboards and at /lovelace-<url_path>. It starts empty; add views and cards separately.

Args: url_path: URL slug — e.g. 'moestuin' yields /lovelace-moestuin. title: Sidebar title. icon: MDI icon, e.g. 'mdi:sprout'. show_in_sidebar: Whether to show in the left sidebar. require_admin: Admin‑only access.

ParametersJSON Schema
NameRequiredDescriptionDefault
iconNo
titleYes
url_pathYes
require_adminNo
show_in_sidebarNo

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full behavioral burden. It discloses that creation is storage-mode, the dashboard is immediately visible, it starts empty, and the URL pattern. It omits important mutation details such as duplicate url_path handling, required permissions beyond the parameter, and return behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the purpose, then adds two useful behavioral sentences, then a clean Args block. Every sentence and parameter entry serves a clear purpose with no wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a 5-param creation tool with no annotations and no output schema, the description covers purpose, URL behavior, empty-start state, and all parameters. It could optionally mention duplicate handling or permission requirements, but is largely complete for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It gives meaningful semantics for all five parameters, including concrete examples for url_path ('moestuin' yields /lovelace-moestuin) and icon ('mdi:sprout'), and clarifies title, show_in_sidebar, and require_admin.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Create a new storage-mode Lovelace dashboard') and adds immediate visibility and empty-start behavior. It distinguishes itself from sibling dashboard tools like update_dashboard_metadata and set_dashboard_config by being the creation operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides implied usage by noting the dashboard starts empty and that views and cards must be added separately, steering the agent to append/replace view and card tools afterward. However, it does not explicitly state when to use this versus update_dashboard_metadata or set_dashboard_config, nor does it list exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_or_update_automationB

Create or update an automation (written to automations.yaml + reloaded).

Args: id: Stable slug (no 'automation.' prefix), e.g. 'living_room_lights_on'. name: Friendly name shown in the UI. trigger: List of HA trigger dicts. action: List of HA action dicts. condition: Optional list of HA condition dicts. description: Free-form description. mode: HA mode — 'single', 'restart', 'queued', or 'parallel'.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
modeNosingle
nameYes
actionYes
triggerYes
conditionNo
descriptionNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does disclose the key side effect: writes to automations.yaml and triggers a reload. However, it doesn't say whether this overwrites an existing automation with the same id, whether it requires specific permissions, whether the reload can fail, or what happens on invalid trigger/action structures.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The tool line is front-loaded and the Args section is terse and well-organized. Each line adds information. The only minor issue is the leading double quote in the description, which is a formatting artifact rather than prose waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-param mutation tool with no annotations, no output schema, and 0% schema coverage, the description covers the basics but omits critical behavioral details: overwrite semantics, permission requirements, and the expected schema for trigger/action/condition dicts. An agent could invoke it but might not know the full consequences or correct nested formats.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It does document all 7 parameters with meaningful semantics: id format and example, name mapping to UI, trigger/action/condition as HA dicts, description free-form, and mode enum values. This is useful, but it does not explain the structure expected inside trigger/action/condition dicts, leaving a significant gap for the most complex parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear compound verb and resource: 'Create or update an automation'. The parenthetical '(written to automations.yaml + reloaded)' specifies the storage mechanism and side effect. It does not explicitly distinguish from siblings like delete_automation or trigger_automation, but the verb and noun make the scope obvious.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance is given. The description does not say when to choose this over delete_automation, trigger_automation, or the dashboard/config tools. It also doesn't indicate whether this is safe for existing automations or whether it overwrites conflicts.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_automationB

Delete an automation by id (removes it from automations.yaml).

ParametersJSON Schema
NameRequiredDescriptionDefault
automation_idYes

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It does add one concrete detail beyond the name: the removal happens in automations.yaml, implying a persistent config mutation rather than a transient state change. However, it omits irreversibility, permission requirements, and error behavior for unknown ids.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short sentence with the core action front-loaded and a parenthetical adding file-level context. It is efficient, though the terse parenthetical is the only added information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, single-parameter tool with no annotations and no output schema, the description minimally covers what happens and where. It leaves out whether deletion is reversible, whether a reload or restart is needed for the change to take effect, and what happens on an invalid id.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the single parameter is only referenced as 'by id', which adds no meaning beyond the schema's own 'Automation Id' title. No format, example, or lookup source is given for obtaining a valid automation_id.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Delete an automation by id') and names the identifying argument, which clearly separates it from get_automation, create_or_update_automation, and trigger_automation. It stops short of explicitly differentiating from sibling deletion-style tools, but the purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus alternatives, no prerequisites (e.g. whether the automation must be disabled first), and no exclusions or warnings about irreversibility. The name makes the general intent obvious, but the description provides no usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_dashboardA

Delete a custom dashboard. The default Overview cannot be deleted.

ParametersJSON Schema
NameRequiredDescriptionDefault
url_pathYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses the meaningful protection constraint on the Overview dashboard, but says nothing about irreversibility, required permissions, or what happens to contained views/cards. A destructive tool with zero annotation coverage warrants more disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short, front-loaded sentences with no filler; the core action comes first and the constraint second. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter delete with no output schema and no annotations, the description covers the action and one guardrail. It is adequate but leaves irreversibility, permissions, and the identifier's semantics unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single required parameter url_path has 0% schema description coverage, and the description never explains what it identifies or its format. With only one parameter, the description should have compensated for the documentation gap but does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Delete a custom dashboard') and scopes it with 'custom', which implicitly separates it from the sibling delete_dashboard_view and delete_dashboard_card operations. An agent can identify the target resource without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a clear when-not condition: the default Overview dashboard cannot be deleted. It stops short of naming alternatives (e.g., delete_dashboard_view for removing views) or stating prerequisites, so it is clear but not fully routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_dashboard_cardC

Delete a specific card from a view.

ParametersJSON Schema
NameRequiredDescriptionDefault
url_pathYes
card_indexYes
view_indexYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. 'Delete' signals a destructive/irreversible mutation, but nothing is said about persistence, permission requirements, or whether removing a card reindexes subsequent cards – all important for a mutation tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence with no filler and the key action front-loaded. Its brevity is not the problem; the missing detail is, which is penalized elsewhere.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-required-param destructive tool with no annotations, no output schema, and 0% schema coverage, the description supplies almost nothing. An agent cannot confidently invoke it without knowing what url_path, view_index, and card_index refer to.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description adds no parameter meaning. It gestures at 'card' and 'view', loosely mapping to card_index and view_index, but never explains index base (0-based?), whether url_path is a dashboard identifier, or valid ranges.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Delete) and resource (card from a view), which is enough to distinguish it from append_dashboard_card and replace_dashboard_card. It stops short of naming the sibling it complements or clarifying scope beyond 'a view'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no mention of prerequisites (e.g. needing the dashboard config loaded), and no reference to alternatives like replace_dashboard_card or delete_dashboard_view. The agent must infer context entirely from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_dashboard_viewC

Delete the view at the given index.

ParametersJSON Schema
NameRequiredDescriptionDefault
url_pathYes
view_indexYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden, yet it says nothing about irreversibility, whether remaining view indices shift after deletion, required permissions, or error behavior for an out-of-range index. 'Delete' implies mutation, but that is the only behavioral signal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single clean, front-loaded sentence with no filler. The problem is under-specification rather than verbosity, so the brevity does not earn a top score for structure alone.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, index-addressed mutation with no annotations, no output schema, and 0% schema coverage, the definition leaves critical gaps: which dashboard is targeted, index conventions, and what happens to sibling views after deletion.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so both parameters are undocumented in structured form. The phrase 'at the given index' loosely maps to view_index but gives no guidance on valid ranges or base (0- vs 1-indexed), and url_path is entirely unexplained — is it the dashboard slug, route, or full URL?

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Delete the view'), so an agent can tell it targets a dashboard view rather than a dashboard or card. However, it never differentiates itself from siblings like delete_dashboard, delete_dashboard_card, or replace_dashboard_view, and it doesn't say which dashboard family it belongs to beyond generic 'view'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisite (e.g. needing a prior get_dashboard_config to know valid indices), and no mention of alternatives such as replace_dashboard_view or delete_dashboard. The agent must infer usage entirely from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_deviceA

Remove a device from the registry. Cascades to all entities of that device. The owning integration may re-add it on next discovery.

ParametersJSON Schema
NameRequiredDescriptionDefault
device_idYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden and does well: it discloses the destructive blast radius ('Cascades to all entities of that device') and the important non-permanence trait that discovery may re-add the device. It stops short of permissions, confirmation, or reversibility details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the core action and immediately followed by the two consequences that matter. No filler or restatement of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-annotation, no-output-schema delete tool, the cascade and re-add behavior are exactly the behavioral facts an agent needs. Missing only auth/permission requirements and explicit confirmation guidance, which keeps it short of full completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single device_id parameter, so the description technically should compensate, but it adds nothing about identifier format or source. Given only one self-evident parameter, this is a minor gap rather than a harmful one.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb+resource+scope: 'Remove a device from the registry'. This separates it cleanly from siblings like delete_registry_entity, update_device, and list_devices without requiring the agent to open any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied (remove a registered device), and the note that 'the owning integration may re-add it on next discovery' is a useful caveat for deciding whether deletion is worthwhile. However, it never states when to prefer this over alternatives such as disabling the config entry or deleting the registry entity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_helperC

Delete a helper from the managed package and reload the domain.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYes
helper_idYes

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does disclose an important side effect — the domain is reloaded after deletion. However, it omits whether the helper must be unused, whether deletion is reversible, what permissions are required, and what happens on failure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no waste — action, target, and side effect in one pass. It is appropriately sized, though it leans on brevity at the cost of completeness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, zero-annotation tool with undocumented required parameters and no output schema, the description is thin. It covers the action and one side effect but leaves permissions, preconditions, and parameter meaning unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and both required parameters (domain, helper_id) have no descriptions. The description mentions 'helper' and 'domain' only implicitly, adding no format, ID conventions, or lookup semantics to compensate for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Delete a helper') plus a side effect ('reload the domain'), which distinguishes it from upsert_helper/list_helpers/get_helper in the sibling set. It is clear, though it does not explicitly name which siblings it is not.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus upsert_helper or delete_template_entity/delete_history_stats_sensor, and no prerequisites or exclusions. The agent must infer usage entirely from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_history_stats_sensorB

Delete a history_stats sensor (HA restart required).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description carries full burden. It discloses a key behavioral trait—that an HA restart is required after deletion—which is valuable. However, it omits permissions, reversibility, and consequences beyond deletion.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One efficient sentence, front-loaded with the action and a parenthetical operational note. No waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple delete tool with one parameter, the description covers the action and the restart requirement, which are the most critical points. However, without annotations or schema descriptions, it leaves the parameter semantics and any other behavioral details (e.g., permissions) unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% with one required parameter 'name' and no description in the schema. The description never mentions the parameter or clarifies its format or source, so it fails to compensate for the coverage gap. Score 2 because 'name' is somewhat self-explanatory from the tool's purpose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (delete) and resource (history_stats sensor), clearly distinguishing it from sibling operations like upsert/get/list for the same resource. However, it doesn't explicitly name any alternative, so it's a 4 rather than a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no alternatives, no preconditions mentioned. The description only states what it does and that a restart is required.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_notify_groupB

Delete a notify group (HA restart required).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It discloses one genuinely valuable trait — that an HA restart is required — but omits reversibility, required permissions, behavior when the named group does not exist, and whether the restart is immediate or deferred.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with the operative verb first and the operational caveat second. No filler, nothing to trim.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter destructive tool with no output schema, the description covers the action and one critical side effect but says nothing about failure modes, permanence of the deletion, or the practical consequence of the restart requirement. Adequate but with clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single required parameter "name" has 0% schema description coverage and is never mentioned in the description. The meaning is inferable from the tool purpose, but neither the schema nor the description clarifies format, matching rules, or whether it is a display name or an internal identifier.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Delete a notify group"), which is unambiguous and clearly distinct from the sibling upsert_notify_group. It does not explicitly name or contrast siblings, but the delete semantics make the boundary self-evident.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The parenthetical "(HA restart required)" gives an important prerequisite/postcondition, which is more than many siblings provide. However, it offers no guidance on when to use this versus alternatives like upsert_notify_group or whether pre-checks (e.g., group in use) are needed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_registry_entityA

Remove an entity from the registry. Active integrations may re-add it on reload — use delete_device or remove_config_entry instead if the entity belongs to a still-active integration.

ParametersJSON Schema
NameRequiredDescriptionDefault
entity_idYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden, and it does disclose a genuinely non-obvious trait: active integrations may re-add the entity on reload, making the deletion effectively non-durable. It stops short of stating whether device/config entries are also removed, error behavior for unknown ids, or required permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the action, followed immediately by the caveat and routing. No filler and nothing redundant with the name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive mutation with no annotations and no output schema, the definition covers the key reversal caveat but omits what exactly is destroyed, whether devices/config entries are affected, and any confirmation or permission requirement. Adequate but with clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single required parameter entity_id, and the description never mentions the parameter or its expected format (registry entity id vs. entity name vs. device id). With one undocumented param, the description fails to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Remove an entity from the registry') that an agent can immediately distinguish from nearby siblings like delete_device and remove_config_entry. The scope is unambiguous and does not require opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names two alternative tools and the exact condition that selects them ('if the entity belongs to a still-active integration'). This is the strongest form of when-to-use guidance: alternative named plus the selecting condition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_template_entityB

Delete a template entity by type + name (reloads template domain).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
template_typeYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does usefully disclose a side effect beyond the deletion itself ('reloads template domain'). However, it omits whether deletion is irreversible, what happens if the named entity does not exist, and any permission requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single tight sentence with the action front-loaded and the side effect parenthesized at the end. Nothing is wasted, though the parenthetical is slightly cryptic about what 'reloads template domain' entails.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, annotation-free tool with two undocumented parameters and no output schema, the description covers the essential action and one side effect but leaves irreversibility, error behavior, and permissions unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the schema contributes nothing beyond names and types. The description partially compensates by indicating that template_type and name together form the identifying key, but it adds no format, valid values, or case/whitespace semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb + resource ('Delete a template entity') with identifying keys ('by type + name'). It is distinguishable from siblings like delete_automation and delete_helper by name, but it never explicitly frames itself against the template-entity family (upsert/list/get_template_entity).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use or when-not-to-use guidance, no prerequisites, and no mention of alternatives. The only guidance is implicit in the name — an agent must infer that this is the removal counterpart to upsert_template_entity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

disable_config_entryA

Soft-disable an integration (its devices/entities go unavailable but registry entries remain).

ParametersJSON Schema
NameRequiredDescriptionDefault
entry_idYes

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses that this is a soft/reversible disable, that devices and entities become unavailable, and that registry entries persist. It omits permission requirements and what happens to dependent automations, but the core side effects are clearly conveyed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, front-loaded with the action and followed by a tight parenthetical clarifying the exact consequence. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Behavior is well covered for a tool with no annotations and no output schema, but the required entry_id is left completely unexplained and there is no guidance on obtaining it or on the counterpart enable operation. Adequate but with a clear hole.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single entry_id parameter has 0% schema description coverage and the description adds nothing about it — no format, no hint that it comes from list_config_entries. With one undocumented parameter and no compensating text, this is a real gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Soft-disable an integration') and immediately scopes the effect: devices/entities go unavailable but registry entries remain. This implicitly distinguishes it from remove_config_entry and delete operations, though it never names a sibling explicitly, which keeps it short of the top band.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The contrast with removal is implied ('registry entries remain'), which hints at when to prefer this over remove_config_entry, but there is no explicit when-to-use/when-not or reference to enable_config_entry as the reverse operation. Usage is inferable but not stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

enable_config_entryC

Re-enable a previously disabled integration.

ParametersJSON Schema
NameRequiredDescriptionDefault
entry_idYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It conveys that state is mutated, but says nothing about permissions required, whether the change is reversible, what happens if the entry is not disabled, or what errors to expect.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence, front-loaded with the action and resource, with no filler. It is efficient, though its brevity reflects under-specification rather than disciplined editing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a state-mutating tool with no annotations, no output schema, and an undocumented required parameter, the description is too thin. It should at least explain that entry_id comes from the config-entry listing tools and what a successful re-enable implies.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is one required parameter (entry_id) with 0% schema description coverage, so the description must compensate for the gap — and it does not mention the parameter at all. The agent gets no hint about where entry_id comes from (e.g., list_config_entries or get_config_entry) or its format.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Re-enable') and resource ('a previously disabled integration'), which distinguishes it from removal or reload. It does not differentiate from siblings like disable_config_entry or reload_config_entry, but the action itself is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'previously disabled' implies this only applies to entries currently in a disabled state, giving minimal usage context. It never names alternatives such as disable_config_entry, remove_config_entry, or reload_config_entry, leaving the agent to infer when each applies.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_automationA

Get a single automation by id (e.g. 'solaredge_power_notify').

Returns live state + attributes. Use get_automation_yaml for the raw YAML config (triggers / conditions / actions).

ParametersJSON Schema
NameRequiredDescriptionDefault
automation_idYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are absent, so the description carries the full burden. It adds some behavioral context by stating that it returns live state and attributes, which is useful beyond the schema, but doesn't mention if the operation is read-only, error behavior for invalid ids, or authentication requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the primary purpose, followed by the return value and a clear pointer to the alternative tool for YAML. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-entity getter with one parameter, the description covers purpose, return value, and distinguishes from the YAML alternative. It lacks annotation-level behavioral details, but given the tool's simplicity and lack of output schema, it is nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so descriptive parameter info would be valuable. The description provides an example id format ('solaredge_power_notify') but only for the singular 'automation_id' parameter, adding marginal value over the bare schema. It doesn't describe the id format fully or where to obtain it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get a single automation by id') and includes a concrete example id. It explicitly distinguishes itself from the sibling get_automation_yaml by clarifying what data it returns versus the raw YAML.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clear context: use this tool to get a single automation and its live state, and use get_automation_yaml for the raw config. However, it doesn't mention list_automations as the alternative for getting multiple automations, and provides no exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_automation_api_logB

Return the Automation API log file (automation_api.log).

Contains a record of every create/update/delete/trigger the integration has performed via REST, WebSocket, or service calls.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears the full behavioral burden. It usefully discloses what the log records (every mutating/trigger operation across REST, WebSocket and service calls), but says nothing about return format (raw file text vs path), size/truncation behavior, or read-side safety profile.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, the return target is front-loaded in the first, and the content enumeration follows. No filler, though the parenthetical filename is mildly redundant with the resource name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description should carry the return-value burden; it describes the log's contents but not its format, completeness, or size, leaving an agent unsure what it actually receives back.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states a verb ('Return') and a specific resource (the automation_api.log file), then enumerates its contents (create/update/delete/trigger records via REST, WebSocket, service calls). It is unmistakably distinct from sibling tools such as get_automation or list_automations, though it never explicitly says so.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to reach for this tool versus alternatives (e.g. get_automation_yaml or get_history) or under what circumstances an agent would want the API log. Usage is only implied by the resource name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_automation_yamlA

Return raw YAML config from automations.yaml.

Pass automation_id for a single automation, or omit to get everything.

ParametersJSON Schema
NameRequiredDescriptionDefault
automation_idNo

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden. It discloses that output is raw YAML from a specific file and clarifies the all-vs-single scope, but says nothing about read-only safety, error behavior when an automation_id doesn't match, or output size. Useful scoping context, but incomplete for a zero-annotation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with what is returned, followed immediately by the scoping behavior. No filler and every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read tool with one optional param and no output schema, the description is nearly complete: it says what is returned (raw YAML) and how scope varies. It would be fully complete with a brief note on read-only nature or the file source path, but the essentials for correct invocation are present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With one optional parameter and 0% schema description coverage, the description must compensate, and it does: it explains that automation_id selects a single automation and that omitting it returns everything. That maps the enum of behavior (single vs all) clearly, though it doesn't specify the id format.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: returns raw YAML config from automations.yaml. This implicitly distinguishes it from get_automation (structured) and list_automations, but it never names or contrasts those siblings explicitly, so the differentiation is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the parameter-driven scoping ('pass automation_id for a single automation, or omit to get everything'), which implies when to narrow vs broaden. However, it gives no guidance on when to prefer this raw-YAML tool over get_automation, list_automations, or the other automation tools, and no prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_config_entryC

Get full details for a single config entry.

ParametersJSON Schema
NameRequiredDescriptionDefault
entry_idYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It implies a read operation through 'Get' but does not state side effects, error behavior, authentication needs, or what 'full details' entails.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler. It is appropriately sized and wastes no words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has one required, undocumented parameter and no output schema or annotations. The description does not explain how to obtain an entry_id or what the returned details include, making it incomplete for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for the undocumented entry_id parameter. It adds no meaning about the format, source, or valid values of entry_id.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get'), resource ('config entry'), and scope ('single'), which distinguishes it from the sibling list_config_entries without naming it. It is clear but lacks explicit sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives such as list_config_entries, reload_config_entry, or disable_config_entry, nor any mention of prerequisites or context of use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_dashboard_configB

Return the full Lovelace config of a dashboard.

Structure: {"title": ..., "views": [{"title": ..., "cards": [...]}, ...]}.

ParametersJSON Schema
NameRequiredDescriptionDefault
url_pathNodefault

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full disclosure burden. It usefully describes the return shape (title/views/cards), which is valuable, but says nothing about what happens when the dashboard does not exist, permission requirements, or the meaning/behavior of the default url_path.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action in the first sentence, followed by a compact structural example. No wasted prose, though the inline pseudo-JSON is slightly cryptic to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description must carry return semantics—and the structure sketch does that partially. However, the url_path parameter, its default, and failure behavior remain undocumented, leaving gaps for a config-reading tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the single url_path parameter (default 'default') is never mentioned or explained in the description. The JSON structure shown describes the return value, not the parameter, so the description adds no meaning beyond the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: 'Return the full Lovelace config of a dashboard'. The read verb distinguishes it from write siblings like set_dashboard_config, update_dashboard_metadata, and append_dashboard_view. It does not explicitly name an alternative, but the read/write split is inferable from the verb.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No statement of when to use this tool versus list_dashboards, set_dashboard_config, or the view/card manipulation siblings. There are no prerequisites, no exclusions, and no conditions under which this should be preferred—just a statement of what it returns.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_deviceC

Get full registry details for a single device id.

ParametersJSON Schema
NameRequiredDescriptionDefault
device_idYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It implies a read via 'Get' but says nothing about error behavior for unknown ids, required permissions, or what 'full registry details' actually encompasses.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler or repetition. It is efficient, though its brevity is partly under-specification rather than disciplined conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read tool with no annotations and no output schema, the description is minimally adequate, but 'full registry details' is vague about the returned shape that the absent output schema does not cover.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single device_id parameter. The description only restates that a device id is required, adding no format, type, or sourcing detail (e.g., UUID vs numeric, where to obtain it) beyond the schema title 'Device Id'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get) and resource (registry details for a device), and the phrase 'single device id' distinguishes it from the sibling list_devices. It does not explicitly name the alternatives, so it is clear but not sibling-differentiating at the highest level.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, prerequisites, or exclusions are given. The only implied usage is that you need one device id, which an agent must infer from the phrase 'single device id' versus the sibling list_devices.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_helperC

Return the config of a single helper in the managed package.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYes
helper_idYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. 'Return' implies a read-only operation, but the description says nothing about permissions, error behavior when the helper or domain doesn't exist, or what 'config' includes. It does confirm the scope is a single helper, but discloses little beyond purpose.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no filler. It is efficient, though its brevity is partly under-specification rather than disciplined concision.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read tool with two required parameters at 0% schema coverage and no output schema, the description is too thin. It doesn't clarify the parameters or the shape of the returned config, leaving the agent to infer both.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so both required parameters (domain, helper_id) are undocumented in the schema. The description mentions no parameters at all, so it fails to compensate; an agent must guess the expected format of domain and helper_id.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: returning the config of a single helper. 'Single helper' distinguishes it from the plural siblings like list_helpers, and the config-return framing separates it from upsert_helper/delete_helper. It doesn't explicitly name an alternative, but the scope is clear enough for selection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as list_helpers for enumeration. Usage is only inferable from the tool name and the word 'single'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_historyA

Fetch state-change history for one or more entities from HA's recorder.

Default window: last 24 hours. Use this to diagnose flapping sensors (count of changes) or to inspect when an automation last ran.

Args: entity_id: A single entity id, or comma-separated list for multiple (e.g. 'sensor.x,sensor.y'). hours: Window length in hours, ending at end (default now). days: Window length in days. Ignored if hours is set. start: ISO-format start datetime (e.g. '2026-05-22T00:00:00+00:00'). Overrides hours/days. end: ISO-format end datetime (default: now). significant: If true, use get_significant_states (HA's filtered view). Default false = every recorded state change. minimal: Smaller response shape (state + last_changed only). Default true. no_attributes: Strip attributes from the response. Default true.

Returns: {start, end, counts: {entity_id: n}, items: {entity_id: [...]}}. counts is the quickest way to see how often a sensor flipped.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNo
daysNo
hoursNo
startNo
minimalNo
entity_idYes
significantNo
no_attributesNo

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden: it discloses the default window, parameter precedence rules, the effect of significant/minimal/no_attributes, and the exact return shape. Missing only non-critical details like rate limits or auth requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, default window, and use cases before structured Args and Returns sections. The length is appropriate for an 8-parameter tool with zero schema descriptions, and every sentence carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, no output schema, and 0% schema description coverage, the description fills all critical gaps. It covers parameter semantics, precedence, behavioral flags, and the return shape, leaving an agent fully equipped to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for 8 parameters, so the description must compensate, and it does so thoroughly. Each parameter is documented with type, default, format, and interaction rules (e.g., 'days' ignored if 'hours' is set, 'start' overrides both), adding substantial meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Fetch') and resource ('state-change history') scoped to one or more entities from HA's recorder, which distinguishes it from current-state tools like get_state. An agent can immediately tell what it returns and where the data comes from.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides two concrete diagnostic use cases (flapping sensors, automation last run) and notes the default 24-hour window. It does not name alternatives (e.g., get_state for current values) or state when not to use this tool, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_history_stats_sensorC

Return the config of a single history_stats sensor.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations and no output schema, the description carries the full burden, and it only implies read-only behavior via the word 'Return'. It does not disclose error behavior for unknown names, required permissions, or what the returned config contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence with zero filler, which is appropriate for a simple single-parameter getter. The brevity is efficient, though it edges toward under-specification rather than tight conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read tool with no nested objects and no output schema, the description is minimally adequate: an agent knows it fetches one sensor's config by name. Gaps remain around the naming key, failure behavior, and the shape of 'config', which the lack of schema coverage leaves unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single parameter 'name', so the description must compensate. It only implies that 'name' identifies one sensor; it does not say whether it is the entity ID, the sensor's display name, or a config-entry identifier.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Return') and resource ('config of a single history_stats sensor'), which cleanly distinguishes it from the plural sibling list_history_stats_sensors and the mutating upsert/delete siblings. It is clear but never names an alternative explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this versus list_history_stats_sensors or upsert_history_stats_sensor, no prerequisites, and no statement of what happens when the named sensor does not exist. The singular 'a single' is the only implicit routing signal.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_managed_packageB

Return the full managed package file as JSON (helpers, templates, etc.).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It reveals only that the return is JSON containing helpers/templates, but does not disclose read-only nature, whether it requires configuration, or any side effects. For a zero-parameter read tool with no annotations, this is thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence that communicates the action, return format, and examples of contents. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a zero-parameter tool with no output schema and no annotations, the description should ideally clarify read-only behavior or relationship to 'managed package' concept and sibling overwrite_managed_package. It hints at contents but leaves the object model unclear. Adequate but with clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so baseline is 4 per rubric. The description correctly implies no inputs are needed and the tool returns the full package without filtering.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Return) and resource (managed package file) and clarifies the return shape is JSON. It does not differentiate itself from siblings like get_automation or get_helper, and there is no mention of the sibling overwrite_managed_package, but the purpose is clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives such as get_automation or get_helper, nor any prerequisites. The description only states what it returns, leaving usage context to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_notify_groupC

Return the config of a single notify group.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It implies a read operation but says nothing about required permissions, error behavior when the group does not exist, or the shape of the returned config.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence that is front-loaded and free of filler. It is appropriately sized for the tool, though its brevity reflects under-specification rather than efficient richness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and an undocumented parameter, the description is too thin. It should at least clarify what the returned config contains and how errors or missing groups are handled.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single 'name' parameter has 0% schema description coverage, and the description does not explain its format or expected value. It mentions 'a single notify group' but adds no meaning beyond what the vague parameter name already conveys.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Return') and resource ('config of a single notify group'), clearly distinguishing it from list_notify_groups by scoping to a single group. It does not explicitly name sibling tools, but the verb+resource pairing is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus alternatives such as list_notify_groups or upsert_notify_group. Usage is only implied by the name, with no conditions or prerequisites stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_registry_entityC

Get full registry details for a single entity_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
entity_idYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full behavioral burden. 'Get' implies a safe read, but nothing is said about permission requirements, error behavior for an unknown entity_id, or what 'full registry details' actually includes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence, front-loaded with the verb and resource, with no wasted words. Brevity here reflects terseness rather than padding, though it borders on under-specification.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, no annotations, and 0% parameter coverage, the description should at minimum sketch what registry fields are returned and how the id is sourced. It leaves both gaps open for a tool whose only job is to return that data.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single entity_id parameter, so the description must compensate and does not — it never explains the expected id format or where an agent obtains a valid one. It only restates that the id identifies one entity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get), resource (registry entity), and scope (full details for a single entity_id). The word 'single' implicitly contrasts with the sibling list_registry_entities, but no sibling is named explicitly, so the differentiation is only implied.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus list_registry_entities, get_device, or update_registry_entity. The agent must infer that this is the fetch-one-by-id counterpart to the list tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_stateC

Get the current state of any HA entity via the native REST API.

ParametersJSON Schema
NameRequiredDescriptionDefault
entity_idYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden but discloses almost nothing: 'Get' implies a safe read, yet it omits error behavior for invalid entity_id, return shape, and any auth/rate considerations. Only the API mechanism is noted, adding little beyond the name.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no waste. The 'via the native REST API' detail is arguably unnecessary for tool selection but is not harmful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-param read tool with no output schema, the description is borderline adequate on purpose but leaves parameter format and error behavior undocumented, which an agent needs for reliable invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the description adds no meaning for entity_id beyond the vague phrase 'any HA entity'. It does not explain the expected format (e.g., domain.object_id) that an agent would need to call it correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The verb+resource is clear ('Get the current state of any HA entity'), and 'current state' implicitly distinguishes it from historical reads like get_history. It does not explicitly name or differentiate from near siblings such as get_registry_entity or list_entities, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no mention of alternatives (get_history, get_registry_entity, list_entities), and no prerequisites. The 'via the native REST API' clause is implementation detail rather than usage direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_template_entityC

Return the config of a single template entity by type + name.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
template_typeYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It implies a read operation but does not state side-effect profile, error behavior for a missing entity, permission needs, or returned config shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single front-loaded sentence with no filler; every word contributes to stating the operation and its lookup key.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Low-complexity get tool, but with no annotations, no output schema, and 0% parameter description coverage, the description leaves error handling, output format, and input constraints unspecified. Minimum viable but thin.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for 2 required parameters. The description only indicates they form a composite key ('by type + name'); it does not specify valid template_type values, name format, or examples, so it only partially compensates for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Return'), resource ('config of a single template entity'), and identifier ('by type + name'). It distinguishes from list_template_entities via 'single' but does not explicitly route to or away from any sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no mention of alternatives like list_template_entities or upsert_template_entity, and no prerequisites. An agent gets no help choosing this over siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_areasA

List every area (room) defined in Home Assistant.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. 'List' implies a read-only operation and 'every area' implies exhaustive, unfiltered results, but it does not disclose permission requirements, return shape, pagination, or whether disabled areas are included.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that front-loads the operation and resource with no wasted words. It is appropriately sized for a zero-parameter list tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the very low complexity, empty schema, and no output schema, the description is nearly complete: it identifies exactly what is listed. It does not describe the shape of each returned area, but for a simple list tool this omission is minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so there is no parameter syntax for the description to clarify. The schema is empty, and the description adds no parameter detail, which is appropriate here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb, 'List', and a specific resource, 'every area (room) defined in Home Assistant'. This resource is clearly distinct from sibling tools such as list_entities, list_devices, and list_automations, so an agent can identify it without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for retrieving areas, but does not explicitly state when to choose it over alternatives or when not to use it. No sibling tool or condition is named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_automationsA

List every automation known to Home Assistant.

Returns the entity_id, slug id, friendly name, current state, and last trigger timestamp for each automation (as reported by the state machine).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It usefully describes the returned fields (entity_id, slug, name, state, last trigger), but omits read-only declaration, pagination/volume behavior, permissions, and whether disabled or unregistered automations are included.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two front-loaded sentences with zero filler; the scope statement comes first and the return payload second, each earning its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-param list tool with no output schema, the description compensates by enumerating the returned fields, which is genuinely useful. Minor gaps remain around scope nuances (disabled automations) and read-only nature, but nothing blocking.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, which is the baseline-4 case. There is nothing for the description to disambiguate, and it correctly does not invent filtering options that do not exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List every automation'), so the operation is unambiguous. It does not explicitly contrast itself with siblings like get_automation or list_entities, but 'every' vs 'get' implies the distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the name and the 'every automation' scope, but there is no explicit when-to-use guidance, no mention of when to prefer get_automation for a single item, and no exclusions. Adequate but leaves routing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_config_entriesA

List installed integrations (config entries).

Each item has entry_id, domain, title, state, disabled_by, supports_unload, supports_remove_device. Filter by domain (integration name like 'tuya' or 'wiz').

ParametersJSON Schema
NameRequiredDescriptionDefault
domainNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full behavioral burden. It helpfully lists the fields returned for each item (entry_id, domain, title, state, etc.), partially compensating for the missing output schema, but it does not disclose operational traits like pagination, authentication requirements, or ordering.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core action, then efficiently lists return fields and the filter parameter. Every sentence earns its place, and there is no wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with one optional parameter, no output schema, and no annotations, the description provides a good amount of context: purpose, filter semantics with examples, and returned item fields. It falls short only on when-to-use guidance relative to siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter `domain` is undocumented in the schema (0% coverage), but the description explains its purpose ('Filter by domain') and gives concrete examples ('tuya' or 'wiz'). This adds meaningful clarity beyond the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'List installed integrations (config entries)'. This clearly distinguishes it from sibling tools like get_config_entry or enable_config_entry, but it does not explicitly differentiate itself from those alternatives in the text.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no guidance on when to use this tool versus get_config_entry or other config-entry siblings. It only explains how to filter by domain, which is parameter usage rather than tool-level context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_dashboardsA

List every Lovelace dashboard (url_path, title, mode, icon).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full disclosure burden. It signals a read operation and enumerates the returned fields (url_path, title, mode, icon), which is useful, but says nothing about permissions, side effects, or whether results are paginated or cached.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single tightly-scoped sentence with the verb and resource front-loaded and the returned-field parenthetical giving immediate value. Nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only list tool with no output schema, the description covers purpose and enumerates the four returned fields, which is exactly the information an agent needs. Only the lack of any pagination/volume expectation keeps it from being fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has zero parameters, so the baseline is 4; there is nothing for the description to disambiguate. The listed fields refer to the response shape rather than inputs, which is harmless extra context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('List') and resource ('Lovelace dashboard') and even names the fields returned, so the agent knows exactly what it gets. It is implicitly distinguishable from siblings like get_dashboard_config, create_dashboard, and update_dashboard_metadata, but it never explicitly draws that contrast.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'List every' implies enumeration of the full set with no filtering, which implicitly tells the agent when this applies versus a targeted get_* call. However, there is no explicit when-to-use statement, no mention of alternatives such as get_dashboard_config for a single dashboard's detail, and no prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_devicesB

List devices from HA's device_registry.

Each item has id, name, name_by_user, manufacturer, model, area_id, config_entries (list of entry ids), identifiers, connections, disabled_by. Filter by integration to scope (e.g. 'tuya' to find all Tuya devices).

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNo
area_idNo
disabledNo
integrationNo
manufacturerNo
config_entry_idNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden. It discloses the returned item shape (id, name, area_id, config_entries, identifiers, connections, disabled_by), which substitutes for the missing output schema. However, it says nothing about pagination, result size, or required auth, leaving real gaps for a registry-listing tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first sentence, and the field enumeration, while long, earns its place as the only documentation of the return shape. Minimal waste overall.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description usefully compensates for the absent output schema by listing returned fields. But for a 6-param tool with 0% schema coverage it under-documents the filter parameters, so an agent cannot confidently use most of the schema surface.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and there are 6 parameters, yet the description only explains the `integration` filter. The other five (model, area_id, disabled, manufacturer, config_entry_id) are completely undocumented in both schema and description – a significant failure to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: 'List devices from HA's device_registry'. It clearly differs from get_device (retrieve one) and list_entities/list_areas, though it never names a sibling explicitly. Clear but without deliberate sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Offers one concrete usage hint – filter by integration (e.g. 'tuya') to scope results – which implies when the tool is useful. But there is no guidance on when to prefer this over list_entities or get_device, and no mention of unfiltered behavior.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_entitiesB

List Home Assistant entities with optional filters.

Args: domain: Filter by domain, e.g. 'light', 'switch', 'sensor'. area: Filter by area name (case-insensitive), e.g. 'Woonkamer'. search: Substring match against entity_id or friendly name.

ParametersJSON Schema
NameRequiredDescriptionDefault
areaNo
domainNo
searchNo

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full behavioral burden, yet it only says 'List'. It does not confirm read-only behavior, describe the return shape (entity IDs and friendly names?), note result size/pagination, or mention whether filters are ANDed together. For a list tool with zero annotation coverage this is thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One summary line followed by a compact per-argument list; nothing is padded. The purpose is front-loaded before the arg details, though the extra blank lines and Args formatting are slightly noisy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description should say more about what comes back (fields per entity) and how filters combine. The argument coverage is good, but the return side and interaction of filters remain unspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it largely does: each of the three parameters is explained with a concrete example domain ('light'), area ('Woonkamer'), and match semantics ('substring match against entity_id or friendly name'). The case-insensitivity note for area is a useful detail the schema lacks.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List Home Assistant entities') plus the filter scope, so the purpose is immediately clear. However, it does not distinguish itself from close siblings like list_registry_entities, which an agent could easily confuse with it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus list_registry_entities or get_state. The presence of filters implies a browsing use case, but the agent is left to infer that and has no stated exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_helpersC

List helpers of the given domain in the managed package.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It only states that helpers are listed; it does not disclose read-only nature, pagination behavior, output format, required permissions, or what happens if the domain is invalid.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single efficient sentence with no wasted words and the key action front-loaded. It could be slightly more helpful while remaining concise, but it avoids bloat.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with one required parameter and no output schema, the description is minimally adequate. However, with no annotations and no schema coverage, it should do more to explain the domain parameter and the nature of the returned helpers.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage for the single 'domain' parameter. The description says 'given domain' but never explains what a domain is, its expected format, or how it filters results, so it does not compensate for the missing schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('List'), resource ('helpers'), and scope ('of the given domain in the managed package'). It distinguishes itself from sibling helper tools like get_helper, upsert_helper, and delete_helper by its listing action, though it does not explicitly differentiate from other list_* tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives such as get_helper or list_automations. There is no mention of prerequisites, exclusions, or the conditions under which this listing is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_history_stats_sensorsB

List all history_stats sensors in the managed package.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden, yet it only discloses scoping to the managed package. It says nothing about pagination, whether disabled or orphaned sensors are included, ordering, or result size limits, which matters for a list operation over an unknown population.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence with the action and scope front-loaded and zero filler. Nothing could be trimmed without losing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-argument list tool with no output schema and no annotations, the description is minimally adequate but omits what the returned records look like and whether the list can be filtered. It covers the operation but not the shape of the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so per the rubric the baseline is 4. There are no arguments whose meaning could need elaboration, and the description introduces none.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (List) and resource (history_stats sensors) plus a scope qualifier (in the managed package), so the operation is immediately clear. It does not explicitly differentiate itself from the singular get_history_stats_sensor sibling, though 'List all' versus the get/upsert/delete siblings implies enumeration.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus the siblings get_history_stats_sensor, upsert_history_stats_sensor, or delete_history_stats_sensor. The only hint is the plural 'List all', leaving the agent to infer the intent from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_notify_groupsA

List all notify groups in the managed package.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden here. 'List' reasonably implies a read-only, side-effect-free operation and the 'managed package' scope adds useful context, but nothing is said about authorization, ordering, or result size/pagination.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler. The scope qualifier is placed immediately after the verb+resource, so nothing needs to be re-read.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, output-schema-less list tool, the description covers what the agent needs to choose and call it. The only minor gap is that it does not characterize the returned collection's shape or ordering.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there are no parameter semantics to explain; the baseline for a no-param tool applies. Nothing in the description misrepresents the (empty) input.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (notify groups) with the extra scope qualifier 'in the managed package'. An agent can distinguish it from get_notify_group or upsert_notify_group, but the description never names those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance is given, and no alternatives are referenced even though get_notify_group and upsert_notify_group exist as obvious siblings. The agent must infer that this is the enumeration variant from the verb 'List' alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_registry_entitiesB

List entries from HA's entity_registry with full details.

Returns each entity with unique_id, platform (integration name), device_id, area_id, name (user-set), original_name (from integration), disabled_by, hidden_by, config_entry_id. Use this to find duplicates, orphans, or filter by integration.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainNo
area_idNo
disabledNo
platformNo
device_idNo
config_entry_idNo

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden. It usefully enumerates the returned fields and states the tool is for finding duplicates/orphans, but it does not disclose whether the operation is read-only, what permissions are needed, pagination behavior, or any side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the tool's purpose, followed by the returned fields and a use case. It is efficient and contains no obvious filler, though the field listing is dense and could be slightly tighter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, no annotations, and six undocumented filter parameters, the description is incomplete. It covers return fields adequately but leaves all input parameter behavior unexplained, which is a significant gap for an agent trying to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are 6 input parameters with 0% schema description coverage, so the description must compensate. It only vaguely gestures at filtering with 'filter by integration' and never explains domain, area_id, disabled, platform, device_id, or config_entry_id, leaving most parameter semantics undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'List entries from HA's entity_registry with full details.' It is clear what the tool does, but it does not distinguish itself from the sibling 'list_entities' or explain why an agent would choose this over that tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an explicit use case: 'Use this to find duplicates, orphans, or filter by integration.' However, it names no alternatives and gives no conditions for when not to use it, so the usage guidance remains implied rather than complete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_template_entitiesC

List all template entities of the given type in the managed package.

ParametersJSON Schema
NameRequiredDescriptionDefault
template_typeYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does not state whether the call is read-only (implied but unstated), whether results are paginated, or what authorization/setup is required for the managed package context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence with no filler; the scoping clause is attached directly to the resource. Efficient, though it is concise at the cost of leaving the parameter underspecified.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and no parameter documentation anywhere, a full sentence of description is not enough: valid template_type values and the return shape remain unknown. A caller cannot reliably invoke this without trial and error.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter template_type has 0% schema description coverage and no enum, and the description only says 'of the given type' — circular phrasing that never reveals the accepted values or format. This is the main functional gap for an agent trying to call the tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('List') and resource ('template entities'), and adds scope ('in the managed package') that separates it from the generic list_entities / list_registry_entities siblings. It stops short of naming an alternative tool explicitly, so it is clear but not fully differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus list_entities, list_registry_entities, or get_template_entity, and no mention of prerequisites such as needing a managed package configured. The agent must infer usage from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

overwrite_managed_packageA

Overwrite the entire managed package file (expert / bulk migration use).

Triggers homeassistant.reload_all afterwards. Prefer the targeted upsert_* tools for day-to-day changes.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and does disclose a key side effect: it triggers homeassistant.reload_all afterwards, plus the full-replacement nature of the operation. It stops short of stating reversibility or any permission requirements, so it is strong but not complete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences plus a short parenthetical, front-loaded with the core action before the side effect and the alternative. Every clause earns its place with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, no output schema, and an undocumented nested content object, the description adequately covers purpose, side effects, and routing but leaves the input structure entirely unexplained. The opaque content parameter is the main remaining gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the single 'content' parameter is an opaque nested object with additionalProperties=true. The description gives no hint about what content should contain, so it fails to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Overwrite the entire managed package file') with clear scope ('entire'). It distinguishes itself from siblings by contrasting with the targeted upsert_* tools, so an agent can tell it apart from get_managed_package and the upsert_* family.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly scopes usage ('expert / bulk migration use') and names the alternative with its selection condition ('Prefer the targeted upsert_* tools for day-to-day changes'). This is exactly the when-to-use/when-not guidance the dimension rewards.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reload_configA

Reload HA config.

With no arguments → calls homeassistant.reload_all. With a list of domains → reloads each individually (input_boolean, input_datetime, template, automation, script, scene, ...).

ParametersJSON Schema
NameRequiredDescriptionDefault
domainsNo

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden. It does disclose the two backend behaviors (homeassistant.reload_all vs per-domain reload), which is valuable, but omits side effects (e.g., disruption to running automations), permission needs, and failure behavior for invalid domains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short lines, front-loaded with the core action, and the arrow notation splits the two modes cleanly. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, no-output-schema tool, the description covers both argument branches adequately. It is slightly thin on error handling and on the practical consequence of a full reload, but nothing critical for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate, and it does: it explains that omitting domains triggers a global reload and that a list reloads each domain individually, with concrete domain examples. It stops short of stating whether bare strings or domain-prefixed identifiers are expected.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (reload) plus resource (HA config) and even branches behavior by argument shape. It does not, however, distinguish itself from close siblings like reload_config_entry or restart_home_assistant, leaving the agent to infer the difference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly explains the two invocation modes (no args vs domain list), which is real usage guidance, but it never says when to prefer this over restart_home_assistant or reload_config_entry. Usage is implied by the argument shapes rather than stated as a decision rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reload_config_entryB

Reload an integration without restarting HA.

ParametersJSON Schema
NameRequiredDescriptionDefault
entry_idYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does disclose one meaningful behavioral trait — the reload is scoped to a single integration rather than a full restart — but omits what reloading actually does (whether entities briefly become unavailable, whether it requires admin auth, or whether in-flight state is lost).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with zero wasted words; the scoping benefit is stated up front.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter tool with no annotations and no output schema this is barely adequate: the purpose is clear but the origin and format of entry_id, and the side effects of reloading, are absent. A sentence pointing to get_config_entry and noting the brief disruption would complete it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single required parameter entry_id, and the description adds nothing: it never clarifies that entry_id is a config-entry identifier or that one must be obtained from list_config_entries/get_config_entry. The agent is left to guess where the value comes from.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (reload) and resource (an integration / config entry), plus the distinguishing benefit 'without restarting HA'. It is easy to tell apart from restart_home_assistant and reload_config, though it never names those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'without restarting HA' implies the agent should prefer this over a full restart when only one integration needs refreshing, but there is no explicit when-to-use, when-not-to-use, or named alternative. Usage is inferred rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_config_entryA

Fully remove an integration. Cascades: all its devices and entities are removed from the registries. Irreversible — to restore, re-add the integration via Settings → Devices & services.

ParametersJSON Schema
NameRequiredDescriptionDefault
entry_idYes

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so well: it discloses the cascade effect (devices and entities removed from the registries), declares irreversibility, and gives the recovery path (re-add via Settings). This is exactly the behavioral context a destructive mutation needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the core action, then effects, then recovery. Every clause adds decision-relevant information with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive mutation with no annotations and no output schema, the cascade, irreversibility, and recovery guidance make the call semantics clear. The remaining gap is the source/format of entry_id, which an agent needs to actually invoke the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single required entry_id parameter, and the description never explains what an entry_id is or how to obtain one (e.g., via list_config_entries). Only the implicit link of 'integration' to the identifier gives any hint.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Fully remove an integration') and its scope, which cleanly separates it from the sibling tools that merely disable, enable, or reload config entries. An agent can identify the operation without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The word 'Fully' and the note that restoring requires re-adding the integration imply this differs from the reversible disable/enable siblings, but no sibling is named and no condition for choosing removal over disabling is stated. Usage is inferable rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

replace_dashboard_cardC

Replace a specific card within a view.

ParametersJSON Schema
NameRequiredDescriptionDefault
cardYes
url_pathYes
card_indexYes
view_indexYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. 'Replace' hints that an existing card is overwritten, but nothing states what is lost, whether the operation is idempotent, whether indices shift after replacement, or what permissions are needed. For an unannotated mutation tool this is a substantial gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler, and the verb/resource lead the sentence. It is concise, but the brevity is partly under-specification rather than disciplined compression.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With four required parameters, a 0%-documented (and free-form) nested card object, no annotations, and no output schema, the description supplies none of the addressing or payload context an agent needs to invoke this correctly. It is far too thin for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across all four required parameters. The description says nothing about url_path, view_index, card_index, or the free-form nested 'card' object (additionalProperties: true), leaving the agent with no idea what shape the replacement payload must take or how indices are addressed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a clear verb+resource pairing ('replace a specific card') and scopes it to 'within a view', which separates it from list-level tools. However, it never distinguishes itself from the near-identical siblings append_dashboard_card and delete_dashboard_card, all of which operate on cards within views.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no statement of when to prefer this over append_dashboard_card (add vs. subsume) or set_dashboard_config (bulk rewrite), and no prerequisites for locating the target view/card. The agent must infer everything from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

replace_dashboard_viewC

Replace the view at the given index.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewYes
url_pathYes
view_indexYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It says 'replace' but does not disclose whether the operation is destructive to the prior view, what happens if view_index is out of range, or whether permissions are required. For a mutation tool this is a significant transparency gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no waste, which is structurally clean. But it is arguably too sparse for a three-parameter mutation tool, so brevity here borders on under-specification rather than effective conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, 0% schema description coverage, and a nested object parameter, the description is far too thin to be complete. An agent lacks the information needed to call this correctly with confidence.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and there are three required parameters, including a nested, unconstrained 'view' object. The description alludes to 'index' and 'view' but adds no meaning for url_path, the index base/range, or the expected view structure, so it fails to compensate for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (replace) and resource (view at an index), which distinguishes it from append_dashboard_view and delete_dashboard_view. However, it never mentions that the view belongs to a dashboard identified by url_path, nor does it differentiate itself explicitly from the sibling replace_dashboard_card. Adequate but with clear gaps.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this versus append_dashboard_view, delete_dashboard_view, or replace_dashboard_card, and no prerequisites (e.g., the view index must already exist) are stated. The agent must infer usage entirely.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

restart_home_assistantA

Schedule a Home Assistant restart (fire-and-forget).

Use after creating/updating/deleting notify groups or history_stats sensors, which have no reload service.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. 'Fire-and-forget' usefully discloses that the call is asynchronous and does not confirm completion, but it omits material behavior: restart timing/delay, whether Home Assistant goes offline, and the blast radius of restarting the whole instance. That is important context for a tool that disrupts the entire system.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loading the action and its nature, followed by the condition that selects it. Every clause earns its place with no repetition of the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, no-output tool, the definition covers what it does and when to invoke it, which is sufficient for correct selection. The remaining gap is behavioral detail about restart side effects, which a careful agent would want given there are no annotations to fall back on.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline 4 applies; no parameter semantics gaps exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Schedule a Home Assistant restart') and clarifies the operation's character as fire-and-forget. It implicitly distinguishes itself from the reload_config sibling by noting the affected entities 'have no reload service', so an agent can pick it apart from the reloader without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a concrete when-to-use trigger: after creating/updating/deleting notify groups or history_stats sensors. The clause 'which have no reload service' signals why this is needed instead of a reload, but the alternative tool (reload_config) is not named explicitly, so routing is slightly less crisp than it could be.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_dashboard_configA

Overwrite the entire Lovelace config of a dashboard.

config must contain at least {"views": [...]}.

ParametersJSON Schema
NameRequiredDescriptionDefault
configYes
url_pathYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It does disclose the destructive scope ('overwrite the entire') and a minimum-content constraint, which is useful. However, it says nothing about irreversibility, permissions, or what happens to existing keys not supplied, leaving the mutation risk under-described.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, zero filler, and the destructive scope is front-loaded before the format constraint. Nothing to trim.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a nested-object mutation tool with no annotations and no output schema, it covers the essential risk (full overwrite) and the config shape requirement. The gap is `url_path` semantics and the fate of omitted top-level keys, but overall it is adequately complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It adds real meaning for `config` by requiring at least `{"views": [...]}`, but `url_path` (which dashboard to target) is left entirely undefined despite being required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: overwrite the entire Lovelace config of a dashboard. The word 'entire' implicitly distinguishes it from partial siblings like replace_dashboard_view or append_dashboard_card, though no sibling is named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: a full overwrite is the right call when you want to replace the whole config, versus the view/card-level siblings. There is no explicit 'use this when / use X instead' guidance, so the agent must infer the routing from the word 'entire'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

trigger_automationA

Manually fire an automation's actions, bypassing triggers + conditions.

Accepts either the slug ('my_auto') or the full entity_id ('automation.my_auto').

ParametersJSON Schema
NameRequiredDescriptionDefault
automation_idYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description carries the full burden, and it does disclose a meaningful behavioral trait: the trigger and condition logic is bypassed, so the action fires unconditionally. It omits other relevant traits such as permissions required, side effects, whether execution is async, and what the call returns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, front-loaded with the core action and followed by the accepted input formats. Every sentence earns its place with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-param action tool with no annotations and no output schema, the description covers purpose, behavior (bypasses triggers/conditions), and parameter format. The main missing piece is any indication of the result or confirmation returned to the caller.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: it specifies that automation_id accepts either the slug ('my_auto') or the full entity_id ('automation.my_auto'). This resolves the ambiguity the bare schema leaves open, though format-bearing examples for edge cases are absent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('fire an automation's actions') and adds a distinguishing scope qualifier ('bypassing triggers + conditions') that separates it from siblings like get_automation and create_or_update_automation. An agent can identify exactly what this does without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The word 'manually' and 'bypassing triggers + conditions' imply this is for forcing execution outside normal trigger flow, which is useful context. However, no explicit when-to-use/when-not guidance or named alternatives are given, so usage is inferred rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_dashboard_metadataB

Update dashboard metadata (title, icon, show_in_sidebar, require_admin).

Cannot modify the default/Overview dashboard's metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
changesYes
url_pathYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does disclose one real behavioral restriction (the default dashboard is immutable), but says nothing about whether changes merge or replace existing metadata, what happens on an unknown url_path, or failure behavior. For a mutation tool with zero annotation coverage this is thin, though the one constraint it does state is valuable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the capability and followed by the one hard constraint; no filler. The enumeration inside parentheses is efficient, though the fragmentary style leaves some under-specification that is not strictly a conciseness problem.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema and no annotations, so the description is the only behavioral source, and it covers the mutation target and one exclusion. It omits what the required url_path refers to and what a caller should expect on success or rejection, which is a gap for a two-required-parameter mutation tool nested in a large dashboard tool family.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, and the 'changes' parameter is an opaque object with additionalProperties=true, so the description's enumeration of accepted keys (title, icon, show_in_sidebar, require_admin) is the only documentation that exists for it and adds real meaning. However, 'url_path' — a required identifier — is never explained (format, where to obtain it), leaving half the surface undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (update dashboard metadata) and enumerates the mutable fields (title, icon, show_in_sidebar, require_admin), which is more precise than the bare tool name. It does not, however, distinguish itself from the sibling set_dashboard_config, leaving an agent to guess which of the two mutates which aspect of a dashboard.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives one explicit exclusion — the default/Overview dashboard's metadata cannot be modified — which is genuinely useful routing information. It offers no positive when-to-use guidance relative to set_dashboard_config or the other dashboard tools, so usage is only partially implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_deviceC

Mutate a device. Supported keys: name_by_user, area_id, disabled_by (bool).

ParametersJSON Schema
NameRequiredDescriptionDefault
changesYes
device_idYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. 'Mutate' signals a write, but nothing is said about permissions, reversibility, error behavior on unknown keys, or whether unspecified fields are preserved. It does at least enumerate accepted keys, which partially constrains behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the verb and resource followed by the practical key list in a single compact sentence. Efficient, though the schema's nested 'changes' wrapper could be tied more explicitly to the listed keys.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations, no output schema, and an untyped nested object, the description is too thin. It should state permissions, partial-vs-full update behavior, and what the response contains; none of that is covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and 'changes' is an open object with additionalProperties: true, so the description's list of supported keys (name_by_user, area_id, disabled_by) is genuinely useful. Still, it omits device_id semantics, value formats/types for the keys, and whether the update is partial or full, leaving the main parameter under-specified.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Mutate') and resource ('device'), and the sibling names (list_devices, get_device, delete_device) show this is the update counterpart, so an agent can place it. However it never explicitly contrasts itself with delete_device or update_registry_entity, so differentiation is by inference only.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance is given. There is no mention of prerequisites (e.g. the device must exist), when to prefer this over delete_device or call_service, or what happens on conflicting input. The agent must guess the context from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_registry_entityB

Mutate a registry entity. Supported keys in changes: name, icon, area_id, new_entity_id (rename), disabled_by (bool), hidden_by (bool).

ParametersJSON Schema
NameRequiredDescriptionDefault
changesYes
entity_idYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden; it discloses the mutation surface (rename via `new_entity_id`, disable/hide booleans) which is genuinely useful behavioral information, but says nothing about permissions, reversibility, or side effects on referencing entities.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the verb+resource and then the key list; no filler. The backtick-heavy key list is compact, though `entity_id` is never addressed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations, no output schema, and a fully opaque nested-object schema, the description covers the allowed change keys but leaves the required `entity_id` meaning, failure modes, and effect on dependents unspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and `changes` is an opaque object with additionalProperties:true and no documented keys. The description enumerates the accepted keys and their types (`disabled_by`, `hidden_by` as bool; `new_entity_id` as rename), which is meaningful compensation the schema does not provide.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Mutate') and resource ('registry entity'), and the mapping of key names like `new_entity_id` (rename) clarifies scope. It is distinguishable from siblings like get_registry_entity, delete_registry_entity, and list_registry_entities, though it never says what a 'registry entity' actually is.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites, and no mention of alternatives despite ~50 sibling tools including delete_registry_entity and get_registry_entity. The agent must infer that this is the write counterpart to the read/delete siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upsert_helperA

Create or update a helper (reloads the domain automatically).

Args: domain: One of input_boolean / input_datetime / input_number / input_select / input_text / input_button. helper_id: Slug used as the helper id, e.g. 'moestuin_startdatum'. config: Full YAML config dict for the helper. Examples: input_boolean → {"name": "...", "initial": true, "icon": "mdi:bell"} input_datetime → {"name": "...", "has_date": true, "has_time": false} input_number → {"name": "...", "min": 0, "max": 100, "step": 1}

ParametersJSON Schema
NameRequiredDescriptionDefault
configYes
domainYes
helper_idYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It usefully discloses that the domain is reloaded automatically after the operation – a meaningful side effect. However, for a mutation tool it does not state whether an existing helper is overwritten (destructive) or how conflicts between create/update are resolved, nor any auth requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the verb phrase and reload behavior, then organizes the parameters cleanly with examples. The examples are useful rather than filler, though the multi-line arg list with inline examples is slightly verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the three params and one key side effect, which is decent for a 3-param, no-output tool. But with no annotations and no mention of overwrite/destructive behavior, error conditions, or how it interacts with existing helpers, an agent lacks enough to call it confidently in edge cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate – and it does well: it enumerates the allowed domain values, explains helper_id as a slug with an example, and gives concrete YAML config examples per domain. It doesn't fully document the config object's full schema (additionalProperties: true), leaving some ambiguity, but adds substantial meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Create or update a helper') and even adds the reload side-effect. Sibling tools like delete_helper/list_helpers/get_helper are clearly distinct by verb, though the description doesn't name them. Clear and specific, but no explicit sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies upsert semantics via 'Create or update' (so the agent knows it handles both cases) and notes the domain reload. But there is no guidance on when to use this vs. delete_helper or list_helpers, no note that the helper must not already exist under a conflicting type, and no prerequisites. Usage context is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upsert_history_stats_sensorA

Create or update a history_stats sensor entry.

A HA restart is required for it to take effect (response includes restart_required=true). Example config: {"entity_id": "binary_sensor.moestuin_regent", "state": "on", "type": "time", "end": "{{ now() }}", "duration": {"hours": 2}}

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
configYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It usefully discloses that a Home Assistant restart is required and that the response includes restart_required=true, but it omits other important traits for a mutation tool, such as permissions, overwrite behavior, and validation rules.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core action, then immediately notes the restart requirement and provides a concrete example. Every part is useful and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, no annotations, 0% parameter description coverage, and a nested config object, the description should do more. It covers restart behavior and gives one example config, but it leaves key parameter semantics and mutation details underspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and both parameters are required. The example config object adds meaningful structure for the 'config' parameter, but the 'name' parameter is not explained, and the full config schema remains undocumented beyond the example.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb-resource pair: 'Create or update a history_stats sensor entry.' This distinguishes it from sibling tools such as list_history_stats_sensors, get_history_stats_sensor, and delete_history_stats_sensor, and from other upsert_* tools by naming the exact resource.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the use case through 'Create or update', but it does not explicitly say when to prefer this tool over alternatives, nor does it state any when-not conditions. No sibling tools are named as alternatives, so the agent must infer routing from the resource name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upsert_notify_groupA

Create or update a notify platform:group entry.

After writing, HA must be restarted before notify.<name> becomes available (notify does not support hot reload).

Args: name: Group name; service becomes notify.<name>. services: List of notify services to aggregate, e.g. ["mobile_app_sm_s911b", "mobile_app_s25"]. extra: Optional extra top-level keys to include on the group entry.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
extraNo
servicesYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description carries the full burden, and it delivers a genuinely important side-effect disclosure: HA must be restarted before the new `notify.<name>` service is available because notify does not support hot reload. It does not cover permissions/auth, what happens to unmentioned existing keys, or return behavior, so it is strong but not complete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and resource, immediately followed by the critical restart caveat, then a compact Args list. Every sentence earns its place and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a config-writing tool with no output schema and no annotations, the description covers purpose, the key post-write requirement, and all three parameters. It omits return-value expectations and any permission prerequisites, which is a minor gap rather than a blocking one.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate and it does: it explains name (and the derived service id), services (with a concrete example list of mobile_app service ids), and extra (optional passthrough top-level keys). Every parameter gets meaning the schema alone does not provide.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (create or update / upsert) and a specific resource (a notify platform:group entry), and names the resulting entity `notify.<name>`. This clearly distinguishes it from siblings like delete_notify_group, get_notify_group and list_notify_groups.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'create or update' wording implies upsert semantics and the restart note gives operational context, but there is no explicit when-to-use/when-not-to-use guidance or reference to the sibling tools for reading or removing groups. Usage is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upsert_template_entityB

Create or update a template entity (reloads the template domain).

Args: template_type: One of sensor / binary_sensor / switch / button / number / select. name: Display name; also the unique key used for upsert. config: Template config (e.g. {"state": "{{ ... }}", "unit_of_measurement": "d", "icon": "mdi:sprout", "unique_id": "...", ...}).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
configYes
template_typeYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It does disclose one meaningful behavioral trait — the template domain gets reloaded — and the 'upsert' semantics imply existing entities are overwritten. However, it says nothing about permissions, failure modes, or what happens to config keys not supplied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The one-line summary is front-loaded with the operation and its side effect, and the args block is tight and scannable. Every line earns its place; nothing is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description covers inputs and the reload side effect adequately, but leaves the caller without any picture of success/failure behavior or what the upsert returns. It is workable but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate and largely does: template_type enumerates the six allowed values, name is identified as the unique upsert key, and config is illustrated with a concrete JSON example including state, unit_of_measurement, icon and unique_id. Only the config's full accepted key set remains open-ended.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb pair (create or update) and a specific resource (template entity), plus the side effect of reloading the template domain. It does not distinguish itself from nearby siblings such as upsert_helper or create_or_update_automation, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus upsert_helper, create_or_update_automation, or list_template_entities. The only contextual hint is the parenthetical about reloading the domain, which implies a heavier operation but is not framed as a when-to-use condition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 58 tool updatesv1.0.0
    • First observedappend_dashboard_card
    • First observedappend_dashboard_view
    • First observedcall_service
    • First observedcreate_dashboard
    • First observedcreate_or_update_automation
    • First observeddelete_automation
    • First observeddelete_dashboard
    • First observeddelete_dashboard_card
    • First observeddelete_dashboard_view
    • First observeddelete_device
    • First observeddelete_helper
    • First observeddelete_history_stats_sensor
    • First observeddelete_notify_group
    • First observeddelete_registry_entity
    • First observeddelete_template_entity
    • First observeddisable_config_entry
    • First observedenable_config_entry
    • First observedget_automation
    • First observedget_automation_api_log
    • First observedget_automation_yaml
    • First observedget_config_entry
    • First observedget_dashboard_config
    • First observedget_device
    • First observedget_helper
    • First observedget_history
    • First observedget_history_stats_sensor
    • First observedget_managed_package
    • First observedget_notify_group
    • First observedget_registry_entity
    • First observedget_state
    • First observedget_template_entity
    • First observedlist_areas
    • First observedlist_automations
    • First observedlist_config_entries
    • First observedlist_dashboards
    • First observedlist_devices
    • First observedlist_entities
    • First observedlist_helpers
    • First observedlist_history_stats_sensors
    • First observedlist_notify_groups
    • First observedlist_registry_entities
    • First observedlist_template_entities
    • First observedoverwrite_managed_package
    • First observedreload_config
    • First observedreload_config_entry
    • First observedremove_config_entry
    • First observedreplace_dashboard_card
    • First observedreplace_dashboard_view
    • First observedrestart_home_assistant
    • First observedset_dashboard_config
    • First observedtrigger_automation
    • First observedupdate_dashboard_metadata
    • First observedupdate_device
    • First observedupdate_registry_entity
    • First observedupsert_helper
    • First observedupsert_history_stats_sensor
    • First observedupsert_notify_group
    • First observedupsert_template_entity

TDQS

B3.1/5.0

Scored across 58 tools

Disambiguation4/5

Tools are largely grouped into clear CRUD families by resource (automations, helpers, dashboards, registry, etc.), but some overlaps exist: list_entities vs list_registry_entities, get_state vs get_history, and multiple upsert_* families can be confused without consulting descriptions. Descriptions help distinguish intent, so an agent can usually pick correctly.

Naming Consistency4/5

Names are predominantly snake_case with a verb_noun pattern (list_*, get_*, delete_*, etc.), making the set readable. However, there is an inconsistent mix of create_or_update_automation versus the upsert_* convention used for other resources, plus varied verbs like set, append, replace, and overwrite.

Tool Count2/5

With 58 tools, the server far exceeds the recommended 3–15 range and spans many disparate Home Assistant admin domains beyond automations (dashboards, registry, devices, config entries). The large number of CRUD groups multiplies the surface and makes the server heavy and harder to navigate.

Completeness4/5

The tool surface thoroughly covers automations, helpers, template entities, notify groups, history stats sensors, dashboards (down to view/card level), registry entities, devices, and config entries. Gaps remain for script and scene management, and there is no area creation/deletion, but core automation workflows are complete.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants to interact with Home Assistant to control smart home devices, query entity states, and manage automations using natural language. It provides over 90 tools for comprehensive system management, including dashboard configuration, service execution, and automation debugging.
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    MCP server for controlling and querying Home Assistant via its REST API, exposing tools to get entity states, list all states, and call services.
    16
    141 npm
    MIT