Get Integration
ha_get_integrationRetrieves integration details or lists configured integrations with filters and pagination. Use it to inspect options, schemas, subentries, and diagnostics for setup or troubleshooting.
Instructions
Get integration (config entry) information with pagination.
Without an entry_id: Lists all configured integrations with optional filters. With an entry_id: Returns detailed information including full options/configuration.
WHEN NOT TO USE:
Changing an entry, or describing a setup form or a form behind a menu: use ha_set_integration (without config it returns the form).
EXAMPLES:
List / search: ha_get_integration(query="zigbee")
Get an entry with its editable fields: ha_get_integration(entry_id="abc123", include_schema=True)
Diagnostics dump, paged along a list-valued path: ha_get_integration(entry_id="abc123", include_diagnostics=True, diagnostics_data_path="", diagnostics_data_limit=10, diagnostics_data_offset=20)
Inspect a subentry reconfigure schema: ha_get_integration(entry_id="abc123", include_subentry_schema=True, subentry_type="conversation", subentry_id="sub123")
Options flow that opens with a menu: ha_get_integration(entry_id="abc123", include_schema=True) lists menu_options; ha_set_integration(entry_id="abc123", menu_choice="") opens that form
List template entries with their options: ha_get_integration(domain="template")
Only service integrations: ha_get_integration(integration_type="service")
An entry's panel commands: ha_get_integration(entry_id="abc123", include_ws_commands=True)
OPTIONS: with the component, options are the stored mapping as-is,
so a field never set may be absent and a section's fields stay nested
under the section key (e.g. a template helper's additional_options);
values that match a secrets.yaml entry are returned as
"**redacted**". Without it, include_schema=True reads options
from the options form: unset fields at their schema default, a
section's fields at the top level. With redact_secrets on, every
option value of an entry that has an options flow is redacted unless
include_schema=True reads the form that names the password fields;
an entry without an options flow has no such form, so its option
values come back as stored.
Each entry carries log_level: the canonical Python logger level name
(DEBUG/INFO/WARNING/ERROR/CRITICAL) when the
integration has a log-level override (set one with
ha_set_integration(log_level=...)), or "DEFAULT"
(uppercase sentinel) when no override is set; and log_level_raw: the
original numeric level (e.g. 10 for DEBUG) when HA returned an int,
None otherwise. This is distinct from the app side, where
ha_get_app returns Supervisor's lowercase "default" literal — do
not cross-compare.
Tool call template
This tool declares no required parameters. Add optional parameters from the input schema as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {},
"name": "ha_get_integration"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max entries to return per page in list mode | |
| query | No | When listing, search by domain or title. | |
| domain | No | Filter by integration domain (e.g. 'template', 'group'). When set, includes the full options/configuration for each entry. | |
| offset | No | Number of entries to skip for pagination | |
| entry_id | No | Config entry ID to get details for. | |
| device_id | No | With include_diagnostics=True, return the device-scoped diagnostics dump for this device instead of the full integration dump. Some integrations only expose config-entry-level dumps. | |
| exact_match | No | Use exact substring matching for query filter. Set to False for fuzzy matching when the query may contain typos. | |
| subentry_id | No | Existing subentry ID used with include_subentry_schema=True to inspect a reconfigure flow. | |
| subentry_type | No | Integration-defined subentry type used with include_subentry_schema=True. | |
| include_schema | No | When entry_id is set, also describe the options flow form as options_schema.fields: each field's type, current value and Home Assistant's help text. A flow that opens with a menu lists menu_options instead (ha_set_integration(entry_id=..., menu_choice=...) opens one), and a flow Home Assistant aborts gives aborted, plus reason_text when Home Assistant has a string for the reason. Only applies when supports_options=true. The flow is started, described and aborted; starting it runs the integration's own flow code, and some integrations act there (Sonoff LAN signs in to its cloud). For an integration's setup form, use ha_set_integration(domain=...). | |
| include_options | No | Include the options object for each entry. Automatically enabled when domain filter is set. For UI-created flow-based helpers (template, group, utility_meter, derivative, ...), the current config — template body, group members, source entity, etc. — is here. Read through the ha_mcp_tools custom component; without it an entry that has an options flow comes back without options and a warning, and only include_schema on that entry reads them. With the component, prefer this over include_schema when you only need the current values; use include_schema when you also need the field types or selector metadata. | |
| integration_type | No | When listing, keep only entries whose integration has this type, matched by Home Assistant itself (the manifest's integration_type, e.g. 'device', 'hub', 'service', 'helper'). Home Assistant does not reject an unknown type: for any type but 'helper' it also keeps entries whose integration it cannot find (e.g. a removed custom integration), so an unknown type returns only those. | |
| diagnostics_fields | No | Top-level keys to keep from the diagnostics data payload (e.g. ['home_assistant', 'issues']). Accepts a JSON list or comma-separated string. Only applies when include_diagnostics=True and the data payload is a dict. Unknown keys are dropped and listed under omitted_fields. | |
| include_subentries | No | When entry_id is set, include config subentries for the integration entry. | |
| include_diagnostics | No | When entry_id is set, also fetch the integration's diagnostics dump — integration-defined JSON (commonly includes redacted config, device list, state snapshots; exact top-level keys vary by integration), the same artifact as the UI's 'Download diagnostics'. Payloads can be large (Hue ~290 KB, ZHA/MQTT/ESPHome several MB) — pair with diagnostics_fields or diagnostics_truncate_at_bytes. | |
| include_ws_commands | No | When entry_id is set, also list the integration's own '<domain>/' WebSocket commands (the API its panel uses, e.g. KNX's knx/get_knx_project) under ws_commands, each with the request schema Home Assistant registered for it. Send one with ha_set_integration(entry_id=..., ws_command=...). Needs the ha_mcp_tools custom component; without it a warning says the list is unavailable. | |
| diagnostics_data_path | No | Dotted path into the diagnostics data sub-tree (e.g. '<list-valued path>' for per-device records, 'home_assistant.version' for HA core version; the exact key path varies by integration version). Walks into the post-fields payload. Resolution failures replace data with null and surface data_path_error. Only applies when include_diagnostics=True. | |
| show_advanced_options | No | When include_subentry_schema=True, ask older Home Assistant versions to expose advanced flow options. No-op on HA 2026.6+; pending removal before HA 2027.6. | |
| diagnostics_data_limit | No | Pagination window size for list-valued diagnostics_data_path results. When set with a list-resolved path, swaps data for a pagination envelope {path, items, offset, limit, total, has_more}. Default None returns the full resolved value. Only applies when include_diagnostics=True. | |
| diagnostics_data_offset | No | Pagination start index for list-valued diagnostics_data_path results. Ignored when diagnostics_data_path is unset, diagnostics_data_limit is unset, or the resolved value is not a list. Only applies when include_diagnostics=True. | |
| include_subentry_schema | No | When entry_id is set, describe a config subentry flow's form as subentry_schema.fields (same shape as include_schema); the flow is aborted afterwards. Pair with subentry_type, and optionally subentry_id for the reconfigure form. | |
| diagnostics_truncate_at_bytes | No | Byte cap on the serialized diagnostics payload (after diagnostics_fields and diagnostics_data_path have been applied). On hit, drops data and emits truncated=true, bytes_total, byte_cap, plus available_fields (when the capped value is a dict). Recommended starting point: 20000 bytes. Only applies when include_diagnostics=True. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||