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.