Manage Assist Pipeline
ha_manage_pipelineManage Home Assistant Assist pipelines and run sentences through Assist to test and execute voice commands.
Instructions
Manage Home Assistant Assist pipelines.
Use action='list' to discover pipeline IDs, action='get' to inspect one pipeline, action='create' or action='update' to write pipeline settings, action='set_preferred' to choose the preferred pipeline, and action='process' to run a sentence through Assist.
action='process' sends the sentence straight to Assist's conversation agent, so a matched intent executes: it turns on the light rather than reporting that it would. Its result carries response_type ('action_done', 'query_answer' or 'error') and, on an error, error_code such as 'no_intent_match' — Assist declining a sentence is an answer, not a tool failure, so inspect those fields rather than expecting a raised error. Use ha_call_service to act on an entity directly; use this to test what Assist itself understands. When the built-in agent answers, a matching conversation trigger runs its automation: that agent checks its sentence triggers before it matches intents, so this is not limited to intents. Even with pipeline_id, the sentence goes to the agent directly. So with an agent other than the built-in one, neither sentence triggers nor prefer_local_intents apply — a full pipeline run is what adds those for other agents.
EXAMPLES:
Get the preferred pipeline: ha_manage_pipeline(action="get", pipeline_id="preferred")
Create by cloning a pipeline: ha_manage_pipeline(action="create", base_pipeline_id="preferred", name="Local Assist", conversation_engine="conversation.local_llm")
Update the agent and clear the TTS voice: ha_manage_pipeline(action="update", pipeline_id="preferred", conversation_engine="conversation.local_llm", tts_voice="")
Run a sentence through one pipeline's agent: ha_manage_pipeline(action="process", sentence="turn on the kitchen light", pipeline_id="preferred")
Continue a conversation: ha_manage_pipeline(action="process", sentence="and the hallway?", conversation_id="")
Non-nullable fields such as name, language, conversation_language, and conversation_engine must be omitted or non-empty.
If a Claude Desktop user gets a 4-minute timeout with no result on this call, read the target back before repeating it, and tell them to wait a few seconds before clicking the manual-approve button, as clicking it too quickly is known to cause hangs in Claude Desktop. This workaround is specific to Claude Desktop.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Pipeline display name. Required when action='create'. | |
| action | Yes | Pipeline operation: list, get, create, update, set_preferred, or process. | |
| agent_id | No | For process only, the conversation agent entity ID to answer, e.g. 'conversation.home_assistant'. Overrides the agent taken from pipeline_id; omit both for the default agent. | |
| language | No | Pipeline language, e.g. 'en'. For process, the language to recognise the sentence in. | |
| sentence | No | Natural-language command to run through Assist. Required when action='process'. | |
| tts_voice | No | Text-to-speech voice. Pass empty string to clear. | |
| stt_engine | No | Speech-to-text engine. Pass empty string to clear. | |
| tts_engine | No | Text-to-speech engine. Pass empty string to clear. | |
| pipeline_id | No | Assist pipeline ID. Required for get, update, and set_preferred. Optional for process, where it selects the conversation agent and language that pipeline is configured with. | |
| stt_language | No | Speech-to-text language. Pass empty string to clear. | |
| tts_language | No | Text-to-speech language. Pass empty string to clear. | |
| wake_word_id | No | Wake-word ID. Pass empty string to clear. | |
| make_preferred | No | For create/update only, also set the resulting pipeline as preferred. Ignored for other actions. | |
| conversation_id | No | For process only, the conversation to continue. Returned in the response so follow-up sentences keep their context. | |
| base_pipeline_id | No | Pipeline ID to clone when creating. Omit to clone the preferred pipeline. Ignored for non-create actions. | |
| wake_word_entity | No | Wake-word entity ID. Pass empty string to clear. | |
| conversation_engine | No | Conversation agent entity ID or engine ID. Required when action='create'. | |
| prefer_local_intents | No | Whether Home Assistant local intents should be preferred before the conversation engine. | |
| conversation_language | No | Conversation language, usually '*'. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||