otolawn-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| OTO_EMAIL | Yes | The email address you use in the OtO mobile app | |
| OTO_PASSWORD | Yes | Your OtO app password |
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
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_devicesB | List all OtO devices on the account with names and winter-mode state. |
| get_device_statusB | Get live hardware status for one device: battery voltage/current, charge state, comms info, and any error data. |
| get_device_logsB | Get the device's recent log entries (watering starts/stops, errors, battery and connectivity events), newest first. |
| list_zonesA | List watering zones (across all devices or for one device), with each zone's name, enabled state, water amount and schedule days. |
| get_zoneB | Get full details of one zone: paths, nozzle angles, water amounts, bottle/fertilizer state and scheduling info. |
| set_zone_enabledB | Enable or disable a zone. A disabled zone is skipped by schedules; manual watering may still be requested. |
| rename_zoneC | Rename a watering zone. |
| set_zone_wateringB | Set the scheduled water amount for a zone. Pass water_depth_mm (the depth of water the zone should receive per watering day) or minutes. Example: 9.5 mm is a typical summer day for turf grass. |
| water_zoneA | START WATERING a zone now, manually. Give water_depth_mm (water depth in millimetres, e.g. 0.5-10) or minutes (runtime). The device begins its run within a couple of minutes. Returns the event scheduleId needed to stop it. If allow_conflicts is false the request fails when the device is already due to water at this time. |
| stop_wateringA | Stop an active manual watering run. Get the scheduleId from water_zone or from the device's event list. |
| list_eventsA | List irrigation events. start/end are dates (YYYY-MM-DD), end included; default window is 7 days back through 14 days ahead. Set only_active=true to fetch just events that are scheduled, pending or currently executing. |
| cancel_eventB | Cancel a scheduled irrigation event (or set cancel=false to un-cancel a rain-skipped event and force it to water anyway). |
| list_routinesA | List watering schedules (routine definitions): pattern (daily/even/odd/ interval/daysOfWeek), start time, enabled flag and member zones. |
| set_routine_enabledA | Enable or disable a watering schedule. Fetch-current-then-merge is used so other schedule settings are preserved. |
| get_weatherA | Get the local weather used by the OtO weather engine: current conditions, weekly rain/temperature forecast and historical rain. |
| list_messagesC | List recent account messages from OtO (announcements, tips). |
| get_device_battery_historyB | Get the device's battery level history (percent values, one per day). |
| add_zoneA | Create a new unconfigured zone on a device. The device must calibrate the throw path via the app afterwards (cloud-only path mapping is not possible), but the zone appears immediately and is waterable. |
| delete_zoneB | Delete a zone. This cannot be undone from this tool; the app keeps deleted zones recoverable for a short period. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 19 tools
Most tools target clearly distinct resources and actions (zones vs routines vs events vs devices). A few pairs could be momentarily confused—cancel_event vs stop_watering, and water_zone (manual) vs set_zone_watering (scheduled amount)—but the descriptions explicitly clarify the manual/scheduled distinction.
Every tool follows a consistent snake_case verb_noun pattern (list_zones, get_zone, set_zone_enabled, water_zone, cancel_event, etc.). No mixed conventions or vague verbs appear.
19 tools is on the heavier side but the domain is genuinely broad (zones, routines, events, devices, weather, messages), and each tool maps to a distinct operation. Slightly heavy but not bloated.
Zones have full lifecycle coverage (add/get/list/rename/enable/delete/set-watering) and devices/events are well covered. The main gap is routines: they can only be listed and enabled/disabled, with no create/edit, though zone-level scheduling partially compensates.