Skip to content

Model Context Protocol ​

The MCP implementation by Manatee allows LLMs to use Manatee as a tool for building flows or doing on-the-fly desktop manipulation.

Enabling MCP ​

MCP is disabled by default. To enable it, open Settings and turn on Enable the Model Context Protocol for LLM integration.

Once enabled, Manatee accepts incoming MCP connections via a small bridge executable (mcpbridge.exe) that translates between the MCP client’s stdio transport and Manatee’s internal TCP/netstring transport.

Connecting a Client ​

All clients connect via mcpbridge.exe, a small bridge that translates between the MCP stdio transport used by LLM clients and Manatee’s internal TCP/netstring transport.

In all configurations below, replace the path with the actual installation path of Manatee. The port can be found in the Windows registry under:

HKEY_CURRENT_USER\SOFTWARE\Sirenia\Manatee\Ports\netstringtcp

Claude Code ​

sh
claude mcp add manatee -- "C:\path\to\manatee\MCPBridge\mcpbridge.exe" --server localhost:24697

Claude Desktop ​

Config file location: %APPDATA%\Claude\claude_desktop_config.json

json
{
  "mcpServers": {
    "manatee": {
      "command": "C:\\path\\to\\manatee\\MCPBridge\\mcpbridge.exe",
      "args": ["--server", "localhost:24697"]
    }
  }
}

Cursor ​

Config file location: %APPDATA%\Cursor\mcp.json

json
{
  "mcpServers": {
    "manatee": {
      "command": "C:\\path\\to\\manatee\\MCPBridge\\mcpbridge.exe",
      "args": ["--server", "localhost:24697"]
    }
  }
}

VS Code (GitHub Copilot) ​

Config file location: .vscode/mcp.json in your workspace, or user settings.

json
{
  "servers": {
    "manatee": {
      "type": "stdio",
      "command": "C:\\path\\to\\manatee\\MCPBridge\\mcpbridge.exe",
      "args": ["--server", "localhost:24697"]
    }
  }
}

Tools ​

Manatee exposes 15 tools via tools/list and tools/call.

Session Management ​

get_sessions ​

Returns all active automation sessions.

json
{
  "sessions": [
    {
      "id": "abc123",
      "color": "#4287f5",
      "tag": "Foo",
      "isCurrent": true
    }
  ]
}

activate_session ​

Switches the active session.

ParameterTypeRequiredDescription
sessionIdstringYesThe ID of the session to activate

Application Discovery ​

get_applications ​

Lists all applications configured in Manatee.

json
{
  "applications": [{ "id": "app-identifier", "name": "My Application" }]
}

Code Execution ​

run_code ​

Executes arbitrary ES5 JavaScript in an application context. If the target application is not running it will be started. The value of the last expression is returned as the tool result.

ParameterTypeRequiredDescription
applicationstringYesName or ID of the target application
codestringYesES5 JavaScript to execute
javascript
// Example: read a field value and return it
var value = new Field("**/Username").read();
value;

Log calls inside run_code (e.g. Log.info(...)) are forwarded to the MCP client in real time as notifications/message events. Other execution steps are forwarded as well so the client can observe progress.

Inspecting apps and fields ​

take_screenshot ​

Captures a JPEG screenshot of an application window.

ParameterTypeRequiredDescription
applicationstringYesName or ID of the target application

Returns an image content block (type: "image", mimeType: "image/jpeg").

inspect_application ​

Returns a full JSON representation of all UI elements in the application. Prefer this over screenshots when you need to understand screen structure - it is faster and more precise.

ParameterTypeRequiredDescription
applicationstringYesName or ID of the target application

inspect_field_by_path ​

Inspects a single UI element identified by a field path.

ParameterTypeRequiredDescription
applicationstringYesName or ID of the target application
fieldPathstringYesField path, e.g. **/OK for a deep recursive search of an OK button

inspect_field_by_coordinates ​

Inspects the UI element at the given pixel coordinates, relative to the top-left corner of the application window.

ParameterTypeRequiredDescription
applicationstringYesName or ID of the target application
xintegerYesX coordinate (pixels from left edge)
yintegerYesY coordinate (pixels from top edge)

resolve_field_path_from_coordinates ​

Derives a reusable, robust field path from pixel coordinates using Manatee’s path evolution algorithm. Field paths are more reliable than coordinates across different screen layouts and resolutions.

ParameterTypeRequiredDescription
applicationstringYesName or ID of the target application
xintegerYesX coordinate
yintegerYesY coordinate

Returns a path string such as Window/Panel/Button[@name='OK'].

UI Interactions ​

field_click ​

Clicks a UI element identified by its field path.

ParameterTypeRequiredDescription
applicationstringYesName or ID of the target application
fieldPathstringYesField path to click, e.g. **/OK

field_input ​

Types text into a field.

ParameterTypeRequiredDescription
applicationstringYesName or ID of the target application
fieldPathstringYesField path, e.g. **/Username
textstringYesText to type

field_select ​

Selects an item in a dropdown or list field.

ParameterTypeRequiredDescription
applicationstringYesName or ID of the target application
fieldPathstringYesField path to the dropdown or list
itemstringYesItem to select

Mouse & Keyboard ​

mouse_move ​

Moves the mouse cursor to a position relative to the application window.

ParameterTypeRequiredDescription
applicationstringYesName or ID of the target application (used to focus the window)
xintegerYesX coordinate
yintegerYesY coordinate

mouse_click ​

Clicks a mouse button at the current cursor position. The application is focused first.

ParameterTypeRequiredDescription
applicationstringYesName or ID of the target application
buttonstringYesleft (default), right, or middle

keyboard_input ​

Sends keystrokes to an application using SendKeys format.

ParameterTypeRequiredDescription
applicationstringYesName or ID of the target application
keysstringYesKeys to send

Common key sequences:

KeySendKeys notation
Enter{ENTER}
Tab{TAB}
Escape{ESC}
Ctrl+C^c
Ctrl+V^v
Alt+F4%{F4}

Resources ​

Manatee exposes several resources via resources/list and resources/read.

file://flow-api-documentation.d.ts ​

A TypeScript definition file generated at runtime from all loaded Manatee modules. Use this to understand available APIs when writing run_code scripts - it documents every object, method, and parameter available in the JavaScript environment.

https://assets.sirenia.cloud/mcp/manatee/full.md ​

Complete Manatee documentation in Markdown. This resource is fetched directly by the MCP client from the online documentation - it is not proxied through Manatee itself.

Documentation Sections ​

On startup, Manatee fetches a section index and registers each documentation section as an individual resource under https://assets.sirenia.cloud/mcp/manatee/sections/<file>. This allows the LLM to load only the specific sections it needs rather than the entire document.

Dynamic Resources ​

These resources are populated from the configuration stored in Cuesta:

URI patternMIME typeDescription
file://flows/<AppName>/<id>.jstext/javascriptSource code of an existing flow. One resource per configured flow.
file://fields/<AppName>/<id>.jstext/plainPath string of an existing field, accessible as Fields['<name>'] or new Field('<path>').

Providing existing flows and field definitions as resources gives the LLM concrete examples to learn from and reference when generating new automation scripts.