Home Admin Agent Tools¶
This page documents the specialized tools available to the Home Admin Agent (Ralph) for interacting with home services.
What it is¶
Home Admin Agent Tools are the local service adapters exposed to the Ralph home-admin agent. They wrap the complex REST APIs of household services into simplified, agent-discoverable tools following the MCP or standard tool-calling patterns.
What problem it solves¶
They give the agent controlled, high-level interfaces for querying and changing household task and smart-home systems. This prevents the agent from needing direct database access or unrestricted shell execution, providing a layer of security and predictability to autonomous home operations.
Where it fits in the stack¶
Agents / Home administration tool layer. It sits between the reasoning agent (Ralph) and the household's core services, acting as a translator for intent-to-action.
Typical use cases¶
- Automated Morning Briefing: Querying Vikunja for today's tasks and Home Assistant for the current weather/house state.
- Scene Management: Triggering "Good Night" or "Away" scenes based on family schedule or manual intent.
- Task Delegation: Automatically creating maintenance tasks in Vikunja when Home Assistant detects a sensor alert (e.g., "Fridge door left open").
Strengths¶
- Security: Actions are limited by the tool's defined schema and API scopes.
- Discoverability: Standard argument definitions allow LLMs to reliably use the tools without retraining.
- Portability: The tools follow patterns that can be easily ported to other agent frameworks (e.g., LangGraph or MCP).
Limitations¶
- Permission Scoping: The tools operate with the permissions of the configured API tokens. If a token has broad access, the agent inherits that access.
- Lack of Transactional Rollback: Home state changes (e.g., turning on a light) or task creations in Vikunja cannot always be automatically rolled back if a multi-step workflow fails.
- Dependency on Local Network: These tools require stable connectivity to the local instances of Home Assistant and Vikunja.
When to use it¶
- When an autonomous agent needs to read from or write to the household's task and automation systems.
- When you want to provide a "Natural Language" interface for complex home operations.
When not to use it¶
- For services that lack configured credentials or clear ownership.
- When an action is extremely sensitive and requires a human-in-the-loop (HITL) approval that is not yet implemented.
Vikunja Tools¶
These tools allow the agent to manage tasks and projects in Vikunja.
vikunja_query_tool¶
- Description: Queries tasks from Vikunja.
- Arguments:
project_id(optional): Filter by project ID.filter_query(optional): Custom filter string.search(optional): Search term for task titles.
vikunja_create_tool¶
- Description: Creates a new task in a specified project.
- Arguments:
title: Task title.project_id: ID of the target project.description(optional): Task description.due_date(optional): ISO 8601 due date.priority(optional): Priority (1-5).
vikunja_update_tool¶
- Description: Updates an existing task.
- Arguments:
task_id: ID of the task to update.title(optional): New title.description(optional): New description.due_date(optional): New due date.done(optional): Completion status.priority(optional): New priority.
vikunja_relation_tool¶
- Description: Links two tasks together.
- Arguments:
task_id: Source task ID.other_task_id: Target task ID.relation_type: Type of relation (e.g.,subtask,blocking).
Home Assistant Tools¶
These tools allow the agent to monitor and control smart home devices via Home Assistant.
ha_state_query_tool¶
- Description: Gets the current state of any entity.
- Arguments:
entity_id: The ID of the entity (e.g.,sensor.temperature).
ha_scene_trigger_tool¶
- Description: Triggers a predefined scene.
- Arguments:
scene_id: The ID of the scene (e.g.,scene.good_morning).
ha_light_control_tool¶
- Description: Turns lights on/off or adjusts brightness.
- Arguments:
entity_id: The ID of the light.action:turn_onorturn_off.brightness(optional): 0-255.
Configuration¶
These tools require the following environment variables to be set:
| Variable | Description | Default |
|---|---|---|
VIKUNJA_API_URL |
Base URL for Vikunja API | http://localhost:3456/api/v1 |
VIKUNJA_API_TOKEN |
API token for Vikunja | (Required) |
HOME_ASSISTANT_URL |
Base URL for HA API | http://localhost:8123/api |
HOME_ASSISTANT_TOKEN |
Long-lived access token for HA | (Required) |
Technical Examples¶
Example: Tool Definition (MCP Format)¶
This is an example of how the vikunja_create_tool would be defined in an MCP server config.
{
"name": "vikunja_create_tool",
"description": "Creates a new task in a specified project.",
"input_schema": {
"type": "object",
"properties": {
"title": { "type": "string", "description": "Task title" },
"project_id": { "type": "integer", "description": "ID of the target project" },
"description": { "type": "string", "description": "Task description" }
},
"required": ["title", "project_id"]
}
}
Example: Agent Tool Calling (Python)¶
Using a framework like LangGraph or standard OpenAI tool calling.
import requests
import os
def vikunja_create_tool(title: str, project_id: int, description: str = ""):
url = f"{os.environ['VIKUNJA_API_URL']}/projects/{project_id}/tasks"
headers = {"Authorization": f"Bearer {os.environ['VIKUNJA_API_TOKEN']}"}
data = {"title": title, "description": description}
response = requests.put(url, headers=headers, json=data)
response.raise_for_status()
return response.json()
# Example invocation by an agent
new_task = vikunja_create_tool(
title="Buy milk",
project_id=1,
description="Needed for breakfast tomorrow"
)
print(f"Created task: {new_task['id']}")
Example: Scene Trigger (cURL)¶
Manually testing the scene trigger tool via the Home Assistant API.
curl -X POST http://localhost:8123/api/services/scene/turn_on \
-H "Authorization: Bearer $HOME_ASSISTANT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"entity_id": "scene.good_night"}'
Related tools / concepts¶
Sources / References¶
Contribution Metadata¶
- Last reviewed: 2026-05-24
- Confidence: high