digitomancy-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DGM_HOME | No | The workspace directory where devices, maps and routines live. Created on first run. | ~/.digitomancy |
| DGM_DEVICE | No | The name of the device to use (from devices.yaml), as an alternative to passing -d NAME. |
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": true
} |
| logging | {} |
| prompts | {
"listChanged": true
} |
| resources | {
"subscribe": false,
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| releaseC | Stop uiautomator on the device so Tasker/AutoInput accessibility comes back. |
| devicesB | Registered devices (devices.yaml), the default, and which serials adb sees right now. |
| lookC | Current app + compact UI node list. Lines: #idx class 'text' id=res @(x,y normalized) [tap]. |
| screenshotA | PNG of the screen (downscaled to save tokens). Use when |
| tapC | Tap. Floats in [0,1] are screen fractions (preferred); otherwise pixels. |
| tap_nodeC | Tap node #index from the last |
| tap_anchorC | Tap a mapped anchor 'map:name' (selector first, saved point as fallback). |
| swipeB | Swipe between two points (fractions or pixels). Scroll down = swipe(0.5,0.75,0.5,0.25). |
| keyB | Press a key: home, back, enter, recent, power, volume_up, volume_down, delete… |
| type_textC | Type into the focused field. |
| launchC | Start an app by package name. |
| checkC | Evaluate a mapped screen 'map:screen' (optionally waiting). Returns ok + per-condition detail. |
| list_mapsC | All maps with their anchors and screens. |
| save_anchorC | Remember a tap target. From a |
| list_routinesC | Known routines with params and stage names (stages are resume points). |
| run_routineC | Run a routine. On failure returns the failed stage, snapshot dir, and a resume hint. |
| tasker_runB | Fire a Tasker task via broadcast (needs the DGM Dispatch profile, docs/TASKER.md). |
| tasker_lookupA | Search the Tasker catalog (built by Returns matching tasks with their actions and calls, plus hazard flags. Never fire a task marked hazard; tasker_run refuses them anyway. |
| shellC | Raw |
| workspaceB | Where devices.yaml, maps/ and routines/ live (created and seeded if missing). Edit devices.yaml there. |
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 20 tools
Most tools have clearly distinct purposes, but tap, tap_node, and tap_anchor overlap as three tap variants, and tasker_run versus run_routine could be confused without careful reading. The descriptions generally clarify when to use each tool, so ambiguity is limited.
There is a mix of snake_case multiword names and bare nouns/single verbs such as shell, workspace, look, tap, and swipe. The convention is readable but not consistent across the set.
20 tools is on the heavy side for a device-automation server, though most correspond to real primitives rather than duplicates. It sits in the borderline-heavy 16–25 range.
The set covers device inspection, interaction, maps/anchors, routines, Tasker, and raw adb shell. It lacks structured CRUD for maps and routines and some UI actions like long-press, but the shell escape hatch prevents hard dead ends.