Beacon Docs

AI and Voice Control

Beacon supports three approaches for voice and AI control. Choose the one that fits your setup, or use them all together.

ApproachBest forRequires LLM?
Voice APIQuick automations, custom UIsNo
MCP ServerClaude Code, LLM agentsYes
HA Custom SentencesHome Assistant AssistNo

Voice API (built-in)

Beacon’s server exposes a REST endpoint for natural-language commands. It uses keyword matching — no LLM, no cloud service, and no added latency.

Endpoint

POST /beacon-action/voice
Content-Type: application/json

{ "text": "add milk to the grocery list" }

Response

{
  "response": "Added milk to grocery",
  "action": "add_item",
  "entity_id": "todo.grocery",
  "success": true
}

Supported commands

Lists: add <item> to <list> | mark <item> as done | check off <item> | complete <item>

Media: play | pause | next song | skip | set volume to 50

Navigation: show <view> | open <view> | go to <view>

Queries: what's on today | today's schedule | what's the weather

Examples

# Add a grocery item
curl -X POST http://<beacon-host>:8099/beacon-action/voice \
  -H 'Content-Type: application/json' \
  -d '{"text": "add eggs to the grocery list"}'

# Control media
curl -X POST http://<beacon-host>:8099/beacon-action/voice \
  -H 'Content-Type: application/json' \
  -d '{"text": "set volume to 40"}'

# Check the calendar
curl -X POST http://<beacon-host>:8099/beacon-action/voice \
  -H 'Content-Type: application/json' \
  -d '{"text": "what'\''s on my calendar"}'

The API resolves list names and media players by fuzzy-matching against available HA entities. For media commands, it automatically picks the active player (playing > paused > first available).


MCP Server (for LLM agents)

The Model Context Protocol (MCP) server exposes Beacon’s features as structured tools that LLM agents can call. This is the best approach for AI-powered automation where an LLM decides which actions to take.

Setup

For Claude Code:

claude mcp add beacon -- node /path/to/beacon/mcp-server.cjs

For Claude Desktop or other MCP clients, add to your config file:

{
  "mcpServers": {
    "beacon": {
      "command": "node",
      "args": ["beacon/mcp-server.cjs"],
      "env": {
        "SUPERVISOR_TOKEN": "your-long-lived-access-token",
        "HA_URL": "http://your-ha-instance:8123"
      }
    }
  }
}
VariableDefaultDescription
SUPERVISOR_TOKENRequired. HA long-lived access token
HA_URLhttp://supervisor/coreHA URL (change when running outside the add-on)
DATA_DIR/dataBeacon data directory (for chore files)

All 10 tools

Lists

ToolDescriptionRequired inputs
beacon_add_list_itemAdd an item to a todo listlist_name, item
beacon_get_list_itemsGet all items from a listlist_name
beacon_check_itemMark an item as completedlist_name, item
beacon_uncheck_itemUncomplete an itemlist_name, item

List names are fuzzy-matched. Pass "grocery", "shopping list", or "todo.shopping_list".

Calendar

ToolDescriptionRequired inputs
beacon_get_calendarGet events for today + N daysdays_ahead (optional, default 0)
beacon_create_eventCreate a calendar eventcalendar, summary, start, end

For all-day events, pass date strings ("2026-04-07") and set all_day: true.

Media

ToolDescriptionRequired inputs
beacon_get_media_playersList all players and states(none)
beacon_media_controlPlay, pause, next, previous, volumeentity_id, action

For volume, also pass volume_level (0.0 to 1.0).

Weather

ToolDescriptionRequired inputs
beacon_get_weatherCurrent weather conditionsentity_id (optional)

Chores

ToolDescriptionRequired inputs
beacon_manage_choreComplete/uncomplete a choreaction, chore_name, member_name

Example conversation

You: Add milk and eggs to our grocery list, then tell me what’s on the calendar this week.

The LLM agent would call beacon_add_list_item twice (once for milk, once for eggs), then call beacon_get_calendar with days_ahead: 7, and summarize the results in natural language.


HA Custom Sentences (for HA Assist)

Beacon ships with custom sentence and intent handler files for Home Assistant Assist. Once installed, you can use voice commands through any Assist-enabled device — smart speakers, the HA companion app, or the Assist dialog in HA.

Available voice commands

Say thisWhat happens
”Add milk to the grocery list”Adds item to your todo list
”Mark dishes as done”Completes a chore
”Alex finished vacuuming”Completes a chore for a specific person
”What’s on the calendar today”Reads today’s events aloud
”What’s on the calendar tomorrow”Reads tomorrow’s events
”Show the dashboard”Navigates the Beacon UI
”Set a timer for 5 minutes”Starts a countdown timer
”What’s on the grocery list”Reads uncompleted grocery items
”What chores are left”Lists remaining chores

Installation

Run the included install script:

# Auto-detect the HA config directory
beacon/scripts/install-voice-intents.sh

# Or specify it
beacon/scripts/install-voice-intents.sh /config

Then reload the Conversation integration: Developer Tools > YAML > Conversation.

Prerequisites

The intents reference these entities by default. Create or rename them to match:

EntityPurposeHow to create
todo.groceryGrocery listAny HA todo integration
todo.choresChore listAny HA todo integration
calendar.familyCalendarGoogle Calendar, CalDAV, or Local Calendar
timer.beacon_voiceTimerSettings > Helpers > Timer, name “Beacon Voice”

If your entities have different names, edit the installed YAML files in your HA config directory (custom_intents/beacon.yaml and custom_sentences/en/beacon.yaml).

Customizing

The sentence files use HA’s custom sentence syntax:

  • [the] means the word is optional
  • {item} captures a text slot
  • Multiple patterns per intent are supported

To add new phrasings, edit /config/custom_sentences/en/beacon.yaml. To add another language, create a file like /config/custom_sentences/es/beacon.yaml with the same intent names and translated sentences.

Was this page helpful?

Give Feedback