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\netstringtcpClaude Code
claude mcp add manatee -- "C:\path\to\manatee\MCPBridge\mcpbridge.exe" --server localhost:24697Claude Desktop
Config file location: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"manatee": {
"command": "C:\\path\\to\\manatee\\MCPBridge\\mcpbridge.exe",
"args": ["--server", "localhost:24697"]
}
}
}Cursor
Config file location: %APPDATA%\Cursor\mcp.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.
{
"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.
{
"sessions": [
{
"id": "abc123",
"color": "#4287f5",
"tag": "Foo",
"isCurrent": true
}
]
}activate_session
Switches the active session.
| Parameter | Type | Required | Description |
|---|---|---|---|
sessionId | string | Yes | The ID of the session to activate |
Application Discovery
get_applications
Lists all applications configured in Manatee.
{
"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.
| Parameter | Type | Required | Description |
|---|---|---|---|
application | string | Yes | Name or ID of the target application |
code | string | Yes | ES5 JavaScript to execute |
// 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.
| Parameter | Type | Required | Description |
|---|---|---|---|
application | string | Yes | Name 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.
| Parameter | Type | Required | Description |
|---|---|---|---|
application | string | Yes | Name or ID of the target application |
inspect_field_by_path
Inspects a single UI element identified by a field path.
| Parameter | Type | Required | Description |
|---|---|---|---|
application | string | Yes | Name or ID of the target application |
fieldPath | string | Yes | Field 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.
| Parameter | Type | Required | Description |
|---|---|---|---|
application | string | Yes | Name or ID of the target application |
x | integer | Yes | X coordinate (pixels from left edge) |
y | integer | Yes | Y 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.
| Parameter | Type | Required | Description |
|---|---|---|---|
application | string | Yes | Name or ID of the target application |
x | integer | Yes | X coordinate |
y | integer | Yes | Y 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.
| Parameter | Type | Required | Description |
|---|---|---|---|
application | string | Yes | Name or ID of the target application |
fieldPath | string | Yes | Field path to click, e.g. **/OK |
field_input
Types text into a field.
| Parameter | Type | Required | Description |
|---|---|---|---|
application | string | Yes | Name or ID of the target application |
fieldPath | string | Yes | Field path, e.g. **/Username |
text | string | Yes | Text to type |
field_select
Selects an item in a dropdown or list field.
| Parameter | Type | Required | Description |
|---|---|---|---|
application | string | Yes | Name or ID of the target application |
fieldPath | string | Yes | Field path to the dropdown or list |
item | string | Yes | Item to select |
Mouse & Keyboard
mouse_move
Moves the mouse cursor to a position relative to the application window.
| Parameter | Type | Required | Description |
|---|---|---|---|
application | string | Yes | Name or ID of the target application (used to focus the window) |
x | integer | Yes | X coordinate |
y | integer | Yes | Y coordinate |
mouse_click
Clicks a mouse button at the current cursor position. The application is focused first.
| Parameter | Type | Required | Description |
|---|---|---|---|
application | string | Yes | Name or ID of the target application |
button | string | Yes | left (default), right, or middle |
keyboard_input
Sends keystrokes to an application using SendKeys format.
| Parameter | Type | Required | Description |
|---|---|---|---|
application | string | Yes | Name or ID of the target application |
keys | string | Yes | Keys to send |
Common key sequences:
| Key | SendKeys 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 pattern | MIME type | Description |
|---|---|---|
file://flows/<AppName>/<id>.js | text/javascript | Source code of an existing flow. One resource per configured flow. |
file://fields/<AppName>/<id>.js | text/plain | Path 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.
