Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
HOMEASSISTANT_URLYesBase URL of your Home Assistant instance, e.g. http://homeassistant.local:8123. Use http:// and the port the instance runs on (8123 unless changed; 80 on Home Assistant OS). No trailing slash needed. The alias HA_URL is also accepted.
HOMEASSISTANT_TOKENYesA Home Assistant long-lived access token (profile → Long-Lived Access Tokens → Create Token). The alias HA_TOKEN is also accepted.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
ha_get_configA

Instance configuration: location, time zone, unit system, version, loaded components. Best first call to confirm the connection works.

ha_list_statesA

All entity states (entity_id, state, attributes). Args: domain (optional, e.g. "light"), limit (default 50), offset. Always pass a domain on a real install — the full list is huge.

ha_get_stateB

Current state and attributes of a single entity. Args: entityId (e.g. sensor.kitchen_temperature).

ha_list_servicesA

Services that can be called. Without domain: domain -> [service names] map (small). With domain: full definitions for that domain, including the fields each service accepts. Use this before ha_call_service when unsure about a service name or its data fields.

ha_get_historyA

State changes for one or more entities. Args: entityIds (required), start (default: 1 day ago), end, minimalResponse (default true — only state + last_changed, much smaller), noAttributes. Returns: one array per entity. Requires the recorder integration.

ha_get_logbookA

Human-readable history entries ("Light turned on by automation"). Args: start (default: 1 day ago), entity (optional), end. Returns entries with when, name, message, entity_id.

ha_get_error_logA

Errors logged during the current Home Assistant session, as plain text. Useful when something misbehaves.

ha_render_templateA

Render a Home Assistant Jinja2 template server-side. Args: template, variables (optional). The cheapest way to read or compute many values at once, e.g. "{{ states('sensor.kitchen_temperature') }}" or "{% for s in states.light %}{{ s.entity_id }}: {{ s.state }}\n{% endfor %}". Returns: the rendered string.

ha_list_calendarsB

Calendar entities available in this instance. Args: none. Returns entity_id and name.

ha_get_calendar_eventsC

Events of one calendar between two timestamps. Args: entityId (required), start, end (both required).

ha_call_serviceA

Control Home Assistant: run a service in a domain. POST /api/services/{domain}/{service}. Args: domain (e.g. "light"), service (e.g. "turn_on"), data (service payload — usually {"entity_id": "..."}); extra keys go in data, e.g. {"entity_id":"light.study","brightness_pct":40}. Common: light.turn_on/turn_off/toggle, switch.toggle, cover.open_cover/close_cover/set_cover_position, climate.set_temperature/set_hvac_mode, media_player.media_play_pause/volume_set, fan.turn_on, lock.lock/unlock, vacuum.start, script.turn_on, automation.trigger, scene.turn_on, notify.send_message, homeassistant.turn_off (whole domain or entity). Returns: the states that changed while the service ran, plus the service response when the service supports it.

ha_fire_eventB

Fire a custom event on the event bus (automations can listen for it). Args: eventType, eventData. Args: eventType (e.g. "my_custom_event"), eventData (optional JSON object).

ha_set_stateA

Overwrite an entity's state and attributes. This only changes the representation inside Home Assistant — it does NOT talk to the physical device. To control a device, use ha_call_service instead. Args: entityId (required), state (required), attributes (optional). Creates the entity when it does not exist yet.

ha_delete_stateA

Remove an entity created through ha_set_state. Irreversible: the entity and its attributes are gone. Args: entityId. Only works on entities that are not backed by an integration.

ha_call_apiA

Call any REST endpoint under /api for cases without a dedicated tool, e.g. GET /api/components, GET /api/events, POST /api/config/core/check_config, GET /api/calendars/... . Args: method (GET|POST|DELETE), path (must start with /api and may include a query string), body (optional JSON). Prefer the dedicated tools when one exists; this one cannot bypass their guards.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.8/5.0

Scored across 15 tools

Disambiguation5/5

Each tool targets a clearly distinct resource or action, and the descriptions explicitly distinguish similar tools such as ha_set_state vs ha_call_service and ha_get_history vs ha_get_logbook. ha_call_api is also clearly positioned as a fallback rather than an overlapping alternative.

Naming Consistency5/5

All tools use a consistent ha_ prefix followed by snake_case verb_noun naming (e.g. ha_get_state, ha_list_services, ha_call_service, ha_delete_state). The naming convention is predictable throughout the set.

Tool Count5/5

Fifteen tools is well scoped for a Home Assistant API client, covering core read, control, and fallback operations without excessive fragmentation. Each tool has a clear purpose and earns its place.

Completeness4/5

The set covers essential Home Assistant workflows: configuration, states, services, history, logbook, templates, calendars, events, and direct state manipulation. Some dedicated management operations (e.g. automations, scripts, deeper config flows) are not surfaced directly, though ha_call_api provides a workaround.

Maintenance

ActivityMaintained
ResponsivenessNo issues