Skip to content

Tool Reference

Every tool the servers register, with the description and parameter schema an MCP client receives — the text the model reads when it chooses a tool. Each description is formatted for reading; the collapsed block under it holds the exact text the model receives, with its common indentation removed. For how to use each server, see its page under Servers.

Server MCP name Tools
file_system file-system-tools 12
web_search web-search-tools 4
memory memory-tools 11
document_processing document-processing-tools 13
code_execution code-execution-tools 2
screenshot screenshot-tools 2
image_tools image-tools 7
skills skills-tools 5
Composed launcher, default doc-processing-std-tools 56
browser (optional) browser-tools 19 (core), 28 (full), plus up to 5 opt-in
Composed launcher with the browser doc-processing-std-tools 75 (core) or 84 (full), plus opt-ins
computer (optional) computer-tools 17
Composed launcher with the computer server doc-processing-std-tools 73
Composed launcher with both doc-processing-std-tools 92 (core) or 101 (full), plus opt-ins

file_system server

file-system-tools — see the server page.

get_directory_structure

Return a markdown-formatted directory tree.

Walks the directory recursively up to max_depth levels and formats the result as an indented tree using box-drawing characters.

Args

  • path: Root directory path to list.
  • max_depth: Maximum depth of recursion (default 3).
  • include_hidden: Whether to include hidden files/directories (names starting with '.').

Returns

A markdown-formatted directory tree string.

Exact text the model receives
Return a markdown-formatted directory tree.

Walks the directory recursively up to ``max_depth`` levels and formats
the result as an indented tree using box-drawing characters.

Args:
    path: Root directory path to list.
    max_depth: Maximum depth of recursion (default 3).
    include_hidden: Whether to include hidden files/directories
        (names starting with '.').

Returns:
    A markdown-formatted directory tree string.
Parameter Type Required Default
path string yes —
max_depth integer no 3
include_hidden boolean no false
JSON schema
{
  "properties": {
    "path": {
      "title": "Path",
      "type": "string"
    },
    "max_depth": {
      "default": 3,
      "title": "Max Depth",
      "type": "integer"
    },
    "include_hidden": {
      "default": false,
      "title": "Include Hidden",
      "type": "boolean"
    }
  },
  "required": [
    "path"
  ],
  "title": "get_directory_structureArguments",
  "type": "object"
}

read_file

Read file contents, optionally within a line range.

Args

  • path: Path to the file to read.
  • offset: 1-based starting line number (optional). Lines before this are skipped.
  • limit: Maximum number of lines to return from the offset (optional).
  • encoding: File encoding (default utf-8).

Returns

The file contents as a string (possibly truncated).

Exact text the model receives
Read file contents, optionally within a line range.

Args:
    path: Path to the file to read.
    offset: 1-based starting line number (optional). Lines before this
        are skipped.
    limit: Maximum number of lines to return from the offset (optional).
    encoding: File encoding (default utf-8).

Returns:
    The file contents as a string (possibly truncated).
Parameter Type Required Default
path string yes —
offset integer or null no null
limit integer or null no null
encoding string no "utf-8"
JSON schema
{
  "properties": {
    "path": {
      "title": "Path",
      "type": "string"
    },
    "offset": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Offset"
    },
    "limit": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Limit"
    },
    "encoding": {
      "default": "utf-8",
      "title": "Encoding",
      "type": "string"
    }
  },
  "required": [
    "path"
  ],
  "title": "read_fileArguments",
  "type": "object"
}

write_file

Write content to a file. Creates the file if it doesn't exist, overwrites if it does.

Args

  • path: Path to the file to write.
  • content: Content to write.
  • create_dirs: Whether to create parent directories if they don't exist.
  • encoding: File encoding (default utf-8).

Returns

Confirmation message with the file path and bytes written.

Exact text the model receives
Write content to a file. Creates the file if it doesn't exist, overwrites if it does.

Args:
    path: Path to the file to write.
    content: Content to write.
    create_dirs: Whether to create parent directories if they don't exist.
    encoding: File encoding (default utf-8).

Returns:
    Confirmation message with the file path and bytes written.
Parameter Type Required Default
path string yes —
content string yes —
create_dirs boolean no false
encoding string no "utf-8"
JSON schema
{
  "properties": {
    "path": {
      "title": "Path",
      "type": "string"
    },
    "content": {
      "title": "Content",
      "type": "string"
    },
    "create_dirs": {
      "default": false,
      "title": "Create Dirs",
      "type": "boolean"
    },
    "encoding": {
      "default": "utf-8",
      "title": "Encoding",
      "type": "string"
    }
  },
  "required": [
    "path",
    "content"
  ],
  "title": "write_fileArguments",
  "type": "object"
}

create_file

Create a new file. Fails if the file already exists.

Args

  • path: Path to the file to create.
  • content: Content to write.
  • create_dirs: Whether to create parent directories if they don't exist.

Returns

Confirmation message with the file path.

Exact text the model receives
Create a new file. Fails if the file already exists.

Args:
    path: Path to the file to create.
    content: Content to write.
    create_dirs: Whether to create parent directories if they don't exist.

Returns:
    Confirmation message with the file path.
Parameter Type Required Default
path string yes —
content string yes —
create_dirs boolean no false
JSON schema
{
  "properties": {
    "path": {
      "title": "Path",
      "type": "string"
    },
    "content": {
      "title": "Content",
      "type": "string"
    },
    "create_dirs": {
      "default": false,
      "title": "Create Dirs",
      "type": "boolean"
    }
  },
  "required": [
    "path",
    "content"
  ],
  "title": "create_fileArguments",
  "type": "object"
}

edit_file

Replace exact text in a file (str_replace pattern).

Finds the exact old_string in the file and replaces it with new_string. The old_string must appear exactly once in the file.

Args

  • path: Path to the file to edit.
  • old_string: The exact text to find (must appear exactly once).
  • new_string: The replacement text.

Returns

Confirmation message.

Exact text the model receives
Replace exact text in a file (str_replace pattern).

Finds the exact ``old_string`` in the file and replaces it with
``new_string``. The old_string must appear exactly once in the file.

Args:
    path: Path to the file to edit.
    old_string: The exact text to find (must appear exactly once).
    new_string: The replacement text.

Returns:
    Confirmation message.
Parameter Type Required Default
path string yes —
old_string string yes —
new_string string yes —
JSON schema
{
  "properties": {
    "path": {
      "title": "Path",
      "type": "string"
    },
    "old_string": {
      "title": "Old String",
      "type": "string"
    },
    "new_string": {
      "title": "New String",
      "type": "string"
    }
  },
  "required": [
    "path",
    "old_string",
    "new_string"
  ],
  "title": "edit_fileArguments",
  "type": "object"
}

apply_patch

Apply a unified diff (git diff format) to a file.

Parses headers (---, +++, @@) and applies the hunks to the target file.

Rejects patches if context lines don't match exactly (e.g., the file has drifted since the diff was generated). For safe single-string substitutions use edit_file; this tool is preferred for multi-line / structural edits where context lines are stable.

Args

  • path: Path to the file to patch.
  • patch: Unified diff content to apply.

Returns

Confirmation message.

Exact text the model receives
Apply a unified diff (``git diff`` format) to a file.

Parses headers (``---``, ``+++``, ``@@``) and applies the hunks to
the target file.

**Rejects patches if context lines don't match exactly** (e.g., the
file has drifted since the diff was generated). For safe single-string
substitutions use ``edit_file``; this tool is preferred for multi-line
/ structural edits where context lines are stable.

Args:
    path: Path to the file to patch.
    patch: Unified diff content to apply.

Returns:
    Confirmation message.
Parameter Type Required Default
path string yes —
patch string yes —
JSON schema
{
  "properties": {
    "path": {
      "title": "Path",
      "type": "string"
    },
    "patch": {
      "title": "Patch",
      "type": "string"
    }
  },
  "required": [
    "path",
    "patch"
  ],
  "title": "apply_patchArguments",
  "type": "object"
}

delete_file

Delete a file.

Args

  • path: Path to the file to delete.

Returns

Confirmation message.

Exact text the model receives
Delete a file.

Args:
    path: Path to the file to delete.

Returns:
    Confirmation message.
Parameter Type Required Default
path string yes —
JSON schema
{
  "properties": {
    "path": {
      "title": "Path",
      "type": "string"
    }
  },
  "required": [
    "path"
  ],
  "title": "delete_fileArguments",
  "type": "object"
}

move_file

Move or rename a file.

Args

  • source: Current path of the file.
  • destination: New path for the file.

Returns

Confirmation message.

Exact text the model receives
Move or rename a file.

Args:
    source: Current path of the file.
    destination: New path for the file.

Returns:
    Confirmation message.
Parameter Type Required Default
source string yes —
destination string yes —
JSON schema
{
  "properties": {
    "source": {
      "title": "Source",
      "type": "string"
    },
    "destination": {
      "title": "Destination",
      "type": "string"
    }
  },
  "required": [
    "source",
    "destination"
  ],
  "title": "move_fileArguments",
  "type": "object"
}

copy_file

Copy a file, preserving metadata.

Args

  • source: Path of the file to copy.
  • destination: Path for the copy.

Returns

Confirmation message.

Exact text the model receives
Copy a file, preserving metadata.

Args:
    source: Path of the file to copy.
    destination: Path for the copy.

Returns:
    Confirmation message.
Parameter Type Required Default
source string yes —
destination string yes —
JSON schema
{
  "properties": {
    "source": {
      "title": "Source",
      "type": "string"
    },
    "destination": {
      "title": "Destination",
      "type": "string"
    }
  },
  "required": [
    "source",
    "destination"
  ],
  "title": "copy_fileArguments",
  "type": "object"
}

get_file_metadata

Return file metadata as a JSON string.

Args

  • path: Path to the file or directory.

Returns

JSON string with keys: path, size_bytes, size_human, modified, created, is_file, is_dir, extension.

Exact text the model receives
Return file metadata as a JSON string.

Args:
    path: Path to the file or directory.

Returns:
    JSON string with keys: path, size_bytes, size_human, modified,
    created, is_file, is_dir, extension.
Parameter Type Required Default
path string yes —
JSON schema
{
  "properties": {
    "path": {
      "title": "Path",
      "type": "string"
    }
  },
  "required": [
    "path"
  ],
  "title": "get_file_metadataArguments",
  "type": "object"
}

search_in_files

Search for text or regex across files in a directory.

Walks the directory and searches within each matching file for lines containing the query. For PDF files, checks for co-located .txt files (e.g., document.pdf.txt) that contain extracted text.

Args

  • path: Root directory to search in.
  • query: Search string or regex pattern.
  • file_pattern: Glob pattern to filter files (default '*').
  • is_regex: Whether the query is a regular expression.
  • max_results: Maximum number of matching lines to return (default 50).

Returns

JSON string with a list of matches, each containing file, line, and content.

Exact text the model receives
Search for text or regex across files in a directory.

Walks the directory and searches within each matching file for lines
containing the query. For PDF files, checks for co-located ``.txt``
files (e.g., ``document.pdf.txt``) that contain extracted text.

Args:
    path: Root directory to search in.
    query: Search string or regex pattern.
    file_pattern: Glob pattern to filter files (default '*').
    is_regex: Whether the query is a regular expression.
    max_results: Maximum number of matching lines to return (default 50).

Returns:
    JSON string with a list of matches, each containing file, line,
    and content.
Parameter Type Required Default
path string yes —
query string yes —
file_pattern string no "*"
is_regex boolean no false
max_results integer no 50
JSON schema
{
  "properties": {
    "path": {
      "title": "Path",
      "type": "string"
    },
    "query": {
      "title": "Query",
      "type": "string"
    },
    "file_pattern": {
      "default": "*",
      "title": "File Pattern",
      "type": "string"
    },
    "is_regex": {
      "default": false,
      "title": "Is Regex",
      "type": "boolean"
    },
    "max_results": {
      "default": 50,
      "title": "Max Results",
      "type": "integer"
    }
  },
  "required": [
    "path",
    "query"
  ],
  "title": "search_in_filesArguments",
  "type": "object"
}

list_directory

List files and directories with basic metadata.

Returns entries sorted with directories first, then files, alphabetically within each group.

Args

  • path: Path to the directory to list.
  • include_hidden: Whether to include hidden files/directories (names starting with '.').

Returns

JSON list of entries, each with name, type ('file' or 'directory'), and size (in bytes, for files).

Exact text the model receives
List files and directories with basic metadata.

Returns entries sorted with directories first, then files,
alphabetically within each group.

Args:
    path: Path to the directory to list.
    include_hidden: Whether to include hidden files/directories
        (names starting with '.').

Returns:
    JSON list of entries, each with name, type ('file' or 'directory'),
    and size (in bytes, for files).
Parameter Type Required Default
path string yes —
include_hidden boolean no false
JSON schema
{
  "properties": {
    "path": {
      "title": "Path",
      "type": "string"
    },
    "include_hidden": {
      "default": false,
      "title": "Include Hidden",
      "type": "boolean"
    }
  },
  "required": [
    "path"
  ],
  "title": "list_directoryArguments",
  "type": "object"
}

web_search server

web-search-tools — see the server page.

Search the web using the configured search provider.

The search provider is configured via the DPTTOOLS_WEB_SEARCH_PROVIDER and DPTTOOLS_WEB_SEARCH_API_KEY environment variables. Supported providers: tavily, serper, brave.

Args

  • query: The search query.
  • num_results: Number of results to return (default 5).
  • search_type: Type of search — 'general' or 'news' (default 'general').
  • search_depth: Tavily search depth — 'basic' (default), 'advanced', 'fast' or 'ultra-fast'. 'advanced' costs twice as much. Ignored by serper and brave.

Returns

JSON string with provider, query, results (title, URL, snippet for each result) and usage (the provider's reported usage when it gives one; otherwise marked estimated or provider_reported: false).

Exact text the model receives
Search the web using the configured search provider.

The search provider is configured via the DPTTOOLS_WEB_SEARCH_PROVIDER
and DPTTOOLS_WEB_SEARCH_API_KEY environment variables. Supported
providers: tavily, serper, brave.

Args:
    query: The search query.
    num_results: Number of results to return (default 5).
    search_type: Type of search — 'general' or 'news' (default 'general').
    search_depth: Tavily search depth — 'basic' (default), 'advanced',
        'fast' or 'ultra-fast'. 'advanced' costs twice as much. Ignored
        by serper and brave.

Returns:
    JSON string with ``provider``, ``query``, ``results`` (title, URL,
    snippet for each result) and ``usage`` (the provider's reported
    usage when it gives one; otherwise marked ``estimated`` or
    ``provider_reported: false``).
Parameter Type Required Default
query string yes —
num_results integer no 5
search_type string no "general"
search_depth string no "basic"
JSON schema
{
  "properties": {
    "query": {
      "title": "Query",
      "type": "string"
    },
    "num_results": {
      "default": 5,
      "title": "Num Results",
      "type": "integer"
    },
    "search_type": {
      "default": "general",
      "title": "Search Type",
      "type": "string"
    },
    "search_depth": {
      "default": "basic",
      "title": "Search Depth",
      "type": "string"
    }
  },
  "required": [
    "query"
  ],
  "title": "web_searchArguments",
  "type": "object"
}

fetch_webpage

Fetch a web page or other text resource and return its content.

Only HTTP/HTTPS URLs are allowed. Private/internal IP ranges and localhost are rejected for SSRF protection, on every redirect.

Reads text only: HTML, plain text, Markdown, JSON, XML and CSV. Any other content type (images, PDFs, archives) is refused before it is downloaded; for an image, use fetch_image if it is available.

Returns a JSON object by default: {url, final_url, status, content_type, title, format, extractor, text, truncated, total_chars, offset, next_offset, has_more, byte_cap_reached, likely_js_rendered}.

format chooses how an HTML page is returned: "text" (readable text, the default), "markdown" (headings, lists, links and tables kept) or "html" (the source). When the optional trafilatura library is installed, text and Markdown hold the page's main content without navigation and footers (extractor: "trafilatura"); otherwise a built-in extractor keeps the whole page (extractor: "stdlib"). Non-HTML text (JSON, plain text, CSV) is returned as-is.

With include_assets=True the object also has images (up to 30: {url, alt, width, height, source} from <img>, og:image and icons), links (up to 100: {url, text}) and assets_truncated. URLs are absolute; nothing is downloaded. To look at an image, pass its URL to fetch_image.

  • text holds at most max_length characters starting at offset. When has_more is true, call again with offset=next_offset to read the next part.
  • likely_js_rendered is true when the page looks like it is built by JavaScript (little text, many scripts, or an empty app root). Retry with fetch_webpage_rendered if that tool is available.
  • byte_cap_reached is true when the response was larger than the download limit and was cut; the text ends early.

Args

  • url: The URL to fetch (must be HTTP or HTTPS).
  • extract_text: Legacy switch: False returns the HTML source, the same as format="html".
  • max_length: Maximum characters of text to return (default 10000).
  • offset: Character offset to start from, for reading a long page in parts (default 0).
  • structured: Return the JSON object (default True). False returns only the text, with a truncation notice, as older versions did, always using the built-in extractor.
  • format: "text" (default), "markdown" or "html".
  • include_assets: Add the page's image and link references (default False). Ignored when structured=False.

Returns

The JSON object (or plain text when structured=False). On failure, a string starting with "Error: ".

Exact text the model receives
Fetch a web page or other text resource and return its content.

Only HTTP/HTTPS URLs are allowed. Private/internal IP ranges and
localhost are rejected for SSRF protection, on every redirect.

Reads text only: HTML, plain text, Markdown, JSON, XML and CSV. Any
other content type (images, PDFs, archives) is refused before it is
downloaded; for an image, use ``fetch_image`` if it is available.

Returns a JSON object by default:
``{url, final_url, status, content_type, title, format, extractor, text,
truncated, total_chars, offset, next_offset, has_more, byte_cap_reached,
likely_js_rendered}``.

``format`` chooses how an HTML page is returned: ``"text"`` (readable
text, the default), ``"markdown"`` (headings, lists, links and tables
kept) or ``"html"`` (the source). When the optional trafilatura library
is installed, text and Markdown hold the page's main content without
navigation and footers (``extractor: "trafilatura"``); otherwise a
built-in extractor keeps the whole page (``extractor: "stdlib"``).
Non-HTML text (JSON, plain text, CSV) is returned as-is.

With ``include_assets=True`` the object also has ``images`` (up to 30:
``{url, alt, width, height, source}`` from ``<img>``, ``og:image`` and
icons), ``links`` (up to 100: ``{url, text}``) and ``assets_truncated``.
URLs are absolute; nothing is downloaded. To look at an image, pass its
URL to ``fetch_image``.

- ``text`` holds at most ``max_length`` characters starting at
  ``offset``. When ``has_more`` is true, call again with
  ``offset=next_offset`` to read the next part.
- ``likely_js_rendered`` is true when the page looks like it is built by
  JavaScript (little text, many scripts, or an empty app root). Retry with
  ``fetch_webpage_rendered`` if that tool is available.
- ``byte_cap_reached`` is true when the response was larger than the
  download limit and was cut; the text ends early.

Args:
    url: The URL to fetch (must be HTTP or HTTPS).
    extract_text: Legacy switch: False returns the HTML source, the
        same as ``format="html"``.
    max_length: Maximum characters of text to return (default 10000).
    offset: Character offset to start from, for reading a long page in
        parts (default 0).
    structured: Return the JSON object (default True). False returns
        only the text, with a truncation notice, as older versions did,
        always using the built-in extractor.
    format: ``"text"`` (default), ``"markdown"`` or ``"html"``.
    include_assets: Add the page's image and link references (default
        False). Ignored when ``structured=False``.

Returns:
    The JSON object (or plain text when ``structured=False``). On failure,
    a string starting with ``"Error: "``.
Parameter Type Required Default
url string yes —
extract_text boolean no true
max_length integer no 10000
offset integer no 0
structured boolean no true
format string no "text"
include_assets boolean no false
JSON schema
{
  "properties": {
    "url": {
      "title": "Url",
      "type": "string"
    },
    "extract_text": {
      "default": true,
      "title": "Extract Text",
      "type": "boolean"
    },
    "max_length": {
      "default": 10000,
      "title": "Max Length",
      "type": "integer"
    },
    "offset": {
      "default": 0,
      "title": "Offset",
      "type": "integer"
    },
    "structured": {
      "default": true,
      "title": "Structured",
      "type": "boolean"
    },
    "format": {
      "default": "text",
      "enum": [
        "text",
        "markdown",
        "html"
      ],
      "title": "Format",
      "type": "string"
    },
    "include_assets": {
      "default": false,
      "title": "Include Assets",
      "type": "boolean"
    }
  },
  "required": [
    "url"
  ],
  "title": "fetch_webpageArguments",
  "type": "object"
}

fetch_image

Download an image from a URL and show it to the model.

Use this to look at an image found on a web page (fetch_webpage with include_assets=True lists a page's images). Accepts PNG, JPEG, GIF and WebP. The same SSRF protection as fetch_webpage applies: HTTP/HTTPS only, private and internal addresses refused, every redirect re-checked.

Images larger than DPTTOOLS_FETCH_IMAGE_MAX_BYTES (10 MB by default) are refused. Images larger than DPTTOOLS_IMAGE_MAX_EDGE_PX (1568 px on the long edge) or DPTTOOLS_IMAGE_MAX_MB (3 MB) are scaled down before they are returned.

Requires httpx and Pillow (the [web] extra).

Args

  • url: The image URL (must be HTTP or HTTPS).

Returns

A short caption (source URL, format, size) followed by the image as an MCP ImageContent block. On failure, a string starting with "Error: ".

Exact text the model receives
Download an image from a URL and show it to the model.

Use this to look at an image found on a web page (``fetch_webpage``
with ``include_assets=True`` lists a page's images). Accepts PNG, JPEG,
GIF and WebP. The same SSRF protection as ``fetch_webpage`` applies:
HTTP/HTTPS only, private and internal addresses refused, every redirect
re-checked.

Images larger than ``DPTTOOLS_FETCH_IMAGE_MAX_BYTES`` (10 MB by default)
are refused. Images larger than ``DPTTOOLS_IMAGE_MAX_EDGE_PX`` (1568 px
on the long edge) or ``DPTTOOLS_IMAGE_MAX_MB`` (3 MB) are scaled down
before they are returned.

Requires ``httpx`` and ``Pillow``
(the ``[web]`` extra).

Args:
    url: The image URL (must be HTTP or HTTPS).

Returns:
    A short caption (source URL, format, size) followed by the image as
    an MCP ``ImageContent`` block. On failure, a string starting with
    ``"Error: "``.
Parameter Type Required Default
url string yes —
JSON schema
{
  "properties": {
    "url": {
      "title": "Url",
      "type": "string"
    }
  },
  "required": [
    "url"
  ],
  "title": "fetch_imageArguments",
  "type": "object"
}

format_search_results

Format raw search results with inline citation markers and a references section.

Accepts raw search results (JSON with URL, title, content per result) and formats them with inline citation markers ([1], [2], etc.) and a references section at the end. The output of web_search can be passed in unchanged.

Args

  • results: JSON string — either the object web_search returns (with a results array) or a plain array of results, each with url, title, and content/snippet fields.

Returns

Formatted text with inline citation markers and a references section.

Exact text the model receives
Format raw search results with inline citation markers and a references section.

Accepts raw search results (JSON with URL, title, content per result)
and formats them with inline citation markers ([1], [2], etc.) and a
references section at the end. The output of ``web_search`` can be
passed in unchanged.

Args:
    results: JSON string — either the object ``web_search`` returns
             (with a ``results`` array) or a plain array of results,
             each with url, title, and content/snippet fields.

Returns:
    Formatted text with inline citation markers and a references section.
Parameter Type Required Default
results string yes —
JSON schema
{
  "properties": {
    "results": {
      "title": "Results",
      "type": "string"
    }
  },
  "required": [
    "results"
  ],
  "title": "format_search_resultsArguments",
  "type": "object"
}

memory server

memory-tools — see the server page.

write_memory

Store a value in long-term memory.

The key is used as the filename (with .json extension) inside the memory directory. Overwrites any existing value for the same key.

Args

  • key: The memory key (used as filename).
  • value: The value to store.

Returns

Confirmation message.

Exact text the model receives
Store a value in long-term memory.

The key is used as the filename (with ``.json`` extension) inside the
memory directory. Overwrites any existing value for the same key.

Args:
    key: The memory key (used as filename).
    value: The value to store.

Returns:
    Confirmation message.
Parameter Type Required Default
key string yes —
value string yes —
JSON schema
{
  "properties": {
    "key": {
      "title": "Key",
      "type": "string"
    },
    "value": {
      "title": "Value",
      "type": "string"
    }
  },
  "required": [
    "key",
    "value"
  ],
  "title": "write_memoryArguments",
  "type": "object"
}

read_memory

Retrieve a value from long-term memory by key.

Args

  • key: The memory key to look up.

Returns

The stored value, or an error message if not found.

Exact text the model receives
Retrieve a value from long-term memory by key.

Args:
    key: The memory key to look up.

Returns:
    The stored value, or an error message if not found.
Parameter Type Required Default
key string yes —
JSON schema
{
  "properties": {
    "key": {
      "title": "Key",
      "type": "string"
    }
  },
  "required": [
    "key"
  ],
  "title": "read_memoryArguments",
  "type": "object"
}

search_memory

Search memory for matching keys and values (case-insensitive substring).

Scans all .json memory files and returns entries where either the key or value contains the query string.

Args

  • query: Search string to match against keys and values.

Returns

JSON list of matching memory entries.

Exact text the model receives
Search memory for matching keys and values (case-insensitive substring).

Scans all ``.json`` memory files and returns entries where either the key
or value contains the query string.

Args:
    query: Search string to match against keys and values.

Returns:
    JSON list of matching memory entries.
Parameter Type Required Default
query string yes —
JSON schema
{
  "properties": {
    "query": {
      "title": "Query",
      "type": "string"
    }
  },
  "required": [
    "query"
  ],
  "title": "search_memoryArguments",
  "type": "object"
}

list_memory_keys

List all stored memory keys.

Returns

JSON list of all memory keys.

Exact text the model receives
List all stored memory keys.

Returns:
    JSON list of all memory keys.

No parameters.

JSON schema
{
  "properties": {},
  "title": "list_memory_keysArguments",
  "type": "object"
}

delete_memory

Delete a memory entry.

Args

  • key: The memory key to delete.

Returns

Confirmation message.

Exact text the model receives
Delete a memory entry.

Args:
    key: The memory key to delete.

Returns:
    Confirmation message.
Parameter Type Required Default
key string yes —
JSON schema
{
  "properties": {
    "key": {
      "title": "Key",
      "type": "string"
    }
  },
  "required": [
    "key"
  ],
  "title": "delete_memoryArguments",
  "type": "object"
}

memory_view

View a memory directory listing or file contents with line numbers.

If the path points to a directory, lists its contents (like ls). If the path points to a file, shows its contents with 1-indexed line numbers. Use view_range to show only a specific range of lines.

Args

  • path: Relative path within the memory directory. Use / or "" for the root of the memory directory.
  • view_range: Optional [start_line, end_line] (1-indexed) to view only those lines.

Returns

Directory listing or file contents with line numbers.

Exact text the model receives
View a memory directory listing or file contents with line numbers.

If the path points to a directory, lists its contents (like ``ls``).
If the path points to a file, shows its contents with 1-indexed line
numbers. Use ``view_range`` to show only a specific range of lines.

Args:
    path: Relative path within the memory directory. Use ``/`` or ``""``
          for the root of the memory directory.
    view_range: Optional ``[start_line, end_line]`` (1-indexed) to view
                only those lines.

Returns:
    Directory listing or file contents with line numbers.
Parameter Type Required Default
path string yes —
view_range array of integer or null no null
JSON schema
{
  "properties": {
    "path": {
      "title": "Path",
      "type": "string"
    },
    "view_range": {
      "anyOf": [
        {
          "items": {
            "type": "integer"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "View Range"
    }
  },
  "required": [
    "path"
  ],
  "title": "memory_viewArguments",
  "type": "object"
}

memory_create

Create a new memory file. Fails if the file already exists.

Args

  • path: Relative path within the memory directory.
  • file_text: Content for the new file.

Returns

Confirmation message.

Exact text the model receives
Create a new memory file. Fails if the file already exists.

Args:
    path: Relative path within the memory directory.
    file_text: Content for the new file.

Returns:
    Confirmation message.
Parameter Type Required Default
path string yes —
file_text string yes —
JSON schema
{
  "properties": {
    "path": {
      "title": "Path",
      "type": "string"
    },
    "file_text": {
      "title": "File Text",
      "type": "string"
    }
  },
  "required": [
    "path",
    "file_text"
  ],
  "title": "memory_createArguments",
  "type": "object"
}

memory_str_replace

Replace text in a memory file. The old_str must appear exactly once.

Args

  • path: Relative path within the memory directory.
  • old_str: Exact text to find (must appear exactly once).
  • new_str: Replacement text.

Returns

Confirmation message.

Exact text the model receives
Replace text in a memory file. The old_str must appear exactly once.

Args:
    path: Relative path within the memory directory.
    old_str: Exact text to find (must appear exactly once).
    new_str: Replacement text.

Returns:
    Confirmation message.
Parameter Type Required Default
path string yes —
old_str string yes —
new_str string yes —
JSON schema
{
  "properties": {
    "path": {
      "title": "Path",
      "type": "string"
    },
    "old_str": {
      "title": "Old Str",
      "type": "string"
    },
    "new_str": {
      "title": "New Str",
      "type": "string"
    }
  },
  "required": [
    "path",
    "old_str",
    "new_str"
  ],
  "title": "memory_str_replaceArguments",
  "type": "object"
}

memory_insert

Insert text at a specific line in a memory file (0-based line number).

Line 0 inserts before the first line. A line number equal to the file's line count appends to the end.

Args

  • path: Relative path within the memory directory.
  • insert_line: 0-based line number to insert at.
  • insert_text: Text to insert.

Returns

Confirmation message.

Exact text the model receives
Insert text at a specific line in a memory file (0-based line number).

Line 0 inserts before the first line. A line number equal to the file's
line count appends to the end.

Args:
    path: Relative path within the memory directory.
    insert_line: 0-based line number to insert at.
    insert_text: Text to insert.

Returns:
    Confirmation message.
Parameter Type Required Default
path string yes —
insert_line integer yes —
insert_text string yes —
JSON schema
{
  "properties": {
    "path": {
      "title": "Path",
      "type": "string"
    },
    "insert_line": {
      "title": "Insert Line",
      "type": "integer"
    },
    "insert_text": {
      "title": "Insert Text",
      "type": "string"
    }
  },
  "required": [
    "path",
    "insert_line",
    "insert_text"
  ],
  "title": "memory_insertArguments",
  "type": "object"
}

memory_delete

Delete a memory file or directory (and all its contents).

Args

  • path: Relative path within the memory directory.

Returns

Confirmation message.

Exact text the model receives
Delete a memory file or directory (and all its contents).

Args:
    path: Relative path within the memory directory.

Returns:
    Confirmation message.
Parameter Type Required Default
path string yes —
JSON schema
{
  "properties": {
    "path": {
      "title": "Path",
      "type": "string"
    }
  },
  "required": [
    "path"
  ],
  "title": "memory_deleteArguments",
  "type": "object"
}

memory_rename

Rename or move a memory file within the memory directory.

Args

  • old_path: Current relative path within the memory directory.
  • new_path: New relative path within the memory directory.

Returns

Confirmation message.

Exact text the model receives
Rename or move a memory file within the memory directory.

Args:
    old_path: Current relative path within the memory directory.
    new_path: New relative path within the memory directory.

Returns:
    Confirmation message.
Parameter Type Required Default
old_path string yes —
new_path string yes —
JSON schema
{
  "properties": {
    "old_path": {
      "title": "Old Path",
      "type": "string"
    },
    "new_path": {
      "title": "New Path",
      "type": "string"
    }
  },
  "required": [
    "old_path",
    "new_path"
  ],
  "title": "memory_renameArguments",
  "type": "object"
}

document_processing server

document-processing-tools — see the server page.

read_pdf

Extract text (and optionally tables) from a text-based PDF.

For scanned / image PDFs without selectable text, use ocr_pdf instead (requires LLMWHISPERER_API_KEY).

Requires the pdfplumber library. Install the [docs] extra.

Args

  • path: Path to the PDF file.
  • pages: Which pages to read — 'all', '1-5', or '1,3,7'.
  • extract_tables: Whether to extract tables as well.

Returns

The extracted text content (and tables if requested).

Exact text the model receives
Extract text (and optionally tables) from a **text-based** PDF.

For scanned / image PDFs without selectable text, use ``ocr_pdf``
instead (requires ``LLMWHISPERER_API_KEY``).

Requires the ``pdfplumber`` library. Install the
``[docs]`` extra.

Args:
    path: Path to the PDF file.
    pages: Which pages to read — 'all', '1-5', or '1,3,7'.
    extract_tables: Whether to extract tables as well.

Returns:
    The extracted text content (and tables if requested).
Parameter Type Required Default
path string yes —
pages string no "all"
extract_tables boolean no false
JSON schema
{
  "properties": {
    "path": {
      "title": "Path",
      "type": "string"
    },
    "pages": {
      "default": "all",
      "title": "Pages",
      "type": "string"
    },
    "extract_tables": {
      "default": false,
      "title": "Extract Tables",
      "type": "boolean"
    }
  },
  "required": [
    "path"
  ],
  "title": "read_pdfArguments",
  "type": "object"
}

ocr_pdf

OCR a scanned / image-only PDF via the LLM Whisperer API.

Use this for PDFs whose text is not selectable (scans, photos of documents). For text-based PDFs prefer read_pdf — it is faster and needs no API key. For a single image file (PNG/JPEG/…), use ocr_image.

Requires the LLMWHISPERER_API_KEY environment variable and the [ocr] extra.

Args

  • path: Path to the PDF file.
  • pages: Which pages to OCR — 'all' (default), a range like '1-5', a list like '1,3,7', mixed ('1-3,7'), or an open-ended range like '21-' (page 21 to the end). Narrowing pages reduces latency and OCR cost.

Returns

Page-delimited OCR text (--- Page N --- headers), or an actionable Error: ... message.

Exact text the model receives
OCR a scanned / image-only **PDF** via the LLM Whisperer API.

Use this for PDFs whose text is **not** selectable (scans, photos of
documents). For text-based PDFs prefer ``read_pdf`` — it is faster and
needs no API key. For a single image file (PNG/JPEG/…), use ``ocr_image``.

Requires the ``LLMWHISPERER_API_KEY`` environment variable and the
``[ocr]`` extra.

Args:
    path: Path to the PDF file.
    pages: Which pages to OCR — ``'all'`` (default), a range like
        ``'1-5'``, a list like ``'1,3,7'``, mixed (``'1-3,7'``), or an
        open-ended range like ``'21-'`` (page 21 to the end). Narrowing
        pages reduces latency and OCR cost.

Returns:
    Page-delimited OCR text (``--- Page N ---`` headers), or an
    actionable ``Error: ...`` message.
Parameter Type Required Default
path string yes —
pages string no "all"
JSON schema
{
  "properties": {
    "path": {
      "title": "Path",
      "type": "string"
    },
    "pages": {
      "default": "all",
      "title": "Pages",
      "type": "string"
    }
  },
  "required": [
    "path"
  ],
  "title": "ocr_pdfArguments",
  "type": "object"
}

ocr_image

OCR a single raster image (PNG/JPEG/WEBP/TIFF/BMP) via LLM Whisperer.

Use this for a photo or screenshot of text. For multi-page documents use ocr_pdf. For text already selectable in a PDF prefer read_pdf.

Requires the LLMWHISPERER_API_KEY environment variable and the [ocr] extra.

Args

  • path: Path to the image file. A single image is a single page, so there is no pages parameter.

Returns

The OCR-extracted text, or an actionable Error: ... message.

Exact text the model receives
OCR a single raster **image** (PNG/JPEG/WEBP/TIFF/BMP) via LLM Whisperer.

Use this for a photo or screenshot of text. For multi-page documents use
``ocr_pdf``. For text already selectable in a PDF prefer ``read_pdf``.

Requires the ``LLMWHISPERER_API_KEY`` environment variable and the
``[ocr]`` extra.

Args:
    path: Path to the image file. A single image is a single page, so
        there is no ``pages`` parameter.

Returns:
    The OCR-extracted text, or an actionable ``Error: ...`` message.
Parameter Type Required Default
path string yes —
JSON schema
{
  "properties": {
    "path": {
      "title": "Path",
      "type": "string"
    }
  },
  "required": [
    "path"
  ],
  "title": "ocr_imageArguments",
  "type": "object"
}

read_excel

Read Excel file content: cell values and sheet metadata.

Cells come back as the values saved in the file (the last calculated result of a formula, not the formula itself), as strings. The first row is returned as headers. The result also lists merged ranges and says whether the sheet has images or charts.

Requires the openpyxl library. Install the [docs] extra.

Args

  • path: Path to the Excel file.
  • sheet: Specific sheet name to read (default: the sheet that was active when the file was saved).
  • range: Cell range to read, e.g. 'A1:D10' (default: all data).

Returns

JSON string with sheet data.

Exact text the model receives
Read Excel file content: cell values and sheet metadata.

Cells come back as the values saved in the file (the last calculated
result of a formula, not the formula itself), as strings. The first row
is returned as ``headers``. The result also lists merged ranges and says
whether the sheet has images or charts.

Requires the ``openpyxl`` library. Install the
``[docs]`` extra.

Args:
    path: Path to the Excel file.
    sheet: Specific sheet name to read (default: the sheet that was
        active when the file was saved).
    range: Cell range to read, e.g. 'A1:D10' (default: all data).

Returns:
    JSON string with sheet data.
Parameter Type Required Default
path string yes —
sheet string or null no null
range string or null no null
JSON schema
{
  "properties": {
    "path": {
      "title": "Path",
      "type": "string"
    },
    "sheet": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Sheet"
    },
    "range": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Range"
    }
  },
  "required": [
    "path"
  ],
  "title": "read_excelArguments",
  "type": "object"
}

read_word

Read Word document content (text, headings, tables).

Requires the python-docx library. Install the [docs] extra.

Args

  • path: Path to the Word document.

Returns

The document content as text.

Exact text the model receives
Read Word document content (text, headings, tables).

Requires the ``python-docx`` library. Install the
``[docs]`` extra.

Args:
    path: Path to the Word document.

Returns:
    The document content as text.
Parameter Type Required Default
path string yes —
JSON schema
{
  "properties": {
    "path": {
      "title": "Path",
      "type": "string"
    }
  },
  "required": [
    "path"
  ],
  "title": "read_wordArguments",
  "type": "object"
}

read_powerpoint

Read text, slide structure, and speaker notes from a .pptx file.

For Word documents use read_word; for Excel use read_excel; for PDFs use read_pdf or ocr_pdf.

Requires the python-pptx library. Install the [docs] extra.

Args

  • path: Path to the PowerPoint file.

Returns

JSON string with slide data.

Exact text the model receives
Read text, slide structure, and speaker notes from a ``.pptx`` file.

For Word documents use ``read_word``; for Excel use ``read_excel``;
for PDFs use ``read_pdf`` or ``ocr_pdf``.

Requires the ``python-pptx`` library. Install the
``[docs]`` extra.

Args:
    path: Path to the PowerPoint file.

Returns:
    JSON string with slide data.
Parameter Type Required Default
path string yes —
JSON schema
{
  "properties": {
    "path": {
      "title": "Path",
      "type": "string"
    }
  },
  "required": [
    "path"
  ],
  "title": "read_powerpointArguments",
  "type": "object"
}

read_image

Read an image into the model's vision context.

The result is delivered to the LLM as an MCP ImageContent block — the model SEES the image and can transcribe its text, describe its contents, or compare it against another image. Use this tool when the agent needs visual access to a PNG / JPEG / WEBP / GIF / BMP / TIFF file inside the sandbox.

For dimensions / file-size / format metadata WITHOUT the image itself (i.e. text-only inspection), use get_image_metadata.

Images larger than DPTTOOLS_IMAGE_MAX_EDGE_PX (1568 px on the long edge by default) or DPTTOOLS_IMAGE_MAX_MB (3 MB) are scaled down before they are returned, so every model provider accepts them.

Requires the Pillow library. Install the [docs] extra.

Args

  • path: Path to the image file.

Returns

An MCP ImageContent block (the LLM consumes this as vision input). On error, returns a plain string starting with "Error: " so the agent can surface the failure.

Exact text the model receives
Read an image into the model's vision context.

The result is delivered to the LLM as an MCP ``ImageContent`` block —
the model SEES the image and can transcribe its text, describe its
contents, or compare it against another image. Use this tool when
the agent needs visual access to a PNG / JPEG / WEBP / GIF / BMP /
TIFF file inside the sandbox.

For dimensions / file-size / format metadata WITHOUT the image
itself (i.e. text-only inspection), use ``get_image_metadata``.

Images larger than ``DPTTOOLS_IMAGE_MAX_EDGE_PX`` (1568 px on the long
edge by default) or ``DPTTOOLS_IMAGE_MAX_MB`` (3 MB) are scaled down before
they are returned, so every model provider accepts them.

Requires the ``Pillow`` library. Install the
``[docs]`` extra.

Args:
    path: Path to the image file.

Returns:
    An MCP ImageContent block (the LLM consumes this as vision
    input). On error, returns a plain string starting with
    ``"Error: "`` so the agent can surface the failure.
Parameter Type Required Default
path string yes —
JSON schema
{
  "properties": {
    "path": {
      "title": "Path",
      "type": "string"
    }
  },
  "required": [
    "path"
  ],
  "title": "read_imageArguments",
  "type": "object"
}

get_image_metadata

Read image metadata (format / dimensions / file size) WITHOUT delivering the image bytes to the model.

Use this when the agent only needs to inspect the file's shape (e.g. to decide whether to crop / resize before reading). Returns a JSON string. For visual inspection (the agent needs to SEE the image), use read_image instead.

Requires the Pillow library. Install the [docs] extra.

Args

  • path: Path to the image file.

Returns

JSON string with keys: format, width, height, mode, file_size, file_size_bytes.

Exact text the model receives
Read image metadata (format / dimensions / file size) WITHOUT
delivering the image bytes to the model.

Use this when the agent only needs to inspect the file's shape
(e.g. to decide whether to crop / resize before reading). Returns a
JSON string. For visual inspection (the agent needs to SEE the
image), use ``read_image`` instead.

Requires the ``Pillow`` library. Install the
``[docs]`` extra.

Args:
    path: Path to the image file.

Returns:
    JSON string with keys: ``format``, ``width``, ``height``,
    ``mode``, ``file_size``, ``file_size_bytes``.
Parameter Type Required Default
path string yes —
JSON schema
{
  "properties": {
    "path": {
      "title": "Path",
      "type": "string"
    }
  },
  "required": [
    "path"
  ],
  "title": "get_image_metadataArguments",
  "type": "object"
}

render_document_page

Render a single page of a PDF / DOCX / XLSX / PPTX into the model's vision context.

PDF files are rendered directly via pymupdf; DOCX / XLSX / PPTX are first converted to PDF via LibreOffice headless, then rendered. The result is delivered to the LLM as an MCP ImageContent block — the model SEES the rendered page directly.

Rejects image files (.png, .jpg, .gif, .bmp, .tiff, .webp). For raw image inspection use read_image. For image thumbnails use image_resize.

Images larger than DPTTOOLS_IMAGE_MAX_EDGE_PX (1568 px on the long edge by default) or DPTTOOLS_IMAGE_MAX_MB (3 MB) are scaled down before they are returned, so every model provider accepts them.

Requires the pymupdf library. Install the [docs] extra.

Office files need LibreOffice in the environment (on Debian/Ubuntu: apt-get install libreoffice-core libreoffice-writer libreoffice-calc libreoffice-impress), or DPTTOOLS_SOFFICE_BIN pointing at soffice.

Args

  • path: Path to the document file.
  • page: Page number to render (1-indexed, default 1).
  • scale: Render scale factor (default 2.0 for high-DPI).

Returns

An MCP ImageContent block on success; an error string starting with "Error: " on failure.

Exact text the model receives
Render a single page of a PDF / DOCX / XLSX / PPTX into the model's
vision context.

PDF files are rendered directly via pymupdf; DOCX / XLSX / PPTX are
first converted to PDF via LibreOffice headless, then rendered. The
result is delivered to the LLM as an MCP ``ImageContent`` block —
the model SEES the rendered page directly.

**Rejects image files (.png, .jpg, .gif, .bmp, .tiff, .webp).** For
raw image inspection use ``read_image``. For image thumbnails use
``image_resize``.

Images larger than ``DPTTOOLS_IMAGE_MAX_EDGE_PX`` (1568 px on the long
edge by default) or ``DPTTOOLS_IMAGE_MAX_MB`` (3 MB) are scaled down before
they are returned, so every model provider accepts them.

Requires the ``pymupdf`` library. Install the
``[docs]`` extra.

Office files need LibreOffice in the environment (on Debian/Ubuntu:
``apt-get install libreoffice-core libreoffice-writer libreoffice-calc
libreoffice-impress``), or ``DPTTOOLS_SOFFICE_BIN`` pointing at
``soffice``.

Args:
    path: Path to the document file.
    page: Page number to render (1-indexed, default 1).
    scale: Render scale factor (default 2.0 for high-DPI).

Returns:
    An MCP ImageContent block on success; an error string starting
    with ``"Error: "`` on failure.
Parameter Type Required Default
path string yes —
page integer no 1
scale number no 2.0
JSON schema
{
  "properties": {
    "path": {
      "title": "Path",
      "type": "string"
    },
    "page": {
      "default": 1,
      "title": "Page",
      "type": "integer"
    },
    "scale": {
      "default": 2.0,
      "title": "Scale",
      "type": "number"
    }
  },
  "required": [
    "path"
  ],
  "title": "render_document_pageArguments",
  "type": "object"
}

render_document_thumbnail

Render low-resolution thumbnails for the first N pages of a PDF / DOCX / XLSX / PPTX into the model's vision context.

Uses the same conversion pipeline as render_document_page. PDF files are rendered directly via pymupdf. DOCX / XLSX / PPTX are first converted to PDF via LibreOffice headless. Each thumbnail is delivered to the LLM as a separate MCP ImageContent block — the model SEES every page in sequence and can use them for at-a-glance inspection (e.g. picking the page to operate on).

Rejects image files. For thumbnailing an image, use image_resize instead.

Images larger than DPTTOOLS_IMAGE_MAX_EDGE_PX (1568 px on the long edge by default) or DPTTOOLS_IMAGE_MAX_MB (3 MB) are scaled down before they are returned, so every model provider accepts them.

Requires the pymupdf library. Install the [docs] extra.

Office files need LibreOffice in the environment (on Debian/Ubuntu: apt-get install libreoffice-core libreoffice-writer libreoffice-calc libreoffice-impress), or DPTTOOLS_SOFFICE_BIN pointing at soffice.

Args

  • path: Path to the document file.
  • max_pages: Maximum number of pages to render thumbnails for (default 5).

Returns

A list of MCP ImageContent blocks (one per rendered page). On error, returns a plain string starting with "Error: ".

Exact text the model receives
Render low-resolution thumbnails for the first N pages of a
PDF / DOCX / XLSX / PPTX into the model's vision context.

Uses the same conversion pipeline as ``render_document_page``. PDF
files are rendered directly via pymupdf. DOCX / XLSX / PPTX are first
converted to PDF via LibreOffice headless. Each thumbnail is
delivered to the LLM as a separate MCP ``ImageContent`` block — the
model SEES every page in sequence and can use them for at-a-glance
inspection (e.g. picking the page to operate on).

**Rejects image files.** For thumbnailing an image, use
``image_resize`` instead.

Images larger than ``DPTTOOLS_IMAGE_MAX_EDGE_PX`` (1568 px on the long
edge by default) or ``DPTTOOLS_IMAGE_MAX_MB`` (3 MB) are scaled down before
they are returned, so every model provider accepts them.

Requires the ``pymupdf`` library. Install the
``[docs]`` extra.

Office files need LibreOffice in the environment (on Debian/Ubuntu:
``apt-get install libreoffice-core libreoffice-writer libreoffice-calc
libreoffice-impress``), or ``DPTTOOLS_SOFFICE_BIN`` pointing at
``soffice``.

Args:
    path: Path to the document file.
    max_pages: Maximum number of pages to render thumbnails for (default 5).

Returns:
    A list of MCP ImageContent blocks (one per rendered page). On
    error, returns a plain string starting with ``"Error: "``.
Parameter Type Required Default
path string yes —
max_pages integer no 5
JSON schema
{
  "properties": {
    "path": {
      "title": "Path",
      "type": "string"
    },
    "max_pages": {
      "default": 5,
      "title": "Max Pages",
      "type": "integer"
    }
  },
  "required": [
    "path"
  ],
  "title": "render_document_thumbnailArguments",
  "type": "object"
}

read_document_pages_as_images

Render multiple pages of a PDF / DOCX / XLSX / PPTX into the model's vision context as full-resolution images.

PDF files are rendered directly via pymupdf; DOCX / XLSX / PPTX are first converted to PDF via LibreOffice headless, then rendered. Each requested page is delivered to the LLM as a separate MCP ImageContent block — the model SEES every page directly. This is the vision fallback for scanned or image/diagram-heavy documents that read_pdf / read_word / read_excel / read_powerpoint read as near-empty.

WARNING: pages="all" on a large PDF will return one image per page and will very likely overload the model's context window. Prefer a bounded range (e.g. "1-10"). max_pages caps how many pages are returned; pages beyond the cap are dropped.

Rejects image files (.png, .jpg, .gif, .bmp, .tiff, .webp). For raw image inspection use read_image.

Images larger than DPTTOOLS_IMAGE_MAX_EDGE_PX (1568 px on the long edge by default) or DPTTOOLS_IMAGE_MAX_MB (3 MB) are scaled down before they are returned, so every model provider accepts them.

Requires the pymupdf library. Install the [docs] extra.

Office files need LibreOffice in the environment (on Debian/Ubuntu: apt-get install libreoffice-core libreoffice-writer libreoffice-calc libreoffice-impress), or DPTTOOLS_SOFFICE_BIN pointing at soffice.

Args

  • path: Path to the document file.
  • pages: Which pages to render — 'all', '1-5', or '1,3,7' (1-indexed).
  • scale: Render scale factor (default 2.0 for high-DPI).
  • max_pages: Maximum number of page images to return (default 20).

Returns

A list of MCP ImageContent blocks (one per rendered page). On error, returns a plain string starting with "Error: ".

Exact text the model receives
Render multiple pages of a PDF / DOCX / XLSX / PPTX into the model's
vision context as full-resolution images.

PDF files are rendered directly via pymupdf; DOCX / XLSX / PPTX are first
converted to PDF via LibreOffice headless, then rendered. Each requested
page is delivered to the LLM as a separate MCP ``ImageContent`` block —
the model SEES every page directly. This is the vision fallback for
scanned or image/diagram-heavy documents that ``read_pdf`` /
``read_word`` / ``read_excel`` / ``read_powerpoint`` read as near-empty.

**WARNING:** ``pages="all"`` on a large PDF will return one image per
page and will very likely overload the model's context window. Prefer a
bounded range (e.g. ``"1-10"``). ``max_pages`` caps how many pages are
returned; pages beyond the cap are dropped.

**Rejects image files (.png, .jpg, .gif, .bmp, .tiff, .webp).** For raw
image inspection use ``read_image``.

Images larger than ``DPTTOOLS_IMAGE_MAX_EDGE_PX`` (1568 px on the long
edge by default) or ``DPTTOOLS_IMAGE_MAX_MB`` (3 MB) are scaled down before
they are returned, so every model provider accepts them.

Requires the ``pymupdf`` library. Install the
``[docs]`` extra.

Office files need LibreOffice in the environment (on Debian/Ubuntu:
``apt-get install libreoffice-core libreoffice-writer libreoffice-calc
libreoffice-impress``), or ``DPTTOOLS_SOFFICE_BIN`` pointing at
``soffice``.

Args:
    path: Path to the document file.
    pages: Which pages to render — 'all', '1-5', or '1,3,7' (1-indexed).
    scale: Render scale factor (default 2.0 for high-DPI).
    max_pages: Maximum number of page images to return (default 20).

Returns:
    A list of MCP ImageContent blocks (one per rendered page). On error,
    returns a plain string starting with ``"Error: "``.
Parameter Type Required Default
path string yes —
pages string no "all"
scale number no 2.0
max_pages integer no 20
JSON schema
{
  "properties": {
    "path": {
      "title": "Path",
      "type": "string"
    },
    "pages": {
      "default": "all",
      "title": "Pages",
      "type": "string"
    },
    "scale": {
      "default": 2.0,
      "title": "Scale",
      "type": "number"
    },
    "max_pages": {
      "default": 20,
      "title": "Max Pages",
      "type": "integer"
    }
  },
  "required": [
    "path"
  ],
  "title": "read_document_pages_as_imagesArguments",
  "type": "object"
}

convert_document

Convert a document to another format and save the result as a file.

Converts Office and OpenDocument files (DOCX, XLSX, PPTX, DOC, XLS, PPT, ODT, ODS, ODP, RTF and similar) with LibreOffice headless, and writes the output to disk. It does NOT show the result to the model: it returns the paths of the files it wrote. To look at pages, use read_document_pages_as_images or render_document_page instead.

to is one of: pdf, docx, xlsx, pptx, odt, ods, odp, csv, html, txt, png, jpg.

  • png / jpg write one image per page, named <name>-p<N>.png. The document is converted to PDF first, then each page is rendered. Choose pages with page ('all', '1-3' or '2,5', 1-indexed). A PDF source can only be converted to png or jpg.
  • csv exports only the first sheet of a spreadsheet.
  • Other targets write one file, <name>.<to>.

Output goes next to the source file unless outdir names an existing directory. An existing output file is never replaced unless overwrite=True.

Requires LibreOffice in the environment (on Debian/Ubuntu: apt-get install libreoffice-core libreoffice-writer libreoffice-calc libreoffice-impress), or DPTTOOLS_SOFFICE_BIN pointing at soffice. png / jpg also need pymupdf (the [docs] extra). Each conversion times out after DPTTOOLS_CONVERT_TIMEOUT_S seconds (default 120).

Args

  • path: Path to the source document.
  • to: Target format: pdf, docx, xlsx, pptx, odt, ods, odp, csv, html, txt, png or jpg.
  • outdir: Existing directory to write into. Defaults to the source file's directory.
  • page: Pages to render for png / jpg: 'all', '1-5' or '1,3,7' (1-indexed). Must be 'all' for other targets.
  • overwrite: Replace output files that already exist (default False).

Returns

JSON with output_files (absolute paths), pages (pages written for png / jpg, the page count for pdf when pymupdf is installed, otherwise null) and engine. On failure, a string starting with "Error: ".

Exact text the model receives
Convert a document to another format and save the result as a file.

Converts Office and OpenDocument files (DOCX, XLSX, PPTX, DOC, XLS, PPT,
ODT, ODS, ODP, RTF and similar) with LibreOffice headless, and writes the
output to disk. It does NOT show the result to the model: it returns the
paths of the files it wrote. To look at pages, use
``read_document_pages_as_images`` or ``render_document_page`` instead.

``to`` is one of: pdf, docx, xlsx, pptx, odt, ods, odp, csv, html, txt,
png, jpg.

- **png / jpg** write one image per page, named ``<name>-p<N>.png``. The
  document is converted to PDF first, then each page is rendered. Choose
  pages with ``page`` ('all', '1-3' or '2,5', 1-indexed). A PDF source can
  only be converted to png or jpg.
- **csv** exports only the first sheet of a spreadsheet.
- Other targets write one file, ``<name>.<to>``.

Output goes next to the source file unless ``outdir`` names an existing
directory. An existing output file is never replaced unless
``overwrite=True``.

Requires LibreOffice in the environment (on Debian/Ubuntu:
``apt-get install libreoffice-core libreoffice-writer libreoffice-calc
libreoffice-impress``), or ``DPTTOOLS_SOFFICE_BIN`` pointing at
``soffice``. png / jpg also need ``pymupdf``
(the ``[docs]`` extra). Each conversion times
out after ``DPTTOOLS_CONVERT_TIMEOUT_S`` seconds (default 120).

Args:
    path: Path to the source document.
    to: Target format: pdf, docx, xlsx, pptx, odt, ods, odp, csv, html,
        txt, png or jpg.
    outdir: Existing directory to write into. Defaults to the source
        file's directory.
    page: Pages to render for png / jpg: 'all', '1-5' or '1,3,7'
        (1-indexed). Must be 'all' for other targets.
    overwrite: Replace output files that already exist (default False).

Returns:
    JSON with ``output_files`` (absolute paths), ``pages`` (pages written
    for png / jpg, the page count for pdf when pymupdf is installed,
    otherwise null) and ``engine``. On failure, a string starting with
    ``"Error: "``.
Parameter Type Required Default
path string yes —
to string yes —
outdir string or null no null
page string no "all"
overwrite boolean no false
JSON schema
{
  "properties": {
    "path": {
      "title": "Path",
      "type": "string"
    },
    "to": {
      "title": "To",
      "type": "string"
    },
    "outdir": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Outdir"
    },
    "page": {
      "default": "all",
      "title": "Page",
      "type": "string"
    },
    "overwrite": {
      "default": false,
      "title": "Overwrite",
      "type": "boolean"
    }
  },
  "required": [
    "path",
    "to"
  ],
  "title": "convert_documentArguments",
  "type": "object"
}

get_file_overview

Return a lightweight, file-type-specific summary without full content.

Use for fast context-gathering; for full content extraction use read_word, read_excel, read_pdf, read_powerpoint, or read_image.

Accepted extensions:

  • PDF: .pdf
  • Excel: .xlsx, .xls
  • Word: .docx, .doc
  • PowerPoint: .pptx, .ppt
  • Image: .png, .jpg, .jpeg, .gif, .bmp, .tiff, .tif, .webp
  • Other: any other extension is treated as a text/JSON file (file size, line count, first/last lines preview).

The overview is customised based on the file type:

  • PDF: Page count, page dimensions, text preview per page, has_images, has_tables
  • Excel: Sheet names, row/column counts per sheet, column headers, sample rows
  • Word: Section headings, paragraph count, table count, word count
  • PowerPoint: Slide count, slide titles, speaker notes presence
  • Image: Dimensions, format, color mode, file size
  • Text/JSON/Other: File size, line count, first/last lines preview

Args

  • path: Path to the file.

Returns

JSON string with file-type-specific metadata and summary.

Exact text the model receives
Return a **lightweight, file-type-specific summary** without full content.

Use for fast context-gathering; for full content extraction use
``read_word``, ``read_excel``, ``read_pdf``, ``read_powerpoint``, or
``read_image``.

Accepted extensions:

- **PDF**: ``.pdf``
- **Excel**: ``.xlsx``, ``.xls``
- **Word**: ``.docx``, ``.doc``
- **PowerPoint**: ``.pptx``, ``.ppt``
- **Image**: ``.png``, ``.jpg``, ``.jpeg``, ``.gif``, ``.bmp``, ``.tiff``, ``.tif``, ``.webp``
- **Other**: any other extension is treated as a text/JSON file
  (file size, line count, first/last lines preview).

The overview is customised based on the file type:

- **PDF**: Page count, page dimensions, text preview per page, has_images, has_tables
- **Excel**: Sheet names, row/column counts per sheet, column headers, sample rows
- **Word**: Section headings, paragraph count, table count, word count
- **PowerPoint**: Slide count, slide titles, speaker notes presence
- **Image**: Dimensions, format, color mode, file size
- **Text/JSON/Other**: File size, line count, first/last lines preview

Args:
    path: Path to the file.

Returns:
    JSON string with file-type-specific metadata and summary.
Parameter Type Required Default
path string yes —
JSON schema
{
  "properties": {
    "path": {
      "title": "Path",
      "type": "string"
    }
  },
  "required": [
    "path"
  ],
  "title": "get_file_overviewArguments",
  "type": "object"
}

code_execution server

code-execution-tools — see the server page.

execute_command

Execute a shell command in the persistent bash session.

The session preserves the working directory across calls — if you cd into a directory, subsequent commands will run there until restart_session is called. The primary security boundary is the Docker container the agent runs in.

Args

  • command: Shell command to execute. Supports pipes, redirects, and chained commands (&&, ||, ;).
  • timeout: Execution timeout in seconds. Defaults to the DPTTOOLS_SANDBOX_TIMEOUT environment variable (30 s).

Returns

JSON string with keys stdout, stderr, exit_code (int), and timed_out (bool).

Exact text the model receives
Execute a shell command in the persistent bash session.

The session preserves the working directory across calls — if you ``cd``
into a directory, subsequent commands will run there until
``restart_session`` is called. The primary security boundary is the
Docker container the agent runs in.

Args:
    command: Shell command to execute.  Supports pipes, redirects, and
        chained commands (``&&``, ``||``, ``;``).
    timeout: Execution timeout in seconds.  Defaults to the
        ``DPTTOOLS_SANDBOX_TIMEOUT`` environment variable (30 s).

Returns:
    JSON string with keys ``stdout``, ``stderr``, ``exit_code``
    (int), and ``timed_out`` (bool).
Parameter Type Required Default
command string yes —
timeout integer or null no null
JSON schema
{
  "properties": {
    "command": {
      "title": "Command",
      "type": "string"
    },
    "timeout": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Timeout"
    }
  },
  "required": [
    "command"
  ],
  "title": "execute_commandArguments",
  "type": "object"
}

restart_session

Reset the persistent bash session.

Resets the working directory back to the initial value it had when the server started.

Returns

Confirmation message including the reset working directory path.

Exact text the model receives
Reset the persistent bash session.

Resets the working directory back to the initial value it had when the
server started.

Returns:
    Confirmation message including the reset working directory path.

No parameters.

JSON schema
{
  "properties": {},
  "title": "restart_sessionArguments",
  "type": "object"
}

screenshot server

screenshot-tools — see the server page.

take_screenshot

Capture a screenshot (full screen, specific monitor, or region).

When output_path is provided, saves the PNG to that path and returns the path string. When omitted, returns the screenshot as an MCP ImageContent block — the LLM SEES the captured pixels directly.

Captures the real screen of the machine this server runs on (all monitors combined by default).

The image block returned to the model is scaled down when it is larger than DPTTOOLS_IMAGE_MAX_EDGE_PX (1568 px on the long edge by default) or DPTTOOLS_IMAGE_MAX_MB (3 MB); a file saved to output_path keeps full resolution.

Requires the mss and Pillow libraries. Install the [screenshot] extra.

Args

  • output_path: Path to save the screenshot as PNG. If omitted, returns a vision-readable image block.
  • monitor: Monitor index to capture. 0 = all monitors combined (default), 1 = first monitor, 2 = second, etc.
  • region: Region to capture as {"left": int, "top": int, "width": int, "height": int}. Overrides monitor selection.

Returns

File path string (when output_path is set) OR an MCP ImageContent block (when output_path is omitted). On error, returns a plain string starting with "Error: ".

Exact text the model receives
Capture a screenshot (full screen, specific monitor, or region).

When ``output_path`` is provided, saves the PNG to that path and
returns the path string. When omitted, returns the screenshot as
an MCP ``ImageContent`` block — the LLM SEES the captured pixels
directly.

Captures the real screen of the machine this server runs on (all
monitors combined by default).

The image block returned to the model is scaled down when it is larger
than ``DPTTOOLS_IMAGE_MAX_EDGE_PX`` (1568 px on the long edge by default)
or ``DPTTOOLS_IMAGE_MAX_MB`` (3 MB); a file saved to ``output_path``
keeps full resolution.

Requires the ``mss`` and ``Pillow`` libraries. Install the
``[screenshot]`` extra.

Args:
    output_path: Path to save the screenshot as PNG. If omitted,
        returns a vision-readable image block.
    monitor: Monitor index to capture. 0 = all monitors combined
        (default), 1 = first monitor, 2 = second, etc.
    region: Region to capture as ``{"left": int, "top": int,
        "width": int, "height": int}``. Overrides monitor selection.

Returns:
    File path string (when ``output_path`` is set) OR an MCP
    ImageContent block (when ``output_path`` is omitted). On error,
    returns a plain string starting with ``"Error: "``.
Parameter Type Required Default
output_path string or null no null
monitor integer or null no null
region object or null no null
JSON schema
{
  "properties": {
    "output_path": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Output Path"
    },
    "monitor": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Monitor"
    },
    "region": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Region"
    }
  },
  "title": "take_screenshotArguments",
  "type": "object"
}

take_window_screenshot

Capture a specific window by title.

Note: window-specific capture is not implemented yet, because it is not reliable across platforms. Use take_screenshot() with a region parameter for targeted captures.

Args

  • window_title: Title of the window to capture.
  • output_path: Path to save the screenshot (optional; returns a vision-readable image block if omitted).

Returns

An error message explaining the limitation, with a suggestion to use take_screenshot with a region parameter instead.

Exact text the model receives
Capture a specific window by title.

Note: window-specific capture is not implemented yet, because it is not
reliable across platforms. Use ``take_screenshot()`` with a ``region``
parameter for targeted captures.

Args:
    window_title: Title of the window to capture.
    output_path: Path to save the screenshot (optional; returns a
        vision-readable image block if omitted).

Returns:
    An error message explaining the limitation, with a suggestion to use
    take_screenshot with a region parameter instead.
Parameter Type Required Default
window_title string yes —
output_path string or null no null
JSON schema
{
  "properties": {
    "window_title": {
      "title": "Window Title",
      "type": "string"
    },
    "output_path": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Output Path"
    }
  },
  "required": [
    "window_title"
  ],
  "title": "take_window_screenshotArguments",
  "type": "object"
}

image_tools server

image-tools — see the server page.

image_crop

Crop an image to specified coordinates.

Args

  • path: Path to the input image.
  • left: Left coordinate of the crop box.
  • top: Top coordinate of the crop box.
  • right: Right coordinate of the crop box.
  • bottom: Bottom coordinate of the crop box.
  • output_path: Path for the output image (default: new file next to input, same format).
  • frame: Frame index for multi-frame inputs (default 0).

Returns

Path to the cropped image.

Exact text the model receives
Crop an image to specified coordinates.

Args:
    path: Path to the input image.
    left: Left coordinate of the crop box.
    top: Top coordinate of the crop box.
    right: Right coordinate of the crop box.
    bottom: Bottom coordinate of the crop box.
    output_path: Path for the output image (default: new file next to
        input, same format).
    frame: Frame index for multi-frame inputs (default 0).

Returns:
    Path to the cropped image.
Parameter Type Required Default
path string yes —
left integer yes —
top integer yes —
right integer yes —
bottom integer yes —
output_path string or null no null
frame integer no 0
JSON schema
{
  "properties": {
    "path": {
      "title": "Path",
      "type": "string"
    },
    "left": {
      "title": "Left",
      "type": "integer"
    },
    "top": {
      "title": "Top",
      "type": "integer"
    },
    "right": {
      "title": "Right",
      "type": "integer"
    },
    "bottom": {
      "title": "Bottom",
      "type": "integer"
    },
    "output_path": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Output Path"
    },
    "frame": {
      "default": 0,
      "title": "Frame",
      "type": "integer"
    }
  },
  "required": [
    "path",
    "left",
    "top",
    "right",
    "bottom"
  ],
  "title": "image_cropArguments",
  "type": "object"
}

image_resize

Resize an image. Maintains aspect ratio if only one dimension is given.

Args

  • path: Path to the input image.
  • width: Target width in pixels (optional).
  • height: Target height in pixels (optional).
  • output_path: Path for the output image (default: new file next to input, same format).
  • frame: Frame index for multi-frame inputs (default 0).

Returns

Path to the resized image.

Exact text the model receives
Resize an image. Maintains aspect ratio if only one dimension is given.

Args:
    path: Path to the input image.
    width: Target width in pixels (optional).
    height: Target height in pixels (optional).
    output_path: Path for the output image (default: new file next to
        input, same format).
    frame: Frame index for multi-frame inputs (default 0).

Returns:
    Path to the resized image.
Parameter Type Required Default
path string yes —
width integer or null no null
height integer or null no null
output_path string or null no null
frame integer no 0
JSON schema
{
  "properties": {
    "path": {
      "title": "Path",
      "type": "string"
    },
    "width": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Width"
    },
    "height": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Height"
    },
    "output_path": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Output Path"
    },
    "frame": {
      "default": 0,
      "title": "Frame",
      "type": "integer"
    }
  },
  "required": [
    "path"
  ],
  "title": "image_resizeArguments",
  "type": "object"
}

image_zoom

Zoom into a specific region of an image.

Crops the specified region, then scales it up by the zoom factor.

Args

  • path: Path to the input image.
  • region: Region to zoom as {"left": int, "top": int, "width": int, "height": int}.
  • zoom_factor: Zoom multiplier (default 2.0).
  • output_path: Path for the output image (default: new file next to input, same format).
  • frame: Frame index for multi-frame inputs (default 0).

Returns

Path to the zoomed image.

Exact text the model receives
Zoom into a specific region of an image.

Crops the specified region, then scales it up by the zoom factor.

Args:
    path: Path to the input image.
    region: Region to zoom as {"left": int, "top": int, "width": int,
        "height": int}.
    zoom_factor: Zoom multiplier (default 2.0).
    output_path: Path for the output image (default: new file next to
        input, same format).
    frame: Frame index for multi-frame inputs (default 0).

Returns:
    Path to the zoomed image.
Parameter Type Required Default
path string yes —
region object yes —
zoom_factor number no 2.0
output_path string or null no null
frame integer no 0
JSON schema
{
  "properties": {
    "path": {
      "title": "Path",
      "type": "string"
    },
    "region": {
      "additionalProperties": true,
      "title": "Region",
      "type": "object"
    },
    "zoom_factor": {
      "default": 2.0,
      "title": "Zoom Factor",
      "type": "number"
    },
    "output_path": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Output Path"
    },
    "frame": {
      "default": 0,
      "title": "Frame",
      "type": "integer"
    }
  },
  "required": [
    "path",
    "region"
  ],
  "title": "image_zoomArguments",
  "type": "object"
}

image_rotate

Rotate an image by a given angle (counter-clockwise).

The canvas is expanded to fit the entire rotated image.

Args

  • path: Path to the input image.
  • angle: Rotation angle in degrees (counter-clockwise).
  • output_path: Path for the output image (default: new file next to input, same format).
  • frame: Frame index for multi-frame inputs (default 0).

Returns

Path to the rotated image.

Exact text the model receives
Rotate an image by a given angle (counter-clockwise).

The canvas is expanded to fit the entire rotated image.

Args:
    path: Path to the input image.
    angle: Rotation angle in degrees (counter-clockwise).
    output_path: Path for the output image (default: new file next to
        input, same format).
    frame: Frame index for multi-frame inputs (default 0).

Returns:
    Path to the rotated image.
Parameter Type Required Default
path string yes —
angle number yes —
output_path string or null no null
frame integer no 0
JSON schema
{
  "properties": {
    "path": {
      "title": "Path",
      "type": "string"
    },
    "angle": {
      "title": "Angle",
      "type": "number"
    },
    "output_path": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Output Path"
    },
    "frame": {
      "default": 0,
      "title": "Frame",
      "type": "integer"
    }
  },
  "required": [
    "path",
    "angle"
  ],
  "title": "image_rotateArguments",
  "type": "object"
}

image_annotate

Add annotations (text, rectangles, circles, arrows) to an image.

Args

  • path: Path to the input image.
  • annotations: JSON list of annotation objects. Supported types: - {"type": "rectangle", "x": int, "y": int, "width": int, "height": int, "color": str} - {"type": "text", "x": int, "y": int, "text": str, "font_size": int, "color": str} - {"type": "circle", "cx": int, "cy": int, "radius": int, "color": str} - {"type": "arrow", "x1": int, "y1": int, "x2": int, "y2": int, "color": str}
  • output_path: Path for the output image (default: new file next to input, same format).
  • frame: Frame index for multi-frame inputs (default 0).

Returns

Path to the annotated image.

Exact text the model receives
Add annotations (text, rectangles, circles, arrows) to an image.

Args:
    path: Path to the input image.
    annotations: JSON list of annotation objects. Supported types:

        - {"type": "rectangle", "x": int, "y": int, "width": int, "height": int, "color": str}
        - {"type": "text", "x": int, "y": int, "text": str, "font_size": int, "color": str}
        - {"type": "circle", "cx": int, "cy": int, "radius": int, "color": str}
        - {"type": "arrow", "x1": int, "y1": int, "x2": int, "y2": int, "color": str}
    output_path: Path for the output image (default: new file next to
        input, same format).
    frame: Frame index for multi-frame inputs (default 0).

Returns:
    Path to the annotated image.
Parameter Type Required Default
path string yes —
annotations string yes —
output_path string or null no null
frame integer no 0
JSON schema
{
  "properties": {
    "path": {
      "title": "Path",
      "type": "string"
    },
    "annotations": {
      "title": "Annotations",
      "type": "string"
    },
    "output_path": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Output Path"
    },
    "frame": {
      "default": 0,
      "title": "Frame",
      "type": "integer"
    }
  },
  "required": [
    "path",
    "annotations"
  ],
  "title": "image_annotateArguments",
  "type": "object"
}

image_convert

Convert an image between formats (PNG, JPEG, WEBP, BMP, TIFF).

Non-RGB/L modes are normalized to RGB for JPEG, compositing any alpha onto a white background (not black).

Args

  • path: Path to the input image.
  • format: Target format — 'png', 'jpeg', 'webp', 'bmp', 'tiff'.
  • output_path: Path for the output image (default: new file with the new extension).
  • frame: Frame index for multi-frame inputs (default 0).

Returns

Path to the converted image.

Exact text the model receives
Convert an image between formats (PNG, JPEG, WEBP, BMP, TIFF).

Non-RGB/L modes are normalized to RGB for JPEG, compositing any alpha
onto a **white** background (not black).

Args:
    path: Path to the input image.
    format: Target format — 'png', 'jpeg', 'webp', 'bmp', 'tiff'.
    output_path: Path for the output image (default: new file with the
        new extension).
    frame: Frame index for multi-frame inputs (default 0).

Returns:
    Path to the converted image.
Parameter Type Required Default
path string yes —
format string yes —
output_path string or null no null
frame integer no 0
JSON schema
{
  "properties": {
    "path": {
      "title": "Path",
      "type": "string"
    },
    "format": {
      "title": "Format",
      "type": "string"
    },
    "output_path": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Output Path"
    },
    "frame": {
      "default": 0,
      "title": "Frame",
      "type": "integer"
    }
  },
  "required": [
    "path",
    "format"
  ],
  "title": "image_convertArguments",
  "type": "object"
}

image_get_info

Get image dimensions, format, color mode, frame count, and file size.

Dimensions reflect the EXIF-corrected orientation (what a viewer shows), so they match the coordinate space the other tools operate in.

Args

  • path: Path to the image file.

Returns

JSON string with width, height, format, mode, n_frames, is_animated, file_size_bytes, and file_size_human.

Exact text the model receives
Get image dimensions, format, color mode, frame count, and file size.

Dimensions reflect the **EXIF-corrected** orientation (what a viewer
shows), so they match the coordinate space the other tools operate in.

Args:
    path: Path to the image file.

Returns:
    JSON string with width, height, format, mode, n_frames, is_animated,
    file_size_bytes, and file_size_human.
Parameter Type Required Default
path string yes —
JSON schema
{
  "properties": {
    "path": {
      "title": "Path",
      "type": "string"
    }
  },
  "required": [
    "path"
  ],
  "title": "image_get_infoArguments",
  "type": "object"
}

skills server

skills-tools — see the server page.

list_skills

Discover and list all available skills from the configured skills directory.

Reads YAML frontmatter from SKILL.md files in each subdirectory of DPTTOOLS_SKILLS_DIR. Returns Level-1 metadata (name, description) plus the absolute path to each SKILL.md file and any optional spec fields (license, compatibility, metadata).

Returns

JSON object with: - skills: list of objects with name, description, path, directory, and any optional fields present in the frontmatter - skills_dir: absolute path of the configured skills directory - count: number of valid skills discovered - diagnostics: list of non-fatal parse warnings (omitted when empty)

Exact text the model receives
Discover and list all available skills from the configured skills directory.

Reads YAML frontmatter from SKILL.md files in each subdirectory of
DPTTOOLS_SKILLS_DIR. Returns Level-1 metadata (name, description) plus
the absolute path to each SKILL.md file and any optional spec fields
(license, compatibility, metadata).

Returns:
    JSON object with:
      - ``skills``: list of objects with name, description, path, directory,
        and any optional fields present in the frontmatter
      - ``skills_dir``: absolute path of the configured skills directory
      - ``count``: number of valid skills discovered
      - ``diagnostics``: list of non-fatal parse warnings (omitted when empty)

No parameters.

JSON schema
{
  "properties": {},
  "title": "list_skillsArguments",
  "type": "object"
}

load_skill

Load the full SKILL.md content for a specific skill (Level 2 instructions).

The returned content is wrapped in <skill_content> tags identifying the skill name and absolute directory, with a nested <skill_resources> listing of bundled files (scripts, references, assets) in the skill folder and one level of subfolders, at most 50 entries. Use the directory path in the wrapper to resolve any relative references inside the skill body.

Args

  • skill_name: Name of the skill to load (must match directory name).

Returns

The wrapped SKILL.md content (frontmatter + body + resource listing).

Exact text the model receives
Load the full SKILL.md content for a specific skill (Level 2 instructions).

The returned content is wrapped in ``<skill_content>`` tags identifying
the skill name and absolute directory, with a nested ``<skill_resources>``
listing of bundled files (scripts, references, assets) in the skill
folder and one level of subfolders, at most 50 entries. Use the directory path in the
wrapper to resolve any relative references inside the skill body.

Args:
    skill_name: Name of the skill to load (must match directory name).

Returns:
    The wrapped SKILL.md content (frontmatter + body + resource listing).
Parameter Type Required Default
skill_name string yes —
JSON schema
{
  "properties": {
    "skill_name": {
      "title": "Skill Name",
      "type": "string"
    }
  },
  "required": [
    "skill_name"
  ],
  "title": "load_skillArguments",
  "type": "object"
}

load_skill_resource

Read a specific resource file from within a skill directory (Level 3).

Args

  • skill_name: Name of the skill.
  • resource_path: Relative path to the resource file within the skill directory.

Returns

The resource file content.

Exact text the model receives
Read a specific resource file from within a skill directory (Level 3).

Args:
    skill_name: Name of the skill.
    resource_path: Relative path to the resource file within the
        skill directory.

Returns:
    The resource file content.
Parameter Type Required Default
skill_name string yes —
resource_path string yes —
JSON schema
{
  "properties": {
    "skill_name": {
      "title": "Skill Name",
      "type": "string"
    },
    "resource_path": {
      "title": "Resource Path",
      "type": "string"
    }
  },
  "required": [
    "skill_name",
    "resource_path"
  ],
  "title": "load_skill_resourceArguments",
  "type": "object"
}

execute_skill_script

Execute a script bundled with a skill.

The script runs via subprocess with the configured timeout (DPTTOOLS_SANDBOX_TIMEOUT). The container boundary provides the primary isolation.

Only .py scripts are supported and they run with the same Python interpreter as the server (sys.executable), not whatever python happens to be on PATH. args is split with POSIX shlex rules (note: non-ASCII / quoted args must be quoted as in a POSIX shell).

Args

  • skill_name: Name of the skill containing the script.
  • script_path: Relative path to the .py script within the skill directory.
  • args: Arguments to pass to the script (POSIX shlex splitting).

Returns

JSON string with stdout, stderr, and exit_code from the script execution.

Exact text the model receives
Execute a script bundled with a skill.

The script runs via subprocess with the configured timeout
(DPTTOOLS_SANDBOX_TIMEOUT). The container boundary provides the
primary isolation.

Only ``.py`` scripts are supported and they run with the **same**
Python interpreter as the server (``sys.executable``), not whatever
``python`` happens to be on ``PATH``. ``args`` is split with POSIX
``shlex`` rules (note: non-ASCII / quoted args must be quoted as in a
POSIX shell).

Args:
    skill_name: Name of the skill containing the script.
    script_path: Relative path to the ``.py`` script within the skill
        directory.
    args: Arguments to pass to the script (POSIX ``shlex`` splitting).

Returns:
    JSON string with stdout, stderr, and exit_code from the
    script execution.
Parameter Type Required Default
skill_name string yes —
script_path string yes —
args string no ""
JSON schema
{
  "properties": {
    "skill_name": {
      "title": "Skill Name",
      "type": "string"
    },
    "script_path": {
      "title": "Script Path",
      "type": "string"
    },
    "args": {
      "default": "",
      "title": "Args",
      "type": "string"
    }
  },
  "required": [
    "skill_name",
    "script_path"
  ],
  "title": "execute_skill_scriptArguments",
  "type": "object"
}

create_skill

Scaffold a new skill directory with a template SKILL.md.

Creates a new subdirectory under DPTTOOLS_SKILLS_DIR with a SKILL.md file containing the required YAML frontmatter and a placeholder body.

Args

  • skill_name: Name for the new skill (1-64 chars, lowercase alphanumeric + hyphens).
  • description: Description of what the skill does (1-1024 chars).

Returns

Confirmation message with the path to the created skill directory.

Exact text the model receives
Scaffold a new skill directory with a template SKILL.md.

Creates a new subdirectory under DPTTOOLS_SKILLS_DIR with a SKILL.md
file containing the required YAML frontmatter and a placeholder body.

Args:
    skill_name: Name for the new skill (1-64 chars, lowercase
        alphanumeric + hyphens).
    description: Description of what the skill does (1-1024 chars).

Returns:
    Confirmation message with the path to the created skill directory.
Parameter Type Required Default
skill_name string yes —
description string yes —
JSON schema
{
  "properties": {
    "skill_name": {
      "title": "Skill Name",
      "type": "string"
    },
    "description": {
      "title": "Description",
      "type": "string"
    }
  },
  "required": [
    "skill_name",
    "description"
  ],
  "title": "create_skillArguments",
  "type": "object"
}

browser server

browser-tools — see the server page.

Shown with the full profile and every opt-in tool enabled; each tool says when it is registered.

browser_navigate

Profiles: core and full.

Open a URL in the browser, or go "back", "forward" or "reload".

A URL without a scheme gets https://. Only http and https URLs can be opened. Opens a tab first if none is open. Refs from before the navigation stop working; read the page again.

Args

  • url: The URL, or "back", "forward" or "reload".
  • tab_id: Tab to use (default: the active tab).
  • intent: Optional note on why you are doing this (logged only).
Exact text the model receives
Open a URL in the browser, or go "back", "forward" or "reload".

A URL without a scheme gets https://. Only http and https URLs can be
opened. Opens a tab first if none is open. Refs from before the
navigation stop working; read the page again.

Args:
    url: The URL, or "back", "forward" or "reload".
    tab_id: Tab to use (default: the active tab).
    intent: Optional note on why you are doing this (logged only).
Parameter Type Required Default
url string yes —
tab_id integer or null no null
intent string or null no null
JSON schema
{
  "properties": {
    "url": {
      "title": "Url",
      "type": "string"
    },
    "tab_id": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Tab Id"
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intent"
    }
  },
  "required": [
    "url"
  ],
  "title": "browser_navigateArguments",
  "type": "object"
}

browser_screenshot

Profiles: core and full.

Take a screenshot of the visible part of the page.

Prefer browser_read_page or browser_get_page_text to read a page; a screenshot is for checking layout or visual state. x/y arguments of the other tools are in this screenshot's pixels.

Args

  • tab_id: Tab to capture (default: the active tab).
  • intent: Optional note on why you are doing this (logged only).
Exact text the model receives
Take a screenshot of the visible part of the page.

Prefer browser_read_page or browser_get_page_text to read a page; a
screenshot is for checking layout or visual state. x/y arguments of
the other tools are in this screenshot's pixels.

Args:
    tab_id: Tab to capture (default: the active tab).
    intent: Optional note on why you are doing this (logged only).
Parameter Type Required Default
tab_id integer or null no null
intent string or null no null
JSON schema
{
  "properties": {
    "tab_id": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Tab Id"
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intent"
    }
  },
  "title": "browser_screenshotArguments",
  "type": "object"
}

browser_zoom

Profiles: core and full.

Capture one region of the page, enlarged, to read small text or details.

The region is a rectangle in screenshot pixels, from (x0, y0) to (x1, y1).

Args

  • x0: Left edge. y0: Top edge. x1: Right edge. y1: Bottom edge.
  • tab_id: Tab to capture (default: the active tab).
  • intent: Optional note on why you are doing this (logged only).
Exact text the model receives
Capture one region of the page, enlarged, to read small text or details.

The region is a rectangle in screenshot pixels, from (x0, y0) to (x1, y1).

Args:
    x0: Left edge. y0: Top edge. x1: Right edge. y1: Bottom edge.
    tab_id: Tab to capture (default: the active tab).
    intent: Optional note on why you are doing this (logged only).
Parameter Type Required Default
x0 integer yes —
y0 integer yes —
x1 integer yes —
y1 integer yes —
tab_id integer or null no null
intent string or null no null
JSON schema
{
  "properties": {
    "x0": {
      "title": "X0",
      "type": "integer"
    },
    "y0": {
      "title": "Y0",
      "type": "integer"
    },
    "x1": {
      "title": "X1",
      "type": "integer"
    },
    "y1": {
      "title": "Y1",
      "type": "integer"
    },
    "tab_id": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Tab Id"
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intent"
    }
  },
  "required": [
    "x0",
    "y0",
    "x1",
    "y1"
  ],
  "title": "browser_zoomArguments",
  "type": "object"
}

browser_left_click

Profiles: core and full.

Click an element or a point with the left mouse button.

Target an element with ref (from browser_read_page or browser_find; preferred), or with x and y in screenshot pixels. The result names the element that was clicked.

Args

  • ref: Element ref such as "ref_12".
  • x: Horizontal position in screenshot pixels (with y).
  • y: Vertical position in screenshot pixels (with x).
  • modifiers: Keys to hold, such as "ctrl" or "shift+ctrl".
  • tab_id: Tab to act in (default: the active tab).
  • intent: Optional note on why you are doing this (logged only).
Exact text the model receives
Click an element or a point with the left mouse button.

Target an element with ref (from browser_read_page or browser_find;
preferred), or with x and y in screenshot pixels. The result names the
element that was clicked.

Args:
    ref: Element ref such as "ref_12".
    x: Horizontal position in screenshot pixels (with y).
    y: Vertical position in screenshot pixels (with x).
    modifiers: Keys to hold, such as "ctrl" or "shift+ctrl".
    tab_id: Tab to act in (default: the active tab).
    intent: Optional note on why you are doing this (logged only).
Parameter Type Required Default
ref string or null no null
x integer or null no null
y integer or null no null
modifiers string or null no null
tab_id integer or null no null
intent string or null no null
JSON schema
{
  "properties": {
    "ref": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Ref"
    },
    "x": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "X"
    },
    "y": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Y"
    },
    "modifiers": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Modifiers"
    },
    "tab_id": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Tab Id"
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intent"
    }
  },
  "title": "browser_left_clickArguments",
  "type": "object"
}

browser_hover

Profiles: core and full.

Move the mouse over an element or a point, for menus and tooltips.

Target an element with ref (preferred), or with x and y in screenshot pixels.

Args

  • ref: Element ref such as "ref_12".
  • x: Horizontal position in screenshot pixels (with y).
  • y: Vertical position in screenshot pixels (with x).
  • modifiers: Keys to hold while hovering.
  • tab_id: Tab to act in (default: the active tab).
  • intent: Optional note on why you are doing this (logged only).
Exact text the model receives
Move the mouse over an element or a point, for menus and tooltips.

Target an element with ref (preferred), or with x and y in screenshot pixels.

Args:
    ref: Element ref such as "ref_12".
    x: Horizontal position in screenshot pixels (with y).
    y: Vertical position in screenshot pixels (with x).
    modifiers: Keys to hold while hovering.
    tab_id: Tab to act in (default: the active tab).
    intent: Optional note on why you are doing this (logged only).
Parameter Type Required Default
ref string or null no null
x integer or null no null
y integer or null no null
modifiers string or null no null
tab_id integer or null no null
intent string or null no null
JSON schema
{
  "properties": {
    "ref": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Ref"
    },
    "x": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "X"
    },
    "y": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Y"
    },
    "modifiers": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Modifiers"
    },
    "tab_id": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Tab Id"
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intent"
    }
  },
  "title": "browser_hoverArguments",
  "type": "object"
}

browser_scroll

Profiles: core and full.

Scroll the page, or the scrollable area under an element or point.

Without a target, scrolls at the centre of the page. Use browser_scroll_to to bring a known element into view.

Args

  • scroll_direction: up, down, left or right.
  • scroll_amount: 1-10 steps of about 100 pixels (default 3).
  • ref: Element ref to scroll within.
  • x: Horizontal position in screenshot pixels (with y).
  • y: Vertical position in screenshot pixels (with x).
  • tab_id: Tab to act in (default: the active tab).
  • intent: Optional note on why you are doing this (logged only).
Exact text the model receives
Scroll the page, or the scrollable area under an element or point.

Without a target, scrolls at the centre of the page. Use
browser_scroll_to to bring a known element into view.

Args:
    scroll_direction: up, down, left or right.
    scroll_amount: 1-10 steps of about 100 pixels (default 3).
    ref: Element ref to scroll within.
    x: Horizontal position in screenshot pixels (with y).
    y: Vertical position in screenshot pixels (with x).
    tab_id: Tab to act in (default: the active tab).
    intent: Optional note on why you are doing this (logged only).
Parameter Type Required Default
scroll_direction string yes —
scroll_amount integer no 3
ref string or null no null
x integer or null no null
y integer or null no null
tab_id integer or null no null
intent string or null no null
JSON schema
{
  "properties": {
    "scroll_direction": {
      "enum": [
        "up",
        "down",
        "left",
        "right"
      ],
      "title": "Scroll Direction",
      "type": "string"
    },
    "scroll_amount": {
      "default": 3,
      "title": "Scroll Amount",
      "type": "integer"
    },
    "ref": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Ref"
    },
    "x": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "X"
    },
    "y": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Y"
    },
    "tab_id": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Tab Id"
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intent"
    }
  },
  "required": [
    "scroll_direction"
  ],
  "title": "browser_scrollArguments",
  "type": "object"
}

browser_scroll_to

Profiles: core and full.

Scroll an element into view.

Args

  • ref: Element ref such as "ref_12".
  • tab_id: Tab to act in (default: the active tab).
  • intent: Optional note on why you are doing this (logged only).
Exact text the model receives
Scroll an element into view.

Args:
    ref: Element ref such as "ref_12".
    tab_id: Tab to act in (default: the active tab).
    intent: Optional note on why you are doing this (logged only).
Parameter Type Required Default
ref string yes —
tab_id integer or null no null
intent string or null no null
JSON schema
{
  "properties": {
    "ref": {
      "title": "Ref",
      "type": "string"
    },
    "tab_id": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Tab Id"
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intent"
    }
  },
  "required": [
    "ref"
  ],
  "title": "browser_scroll_toArguments",
  "type": "object"
}

browser_type

Profiles: core and full.

Type text into the focused element, as if on a keyboard.

Click a field first to focus it, or use browser_form_input to set a field's value by ref.

Args

  • text: The text to type.
  • tab_id: Tab to act in (default: the active tab).
  • intent: Optional note on why you are doing this (logged only).
Exact text the model receives
Type text into the focused element, as if on a keyboard.

Click a field first to focus it, or use browser_form_input to set a
field's value by ref.

Args:
    text: The text to type.
    tab_id: Tab to act in (default: the active tab).
    intent: Optional note on why you are doing this (logged only).
Parameter Type Required Default
text string yes —
tab_id integer or null no null
intent string or null no null
JSON schema
{
  "properties": {
    "text": {
      "title": "Text",
      "type": "string"
    },
    "tab_id": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Tab Id"
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intent"
    }
  },
  "required": [
    "text"
  ],
  "title": "browser_typeArguments",
  "type": "object"
}

browser_key

Profiles: core and full.

Press a key, a chord, or a space-separated sequence of them.

Examples: "Enter", "ctrl+a", "shift+Tab", "Escape", "ctrl+a Delete". Key names follow xdotool (Return, BackSpace, Page_Down) or the usual names (Enter, Backspace, PageDown, ArrowLeft).

Args

  • text: The key, chord or sequence.
  • repeat: Times to press the whole sequence, 1-100 (default 1).
  • tab_id: Tab to act in (default: the active tab).
  • intent: Optional note on why you are doing this (logged only).
Exact text the model receives
Press a key, a chord, or a space-separated sequence of them.

Examples: "Enter", "ctrl+a", "shift+Tab", "Escape", "ctrl+a Delete".
Key names follow xdotool (Return, BackSpace, Page_Down) or the usual
names (Enter, Backspace, PageDown, ArrowLeft).

Args:
    text: The key, chord or sequence.
    repeat: Times to press the whole sequence, 1-100 (default 1).
    tab_id: Tab to act in (default: the active tab).
    intent: Optional note on why you are doing this (logged only).
Parameter Type Required Default
text string yes —
repeat integer no 1
tab_id integer or null no null
intent string or null no null
JSON schema
{
  "properties": {
    "text": {
      "title": "Text",
      "type": "string"
    },
    "repeat": {
      "default": 1,
      "title": "Repeat",
      "type": "integer"
    },
    "tab_id": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Tab Id"
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intent"
    }
  },
  "required": [
    "text"
  ],
  "title": "browser_keyArguments",
  "type": "object"
}

browser_wait

Profiles: core and full.

Wait a number of seconds (at most 30), for a page to finish loading or animating.

Args

  • duration: Seconds to wait, at most 30.
  • tab_id: Tab to report on (default: the active tab).
  • intent: Optional note on why you are doing this (logged only).
Exact text the model receives
Wait a number of seconds (at most 30), for a page to finish loading or animating.

Args:
    duration: Seconds to wait, at most 30.
    tab_id: Tab to report on (default: the active tab).
    intent: Optional note on why you are doing this (logged only).
Parameter Type Required Default
duration number yes —
tab_id integer or null no null
intent string or null no null
JSON schema
{
  "properties": {
    "duration": {
      "title": "Duration",
      "type": "number"
    },
    "tab_id": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Tab Id"
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intent"
    }
  },
  "required": [
    "duration"
  ],
  "title": "browser_waitArguments",
  "type": "object"
}

browser_read_page

Profiles: core and full.

Read the page as an accessibility tree, with a [ref_N] tag on each element.

Pass a ref to the action tools to act on that element. Refs stay valid until the tab navigates or the element is removed; a stale ref gives an error telling you to read the page again. "interactive" (default) lists links, buttons and form fields; "all" adds headings, images, text and landmarks. Covers the whole page, not just the visible part.

Args

  • filter: "interactive" (default) or "all".
  • depth: Maximum nesting depth, 1-50 (default 15).
  • ref: Read only the subtree under this ref.
  • tab_id: Tab to read (default: the active tab).
  • intent: Optional note on why you are doing this (logged only).
Exact text the model receives
Read the page as an accessibility tree, with a [ref_N] tag on each element.

Pass a ref to the action tools to act on that element. Refs stay valid
until the tab navigates or the element is removed; a stale ref gives an
error telling you to read the page again. "interactive" (default) lists
links, buttons and form fields; "all" adds headings, images, text and
landmarks. Covers the whole page, not just the visible part.

Args:
    filter: "interactive" (default) or "all".
    depth: Maximum nesting depth, 1-50 (default 15).
    ref: Read only the subtree under this ref.
    tab_id: Tab to read (default: the active tab).
    intent: Optional note on why you are doing this (logged only).
Parameter Type Required Default
filter string no "interactive"
depth integer no 15
ref string or null no null
tab_id integer or null no null
intent string or null no null
JSON schema
{
  "properties": {
    "filter": {
      "default": "interactive",
      "enum": [
        "interactive",
        "all"
      ],
      "title": "Filter",
      "type": "string"
    },
    "depth": {
      "default": 15,
      "title": "Depth",
      "type": "integer"
    },
    "ref": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Ref"
    },
    "tab_id": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Tab Id"
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intent"
    }
  },
  "title": "browser_read_pageArguments",
  "type": "object"
}

browser_find

Profiles: core and full.

Find elements on the page matching a short description, with their refs.

Matching is by words (the element's role, label, placeholder and nearby text), not by meaning: "search box", "Sign in button", "email". Returns up to 20 matches. If nothing matches, use browser_read_page(filter="interactive").

Args

  • query: Words describing the element.
  • tab_id: Tab to search (default: the active tab).
  • intent: Optional note on why you are doing this (logged only).
Exact text the model receives
Find elements on the page matching a short description, with their refs.

Matching is by words (the element's role, label, placeholder and
nearby text), not by meaning: "search box", "Sign in button", "email".
Returns up to 20 matches. If nothing matches, use
browser_read_page(filter="interactive").

Args:
    query: Words describing the element.
    tab_id: Tab to search (default: the active tab).
    intent: Optional note on why you are doing this (logged only).
Parameter Type Required Default
query string yes —
tab_id integer or null no null
intent string or null no null
JSON schema
{
  "properties": {
    "query": {
      "title": "Query",
      "type": "string"
    },
    "tab_id": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Tab Id"
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intent"
    }
  },
  "required": [
    "query"
  ],
  "title": "browser_findArguments",
  "type": "object"
}

browser_get_page_text

Profiles: core and full.

Get the readable text of the page, main content first.

The cheapest way to read an article, a statement or search results. Has no refs; use browser_read_page or browser_find to act on elements.

Args

  • tab_id: Tab to read (default: the active tab).
  • intent: Optional note on why you are doing this (logged only).
Exact text the model receives
Get the readable text of the page, main content first.

The cheapest way to read an article, a statement or search results.
Has no refs; use browser_read_page or browser_find to act on elements.

Args:
    tab_id: Tab to read (default: the active tab).
    intent: Optional note on why you are doing this (logged only).
Parameter Type Required Default
tab_id integer or null no null
intent string or null no null
JSON schema
{
  "properties": {
    "tab_id": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Tab Id"
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intent"
    }
  },
  "title": "browser_get_page_textArguments",
  "type": "object"
}

browser_form_input

Profiles: core and full.

Set a form field's value directly: text field, select, checkbox or radio.

Selects take an option's value or visible label; checkboxes and radios take true or false.

Args

  • ref: Element ref of the field.
  • value: The value to set.
  • tab_id: Tab to act in (default: the active tab).
  • intent: Optional note on why you are doing this (logged only).
Exact text the model receives
Set a form field's value directly: text field, select, checkbox or radio.

Selects take an option's value or visible label; checkboxes and radios
take true or false.

Args:
    ref: Element ref of the field.
    value: The value to set.
    tab_id: Tab to act in (default: the active tab).
    intent: Optional note on why you are doing this (logged only).
Parameter Type Required Default
ref string yes —
value string or integer or number or boolean yes —
tab_id integer or null no null
intent string or null no null
JSON schema
{
  "properties": {
    "ref": {
      "title": "Ref",
      "type": "string"
    },
    "value": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "integer"
        },
        {
          "type": "number"
        },
        {
          "type": "boolean"
        }
      ],
      "title": "Value"
    },
    "tab_id": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Tab Id"
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intent"
    }
  },
  "required": [
    "ref",
    "value"
  ],
  "title": "browser_form_inputArguments",
  "type": "object"
}

browser_new_tab

Profiles: core and full.

Open a new tab, optionally at a URL, and make it the active tab.

Args

  • url: URL to open in the new tab.
  • intent: Optional note on why you are doing this (logged only).
Exact text the model receives
Open a new tab, optionally at a URL, and make it the active tab.

Args:
    url: URL to open in the new tab.
    intent: Optional note on why you are doing this (logged only).
Parameter Type Required Default
url string or null no null
intent string or null no null
JSON schema
{
  "properties": {
    "url": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Url"
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intent"
    }
  },
  "title": "browser_new_tabArguments",
  "type": "object"
}

browser_list_tabs

Profiles: core and full.

List the open tabs with their tabId, title and URL.

Args

  • intent: Optional note on why you are doing this (logged only).
Exact text the model receives
List the open tabs with their tabId, title and URL.

Args:
    intent: Optional note on why you are doing this (logged only).
Parameter Type Required Default
intent string or null no null
JSON schema
{
  "properties": {
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intent"
    }
  },
  "title": "browser_list_tabsArguments",
  "type": "object"
}

browser_switch_tab

Profiles: core and full.

Make another tab the active tab.

Args

  • tab_id: The tab to switch to.
  • intent: Optional note on why you are doing this (logged only).
Exact text the model receives
Make another tab the active tab.

Args:
    tab_id: The tab to switch to.
    intent: Optional note on why you are doing this (logged only).
Parameter Type Required Default
tab_id integer yes —
intent string or null no null
JSON schema
{
  "properties": {
    "tab_id": {
      "title": "Tab Id",
      "type": "integer"
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intent"
    }
  },
  "required": [
    "tab_id"
  ],
  "title": "browser_switch_tabArguments",
  "type": "object"
}

browser_close_tab

Profiles: core and full.

Close a tab.

Args

  • tab_id: The tab to close.
  • intent: Optional note on why you are doing this (logged only).
Exact text the model receives
Close a tab.

Args:
    tab_id: The tab to close.
    intent: Optional note on why you are doing this (logged only).
Parameter Type Required Default
tab_id integer yes —
intent string or null no null
JSON schema
{
  "properties": {
    "tab_id": {
      "title": "Tab Id",
      "type": "integer"
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intent"
    }
  },
  "required": [
    "tab_id"
  ],
  "title": "browser_close_tabArguments",
  "type": "object"
}

browser_right_click

Profile: full only.

Right-click an element or a point (opens a context menu).

Target an element with ref (preferred), or with x and y in screenshot pixels.

Args

  • ref: Element ref such as "ref_12".
  • x: Horizontal position in screenshot pixels (with y).
  • y: Vertical position in screenshot pixels (with x).
  • modifiers: Keys to hold, such as "shift".
  • tab_id: Tab to act in (default: the active tab).
  • intent: Optional note on why you are doing this (logged only).
Exact text the model receives
Right-click an element or a point (opens a context menu).

Target an element with ref (preferred), or with x and y in screenshot pixels.

Args:
    ref: Element ref such as "ref_12".
    x: Horizontal position in screenshot pixels (with y).
    y: Vertical position in screenshot pixels (with x).
    modifiers: Keys to hold, such as "shift".
    tab_id: Tab to act in (default: the active tab).
    intent: Optional note on why you are doing this (logged only).
Parameter Type Required Default
ref string or null no null
x integer or null no null
y integer or null no null
modifiers string or null no null
tab_id integer or null no null
intent string or null no null
JSON schema
{
  "properties": {
    "ref": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Ref"
    },
    "x": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "X"
    },
    "y": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Y"
    },
    "modifiers": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Modifiers"
    },
    "tab_id": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Tab Id"
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intent"
    }
  },
  "title": "browser_right_clickArguments",
  "type": "object"
}

browser_middle_click

Profile: full only.

Middle-click an element or a point (often opens a link in a new tab).

Target an element with ref (preferred), or with x and y in screenshot pixels.

Args

  • ref: Element ref such as "ref_12".
  • x: Horizontal position in screenshot pixels (with y).
  • y: Vertical position in screenshot pixels (with x).
  • modifiers: Keys to hold.
  • tab_id: Tab to act in (default: the active tab).
  • intent: Optional note on why you are doing this (logged only).
Exact text the model receives
Middle-click an element or a point (often opens a link in a new tab).

Target an element with ref (preferred), or with x and y in screenshot pixels.

Args:
    ref: Element ref such as "ref_12".
    x: Horizontal position in screenshot pixels (with y).
    y: Vertical position in screenshot pixels (with x).
    modifiers: Keys to hold.
    tab_id: Tab to act in (default: the active tab).
    intent: Optional note on why you are doing this (logged only).
Parameter Type Required Default
ref string or null no null
x integer or null no null
y integer or null no null
modifiers string or null no null
tab_id integer or null no null
intent string or null no null
JSON schema
{
  "properties": {
    "ref": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Ref"
    },
    "x": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "X"
    },
    "y": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Y"
    },
    "modifiers": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Modifiers"
    },
    "tab_id": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Tab Id"
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intent"
    }
  },
  "title": "browser_middle_clickArguments",
  "type": "object"
}

browser_double_click

Profile: full only.

Double-click an element or a point (for example to select a word).

Target an element with ref (preferred), or with x and y in screenshot pixels.

Args

  • ref: Element ref such as "ref_12".
  • x: Horizontal position in screenshot pixels (with y).
  • y: Vertical position in screenshot pixels (with x).
  • modifiers: Keys to hold.
  • tab_id: Tab to act in (default: the active tab).
  • intent: Optional note on why you are doing this (logged only).
Exact text the model receives
Double-click an element or a point (for example to select a word).

Target an element with ref (preferred), or with x and y in screenshot pixels.

Args:
    ref: Element ref such as "ref_12".
    x: Horizontal position in screenshot pixels (with y).
    y: Vertical position in screenshot pixels (with x).
    modifiers: Keys to hold.
    tab_id: Tab to act in (default: the active tab).
    intent: Optional note on why you are doing this (logged only).
Parameter Type Required Default
ref string or null no null
x integer or null no null
y integer or null no null
modifiers string or null no null
tab_id integer or null no null
intent string or null no null
JSON schema
{
  "properties": {
    "ref": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Ref"
    },
    "x": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "X"
    },
    "y": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Y"
    },
    "modifiers": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Modifiers"
    },
    "tab_id": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Tab Id"
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intent"
    }
  },
  "title": "browser_double_clickArguments",
  "type": "object"
}

browser_triple_click

Profile: full only.

Triple-click an element or a point (for example to select a paragraph).

Target an element with ref (preferred), or with x and y in screenshot pixels.

Args

  • ref: Element ref such as "ref_12".
  • x: Horizontal position in screenshot pixels (with y).
  • y: Vertical position in screenshot pixels (with x).
  • modifiers: Keys to hold.
  • tab_id: Tab to act in (default: the active tab).
  • intent: Optional note on why you are doing this (logged only).
Exact text the model receives
Triple-click an element or a point (for example to select a paragraph).

Target an element with ref (preferred), or with x and y in screenshot pixels.

Args:
    ref: Element ref such as "ref_12".
    x: Horizontal position in screenshot pixels (with y).
    y: Vertical position in screenshot pixels (with x).
    modifiers: Keys to hold.
    tab_id: Tab to act in (default: the active tab).
    intent: Optional note on why you are doing this (logged only).
Parameter Type Required Default
ref string or null no null
x integer or null no null
y integer or null no null
modifiers string or null no null
tab_id integer or null no null
intent string or null no null
JSON schema
{
  "properties": {
    "ref": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Ref"
    },
    "x": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "X"
    },
    "y": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Y"
    },
    "modifiers": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Modifiers"
    },
    "tab_id": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Tab Id"
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intent"
    }
  },
  "title": "browser_triple_clickArguments",
  "type": "object"
}

browser_left_click_drag

Profile: full only.

Drag with the left mouse button from one point to an element or point.

Starts at (from_x, from_y) in screenshot pixels; ends at ref, or at x and y.

Args

  • from_x: Start, horizontal, in screenshot pixels.
  • from_y: Start, vertical, in screenshot pixels.
  • ref: Element ref to drop on.
  • x: End, horizontal, in screenshot pixels (with y).
  • y: End, vertical, in screenshot pixels (with x).
  • tab_id: Tab to act in (default: the active tab).
  • intent: Optional note on why you are doing this (logged only).
Exact text the model receives
Drag with the left mouse button from one point to an element or point.

Starts at (from_x, from_y) in screenshot pixels; ends at ref, or at x and y.

Args:
    from_x: Start, horizontal, in screenshot pixels.
    from_y: Start, vertical, in screenshot pixels.
    ref: Element ref to drop on.
    x: End, horizontal, in screenshot pixels (with y).
    y: End, vertical, in screenshot pixels (with x).
    tab_id: Tab to act in (default: the active tab).
    intent: Optional note on why you are doing this (logged only).
Parameter Type Required Default
from_x integer yes —
from_y integer yes —
ref string or null no null
x integer or null no null
y integer or null no null
tab_id integer or null no null
intent string or null no null
JSON schema
{
  "properties": {
    "from_x": {
      "title": "From X",
      "type": "integer"
    },
    "from_y": {
      "title": "From Y",
      "type": "integer"
    },
    "ref": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Ref"
    },
    "x": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "X"
    },
    "y": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Y"
    },
    "tab_id": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Tab Id"
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intent"
    }
  },
  "required": [
    "from_x",
    "from_y"
  ],
  "title": "browser_left_click_dragArguments",
  "type": "object"
}

browser_left_mouse_down

Profile: full only.

Press and hold the left mouse button where the mouse is.

Args

  • tab_id: Tab to act in (default: the active tab).
  • intent: Optional note on why you are doing this (logged only).
Exact text the model receives
Press and hold the left mouse button where the mouse is.

Args:
    tab_id: Tab to act in (default: the active tab).
    intent: Optional note on why you are doing this (logged only).
Parameter Type Required Default
tab_id integer or null no null
intent string or null no null
JSON schema
{
  "properties": {
    "tab_id": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Tab Id"
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intent"
    }
  },
  "title": "browser_left_mouse_downArguments",
  "type": "object"
}

browser_left_mouse_up

Profile: full only.

Release the left mouse button where the mouse is.

Args

  • tab_id: Tab to act in (default: the active tab).
  • intent: Optional note on why you are doing this (logged only).
Exact text the model receives
Release the left mouse button where the mouse is.

Args:
    tab_id: Tab to act in (default: the active tab).
    intent: Optional note on why you are doing this (logged only).
Parameter Type Required Default
tab_id integer or null no null
intent string or null no null
JSON schema
{
  "properties": {
    "tab_id": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Tab Id"
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intent"
    }
  },
  "title": "browser_left_mouse_upArguments",
  "type": "object"
}

browser_mouse_move

Profile: full only.

Move the mouse to an element or a point without clicking.

Use with browser_left_mouse_down and browser_left_mouse_up for drags that need intermediate steps.

Args

  • ref: Element ref such as "ref_12".
  • x: Horizontal position in screenshot pixels (with y).
  • y: Vertical position in screenshot pixels (with x).
  • tab_id: Tab to act in (default: the active tab).
  • intent: Optional note on why you are doing this (logged only).
Exact text the model receives
Move the mouse to an element or a point without clicking.

Use with browser_left_mouse_down and browser_left_mouse_up for drags
that need intermediate steps.

Args:
    ref: Element ref such as "ref_12".
    x: Horizontal position in screenshot pixels (with y).
    y: Vertical position in screenshot pixels (with x).
    tab_id: Tab to act in (default: the active tab).
    intent: Optional note on why you are doing this (logged only).
Parameter Type Required Default
ref string or null no null
x integer or null no null
y integer or null no null
tab_id integer or null no null
intent string or null no null
JSON schema
{
  "properties": {
    "ref": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Ref"
    },
    "x": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "X"
    },
    "y": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Y"
    },
    "tab_id": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Tab Id"
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intent"
    }
  },
  "title": "browser_mouse_moveArguments",
  "type": "object"
}

browser_hold_key

Profile: full only.

Hold a key or chord down for a number of seconds (at most 30).

Args

  • text: The key or chord, such as "shift" or "ArrowRight".
  • duration: Seconds to hold, at most 30.
  • tab_id: Tab to act in (default: the active tab).
  • intent: Optional note on why you are doing this (logged only).
Exact text the model receives
Hold a key or chord down for a number of seconds (at most 30).

Args:
    text: The key or chord, such as "shift" or "ArrowRight".
    duration: Seconds to hold, at most 30.
    tab_id: Tab to act in (default: the active tab).
    intent: Optional note on why you are doing this (logged only).
Parameter Type Required Default
text string yes —
duration number yes —
tab_id integer or null no null
intent string or null no null
JSON schema
{
  "properties": {
    "text": {
      "title": "Text",
      "type": "string"
    },
    "duration": {
      "title": "Duration",
      "type": "number"
    },
    "tab_id": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Tab Id"
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intent"
    }
  },
  "required": [
    "text",
    "duration"
  ],
  "title": "browser_hold_keyArguments",
  "type": "object"
}

browser_javascript_exec

Opt-in: add it to DPTTOOLS_BROWSER_ENABLE.

Run a JavaScript expression in the page and return its value (opt-in).

The value is returned as text (JSON for objects); a promise is awaited. Use only when the other tools cannot do the job.

Args

  • expression: The JavaScript expression, or a function body like "() => document.title".
  • tab_id: Tab to run in (default: the active tab).
  • intent: Optional note on why you are doing this (logged only).
Exact text the model receives
Run a JavaScript expression in the page and return its value (opt-in).

The value is returned as text (JSON for objects); a promise is awaited.
Use only when the other tools cannot do the job.

Args:
    expression: The JavaScript expression, or a function body like "() => document.title".
    tab_id: Tab to run in (default: the active tab).
    intent: Optional note on why you are doing this (logged only).
Parameter Type Required Default
expression string yes —
tab_id integer or null no null
intent string or null no null
JSON schema
{
  "properties": {
    "expression": {
      "title": "Expression",
      "type": "string"
    },
    "tab_id": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Tab Id"
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intent"
    }
  },
  "required": [
    "expression"
  ],
  "title": "browser_javascript_execArguments",
  "type": "object"
}

browser_file_upload

Opt-in: add it to DPTTOOLS_BROWSER_ENABLE.

Attach files to a file input (opt-in).

Files must be in the upload directory the operator configured; give paths relative to it (or absolute paths inside it).

Args

  • ref: Element ref of the file input.
  • paths: Files to attach.
  • tab_id: Tab to act in (default: the active tab).
  • intent: Optional note on why you are doing this (logged only).
Exact text the model receives
Attach files to a file input (opt-in).

Files must be in the upload directory the operator configured; give
paths relative to it (or absolute paths inside it).

Args:
    ref: Element ref of the file input.
    paths: Files to attach.
    tab_id: Tab to act in (default: the active tab).
    intent: Optional note on why you are doing this (logged only).
Parameter Type Required Default
ref string yes —
paths array of string yes —
tab_id integer or null no null
intent string or null no null
JSON schema
{
  "properties": {
    "ref": {
      "title": "Ref",
      "type": "string"
    },
    "paths": {
      "items": {
        "type": "string"
      },
      "title": "Paths",
      "type": "array"
    },
    "tab_id": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Tab Id"
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intent"
    }
  },
  "required": [
    "ref",
    "paths"
  ],
  "title": "browser_file_uploadArguments",
  "type": "object"
}

browser_read_console

Opt-in: add it to DPTTOOLS_BROWSER_ENABLE.

Read the page's console messages since the last read (opt-in).

Args

  • tab_id: Tab to read (default: the active tab).
  • intent: Optional note on why you are doing this (logged only).
Exact text the model receives
Read the page's console messages since the last read (opt-in).

Args:
    tab_id: Tab to read (default: the active tab).
    intent: Optional note on why you are doing this (logged only).
Parameter Type Required Default
tab_id integer or null no null
intent string or null no null
JSON schema
{
  "properties": {
    "tab_id": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Tab Id"
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intent"
    }
  },
  "title": "browser_read_consoleArguments",
  "type": "object"
}

browser_read_network

Opt-in: add it to DPTTOOLS_BROWSER_ENABLE.

List the page's network requests since the last read (opt-in).

Args

  • tab_id: Tab to read (default: the active tab).
  • intent: Optional note on why you are doing this (logged only).
Exact text the model receives
List the page's network requests since the last read (opt-in).

Args:
    tab_id: Tab to read (default: the active tab).
    intent: Optional note on why you are doing this (logged only).
Parameter Type Required Default
tab_id integer or null no null
intent string or null no null
JSON schema
{
  "properties": {
    "tab_id": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Tab Id"
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intent"
    }
  },
  "title": "browser_read_networkArguments",
  "type": "object"
}

browser_run_script

Opt-in: add it to DPTTOOLS_BROWSER_ENABLE.

Run a Python script against the browser with Playwright (opt-in).

For multi-step work the other tools make slow, such as extracting a whole table or looping over pages. The script runs in a separate process, with these names ready to use (Playwright's async API, so use await):

  • page: the tab (await page.title(), await page.locator("table").inner_text())
  • context: the browser context
  • await screenshot(): capture the tab; the image is returned with the result
  • await read_page(): the accessibility tree with refs other tools accept

print() output and the value of a final expression are returned. Variables persist between calls in the same session. A script that runs longer than DPTTOOLS_BROWSER_SCRIPT_TIMEOUT_S (60 s) is stopped and the variables are lost. The script is not network-contained: connections it opens itself are not checked. The browser's own traffic is (in cdp mode, only in the tabs this server manages).

Args

  • code: Python code; top-level await is allowed.
  • tab_id: Tab bound to page (default: the active tab).
  • intent: Optional note on why you are doing this (logged only).
Exact text the model receives
Run a Python script against the browser with Playwright (opt-in).

For multi-step work the other tools make slow, such as extracting a
whole table or looping over pages. The script runs in a separate
process, with these names ready to use (Playwright's async API, so
use await):

- ``page``: the tab (``await page.title()``, ``await page.locator("table").inner_text()``)
- ``context``: the browser context
- ``await screenshot()``: capture the tab; the image is returned with the result
- ``await read_page()``: the accessibility tree with refs other tools accept

``print()`` output and the value of a final expression are returned.
Variables persist between calls in the same session. A script that
runs longer than ``DPTTOOLS_BROWSER_SCRIPT_TIMEOUT_S`` (60 s) is
stopped and the variables are lost. The script is not network-contained:
connections it opens itself are not checked. The browser's own traffic
is (in cdp mode, only in the tabs this server manages).

Args:
    code: Python code; top-level await is allowed.
    tab_id: Tab bound to ``page`` (default: the active tab).
    intent: Optional note on why you are doing this (logged only).
Parameter Type Required Default
code string yes —
tab_id integer or null no null
intent string or null no null
JSON schema
{
  "properties": {
    "code": {
      "title": "Code",
      "type": "string"
    },
    "tab_id": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Tab Id"
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intent"
    }
  },
  "required": [
    "code"
  ],
  "title": "browser_run_scriptArguments",
  "type": "object"
}

fetch_webpage_rendered

Registered in both profiles.

Fetch a web page in a real browser, running its JavaScript, and return its content.

Use this when fetch_webpage returns little or no text, or says likely_js_rendered: true: single-page apps and client-rendered pages only have content after their scripts run. Slower than fetch_webpage (seconds, not milliseconds), so try that first.

Returns the same JSON object as fetch_webpage (url, final_url, status, title, format, extractor, text, truncated, total_chars, offset, next_offset, has_more, plus "rendered": true). Each call uses a fresh, credential-free browser context that is closed afterwards; the browser's network policy applies (private addresses refused).

Args

  • url: The page to fetch (http or https).
  • max_length: Maximum characters of text to return (default 10000).
  • offset: Character offset to start from, for long pages (default 0).
  • format: "text" (default), "markdown" or "html".
  • include_assets: Add the page's image and link references (default False).
Exact text the model receives
Fetch a web page in a real browser, running its JavaScript, and return its content.

Use this when ``fetch_webpage`` returns little or no text, or says
``likely_js_rendered: true``: single-page apps and client-rendered
pages only have content after their scripts run. Slower than
``fetch_webpage`` (seconds, not milliseconds), so try that first.

Returns the same JSON object as ``fetch_webpage`` (``url``,
``final_url``, ``status``, ``title``, ``format``, ``extractor``,
``text``, ``truncated``, ``total_chars``, ``offset``, ``next_offset``,
``has_more``, plus ``"rendered": true``). Each call uses a fresh,
credential-free browser context that is closed afterwards; the
browser's network policy applies (private addresses refused).

Args:
    url: The page to fetch (http or https).
    max_length: Maximum characters of text to return (default 10000).
    offset: Character offset to start from, for long pages (default 0).
    format: "text" (default), "markdown" or "html".
    include_assets: Add the page's image and link references (default False).
Parameter Type Required Default
url string yes —
max_length integer no 10000
offset integer no 0
format string no "text"
include_assets boolean no false
JSON schema
{
  "properties": {
    "url": {
      "title": "Url",
      "type": "string"
    },
    "max_length": {
      "default": 10000,
      "title": "Max Length",
      "type": "integer"
    },
    "offset": {
      "default": 0,
      "title": "Offset",
      "type": "integer"
    },
    "format": {
      "default": "text",
      "enum": [
        "text",
        "markdown",
        "html"
      ],
      "title": "Format",
      "type": "string"
    },
    "include_assets": {
      "default": false,
      "title": "Include Assets",
      "type": "boolean"
    }
  },
  "required": [
    "url"
  ],
  "title": "fetch_webpage_renderedArguments",
  "type": "object"
}

computer server

computer-tools — see the server page.

Composed only when DPTTOOLS_ENABLE_COMPUTER=true.

computer_screenshot

Take a screenshot of the desktop.

x/y arguments of the other computer tools are in this screenshot's pixels. Take one before acting, and again to check a result.

Args

  • intent: Optional note on why you are doing this (logged only).
Exact text the model receives
Take a screenshot of the desktop.

x/y arguments of the other computer tools are in this screenshot's
pixels. Take one before acting, and again to check a result.

Args:
    intent: Optional note on why you are doing this (logged only).
Parameter Type Required Default
intent string or null no null
JSON schema
{
  "properties": {
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intent"
    }
  },
  "title": "computer_screenshotArguments",
  "type": "object"
}

computer_zoom

Capture one region of the screen, enlarged, to read small text.

Args

  • x0: Left edge of the region, in screenshot pixels.
  • y0: Top edge of the region, in screenshot pixels.
  • x1: Right edge of the region, in screenshot pixels.
  • y1: Bottom edge of the region, in screenshot pixels.
  • intent: Optional note on why you are doing this (logged only).
Exact text the model receives
Capture one region of the screen, enlarged, to read small text.

Args:
    x0: Left edge of the region, in screenshot pixels.
    y0: Top edge of the region, in screenshot pixels.
    x1: Right edge of the region, in screenshot pixels.
    y1: Bottom edge of the region, in screenshot pixels.
    intent: Optional note on why you are doing this (logged only).
Parameter Type Required Default
x0 integer yes —
y0 integer yes —
x1 integer yes —
y1 integer yes —
intent string or null no null
JSON schema
{
  "properties": {
    "x0": {
      "title": "X0",
      "type": "integer"
    },
    "y0": {
      "title": "Y0",
      "type": "integer"
    },
    "x1": {
      "title": "X1",
      "type": "integer"
    },
    "y1": {
      "title": "Y1",
      "type": "integer"
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intent"
    }
  },
  "required": [
    "x0",
    "y0",
    "x1",
    "y1"
  ],
  "title": "computer_zoomArguments",
  "type": "object"
}

computer_left_click

Click the left mouse button at a point.

Args

  • x: Horizontal position in screenshot pixels.
  • y: Vertical position in screenshot pixels.
  • modifiers: Keys to hold while clicking, such as "ctrl" or "shift+ctrl": key names joined by "+".
  • intent: Optional note on why you are doing this (logged only).
Exact text the model receives
Click the left mouse button at a point.

Args:
    x: Horizontal position in screenshot pixels.
    y: Vertical position in screenshot pixels.
    modifiers: Keys to hold while clicking, such as "ctrl" or "shift+ctrl": key names
        joined by "+".
    intent: Optional note on why you are doing this (logged only).
Parameter Type Required Default
x integer yes —
y integer yes —
modifiers string or null no null
intent string or null no null
JSON schema
{
  "properties": {
    "x": {
      "title": "X",
      "type": "integer"
    },
    "y": {
      "title": "Y",
      "type": "integer"
    },
    "modifiers": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Modifiers"
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intent"
    }
  },
  "required": [
    "x",
    "y"
  ],
  "title": "computer_left_clickArguments",
  "type": "object"
}

computer_right_click

Click the right mouse button at a point (opens a context menu).

Args

  • x: Horizontal position in screenshot pixels.
  • y: Vertical position in screenshot pixels.
  • modifiers: Keys to hold while clicking, such as "ctrl" or "shift+ctrl": key names joined by "+".
  • intent: Optional note on why you are doing this (logged only).
Exact text the model receives
Click the right mouse button at a point (opens a context menu).

Args:
    x: Horizontal position in screenshot pixels.
    y: Vertical position in screenshot pixels.
    modifiers: Keys to hold while clicking, such as "ctrl" or "shift+ctrl": key names
        joined by "+".
    intent: Optional note on why you are doing this (logged only).
Parameter Type Required Default
x integer yes —
y integer yes —
modifiers string or null no null
intent string or null no null
JSON schema
{
  "properties": {
    "x": {
      "title": "X",
      "type": "integer"
    },
    "y": {
      "title": "Y",
      "type": "integer"
    },
    "modifiers": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Modifiers"
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intent"
    }
  },
  "required": [
    "x",
    "y"
  ],
  "title": "computer_right_clickArguments",
  "type": "object"
}

computer_middle_click

Click the middle mouse button at a point.

Args

  • x: Horizontal position in screenshot pixels.
  • y: Vertical position in screenshot pixels.
  • modifiers: Keys to hold while clicking, such as "ctrl" or "shift+ctrl": key names joined by "+".
  • intent: Optional note on why you are doing this (logged only).
Exact text the model receives
Click the middle mouse button at a point.

Args:
    x: Horizontal position in screenshot pixels.
    y: Vertical position in screenshot pixels.
    modifiers: Keys to hold while clicking, such as "ctrl" or "shift+ctrl": key names
        joined by "+".
    intent: Optional note on why you are doing this (logged only).
Parameter Type Required Default
x integer yes —
y integer yes —
modifiers string or null no null
intent string or null no null
JSON schema
{
  "properties": {
    "x": {
      "title": "X",
      "type": "integer"
    },
    "y": {
      "title": "Y",
      "type": "integer"
    },
    "modifiers": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Modifiers"
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intent"
    }
  },
  "required": [
    "x",
    "y"
  ],
  "title": "computer_middle_clickArguments",
  "type": "object"
}

computer_double_click

Double-click at a point (for example to open a file or select a word).

Args

  • x: Horizontal position in screenshot pixels.
  • y: Vertical position in screenshot pixels.
  • modifiers: Keys to hold while clicking, such as "ctrl" or "shift+ctrl": key names joined by "+".
  • intent: Optional note on why you are doing this (logged only).
Exact text the model receives
Double-click at a point (for example to open a file or select a word).

Args:
    x: Horizontal position in screenshot pixels.
    y: Vertical position in screenshot pixels.
    modifiers: Keys to hold while clicking, such as "ctrl" or "shift+ctrl": key names
        joined by "+".
    intent: Optional note on why you are doing this (logged only).
Parameter Type Required Default
x integer yes —
y integer yes —
modifiers string or null no null
intent string or null no null
JSON schema
{
  "properties": {
    "x": {
      "title": "X",
      "type": "integer"
    },
    "y": {
      "title": "Y",
      "type": "integer"
    },
    "modifiers": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Modifiers"
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intent"
    }
  },
  "required": [
    "x",
    "y"
  ],
  "title": "computer_double_clickArguments",
  "type": "object"
}

computer_triple_click

Triple-click at a point (for example to select a line).

Args

  • x: Horizontal position in screenshot pixels.
  • y: Vertical position in screenshot pixels.
  • modifiers: Keys to hold while clicking, such as "ctrl" or "shift+ctrl": key names joined by "+".
  • intent: Optional note on why you are doing this (logged only).
Exact text the model receives
Triple-click at a point (for example to select a line).

Args:
    x: Horizontal position in screenshot pixels.
    y: Vertical position in screenshot pixels.
    modifiers: Keys to hold while clicking, such as "ctrl" or "shift+ctrl": key names
        joined by "+".
    intent: Optional note on why you are doing this (logged only).
Parameter Type Required Default
x integer yes —
y integer yes —
modifiers string or null no null
intent string or null no null
JSON schema
{
  "properties": {
    "x": {
      "title": "X",
      "type": "integer"
    },
    "y": {
      "title": "Y",
      "type": "integer"
    },
    "modifiers": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Modifiers"
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intent"
    }
  },
  "required": [
    "x",
    "y"
  ],
  "title": "computer_triple_clickArguments",
  "type": "object"
}

computer_left_click_drag

Drag with the left mouse button from one point to another.

Args

  • from_x: Start, horizontal, in screenshot pixels.
  • from_y: Start, vertical, in screenshot pixels.
  • x: End, horizontal, in screenshot pixels.
  • y: End, vertical, in screenshot pixels.
  • intent: Optional note on why you are doing this (logged only).
Exact text the model receives
Drag with the left mouse button from one point to another.

Args:
    from_x: Start, horizontal, in screenshot pixels.
    from_y: Start, vertical, in screenshot pixels.
    x: End, horizontal, in screenshot pixels.
    y: End, vertical, in screenshot pixels.
    intent: Optional note on why you are doing this (logged only).
Parameter Type Required Default
from_x integer yes —
from_y integer yes —
x integer yes —
y integer yes —
intent string or null no null
JSON schema
{
  "properties": {
    "from_x": {
      "title": "From X",
      "type": "integer"
    },
    "from_y": {
      "title": "From Y",
      "type": "integer"
    },
    "x": {
      "title": "X",
      "type": "integer"
    },
    "y": {
      "title": "Y",
      "type": "integer"
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intent"
    }
  },
  "required": [
    "from_x",
    "from_y",
    "x",
    "y"
  ],
  "title": "computer_left_click_dragArguments",
  "type": "object"
}

computer_mouse_move

Move the mouse to a point without clicking.

Args

  • x: Horizontal position in screenshot pixels.
  • y: Vertical position in screenshot pixels.
  • intent: Optional note on why you are doing this (logged only).
Exact text the model receives
Move the mouse to a point without clicking.

Args:
    x: Horizontal position in screenshot pixels.
    y: Vertical position in screenshot pixels.
    intent: Optional note on why you are doing this (logged only).
Parameter Type Required Default
x integer yes —
y integer yes —
intent string or null no null
JSON schema
{
  "properties": {
    "x": {
      "title": "X",
      "type": "integer"
    },
    "y": {
      "title": "Y",
      "type": "integer"
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intent"
    }
  },
  "required": [
    "x",
    "y"
  ],
  "title": "computer_mouse_moveArguments",
  "type": "object"
}

computer_left_mouse_down

Press and hold the left mouse button where the mouse is.

Args

  • intent: Optional note on why you are doing this (logged only).
Exact text the model receives
Press and hold the left mouse button where the mouse is.

Args:
    intent: Optional note on why you are doing this (logged only).
Parameter Type Required Default
intent string or null no null
JSON schema
{
  "properties": {
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intent"
    }
  },
  "title": "computer_left_mouse_downArguments",
  "type": "object"
}

computer_left_mouse_up

Release the left mouse button where the mouse is.

Args

  • intent: Optional note on why you are doing this (logged only).
Exact text the model receives
Release the left mouse button where the mouse is.

Args:
    intent: Optional note on why you are doing this (logged only).
Parameter Type Required Default
intent string or null no null
JSON schema
{
  "properties": {
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intent"
    }
  },
  "title": "computer_left_mouse_upArguments",
  "type": "object"
}

computer_cursor_position

Report where the mouse cursor is, in screenshot pixels.

Args

  • intent: Optional note on why you are doing this (logged only).
Exact text the model receives
Report where the mouse cursor is, in screenshot pixels.

Args:
    intent: Optional note on why you are doing this (logged only).
Parameter Type Required Default
intent string or null no null
JSON schema
{
  "properties": {
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intent"
    }
  },
  "title": "computer_cursor_positionArguments",
  "type": "object"
}

computer_scroll

Scroll at a point (default: the centre of the screen).

Args

  • scroll_direction: up, down, left or right.
  • scroll_amount: 1-10 wheel steps (default 3).
  • x: Horizontal position in screenshot pixels (with y).
  • y: Vertical position in screenshot pixels (with x).
  • intent: Optional note on why you are doing this (logged only).
Exact text the model receives
Scroll at a point (default: the centre of the screen).

Args:
    scroll_direction: up, down, left or right.
    scroll_amount: 1-10 wheel steps (default 3).
    x: Horizontal position in screenshot pixels (with y).
    y: Vertical position in screenshot pixels (with x).
    intent: Optional note on why you are doing this (logged only).
Parameter Type Required Default
scroll_direction string yes —
scroll_amount integer no 3
x integer or null no null
y integer or null no null
intent string or null no null
JSON schema
{
  "properties": {
    "scroll_direction": {
      "enum": [
        "up",
        "down",
        "left",
        "right"
      ],
      "title": "Scroll Direction",
      "type": "string"
    },
    "scroll_amount": {
      "default": 3,
      "title": "Scroll Amount",
      "type": "integer"
    },
    "x": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "X"
    },
    "y": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Y"
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intent"
    }
  },
  "required": [
    "scroll_direction"
  ],
  "title": "computer_scrollArguments",
  "type": "object"
}

computer_type

Type text, as if on the keyboard, into whatever has focus.

Text only: tabs and newlines are typed, other control characters are refused. Press keys such as Delete, Escape or BackSpace with computer_key.

Args

  • text: The text to type.
  • intent: Optional note on why you are doing this (logged only).
Exact text the model receives
Type text, as if on the keyboard, into whatever has focus.

Text only: tabs and newlines are typed, other control characters are
refused. Press keys such as Delete, Escape or BackSpace with
computer_key.

Args:
    text: The text to type.
    intent: Optional note on why you are doing this (logged only).
Parameter Type Required Default
text string yes —
intent string or null no null
JSON schema
{
  "properties": {
    "text": {
      "title": "Text",
      "type": "string"
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intent"
    }
  },
  "required": [
    "text"
  ],
  "title": "computer_typeArguments",
  "type": "object"
}

computer_key

Press a key, a chord, or a space-separated sequence of them.

Each key is a single character or an xdotool key name made of letters, digits and "_", spelled as xdotool spells it: "Return", "Tab", "Page_Down", "super", "XF86AudioMute"; never a key code such as "119". Join keys into a chord with "+" ("ctrl+a", "alt+Tab") and separate a sequence with spaces ("ctrl+a BackSpace"). The plus key itself is "+" ("ctrl++" zooms in). Anything else is refused.

Args

  • text: The key, chord or sequence.
  • repeat: Times to press the whole sequence, 1-100 (default 1).
  • intent: Optional note on why you are doing this (logged only).
Exact text the model receives
Press a key, a chord, or a space-separated sequence of them.

Each key is a single character or an xdotool key name made of letters,
digits and "_", spelled as xdotool spells it: "Return", "Tab",
"Page_Down", "super", "XF86AudioMute"; never a key code such as "119".
Join keys into a chord with "+"
("ctrl+a", "alt+Tab") and separate a sequence with spaces
("ctrl+a BackSpace"). The plus key itself is "+" ("ctrl++" zooms in).
Anything else is refused.

Args:
    text: The key, chord or sequence.
    repeat: Times to press the whole sequence, 1-100 (default 1).
    intent: Optional note on why you are doing this (logged only).
Parameter Type Required Default
text string yes —
repeat integer no 1
intent string or null no null
JSON schema
{
  "properties": {
    "text": {
      "title": "Text",
      "type": "string"
    },
    "repeat": {
      "default": 1,
      "title": "Repeat",
      "type": "integer"
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intent"
    }
  },
  "required": [
    "text"
  ],
  "title": "computer_keyArguments",
  "type": "object"
}

computer_hold_key

Hold a key or chord down for a number of seconds (at most 30).

Args

  • text: The key or chord, such as "shift" or "Right": single characters or key names joined by "+".
  • duration: Seconds to hold, at most 30.
  • intent: Optional note on why you are doing this (logged only).
Exact text the model receives
Hold a key or chord down for a number of seconds (at most 30).

Args:
    text: The key or chord, such as "shift" or "Right": single characters
        or key names joined by "+".
    duration: Seconds to hold, at most 30.
    intent: Optional note on why you are doing this (logged only).
Parameter Type Required Default
text string yes —
duration number yes —
intent string or null no null
JSON schema
{
  "properties": {
    "text": {
      "title": "Text",
      "type": "string"
    },
    "duration": {
      "title": "Duration",
      "type": "number"
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intent"
    }
  },
  "required": [
    "text",
    "duration"
  ],
  "title": "computer_hold_keyArguments",
  "type": "object"
}

computer_wait

Wait a number of seconds (at most 30), for an application to respond.

Args

  • duration: Seconds to wait, at most 30.
  • intent: Optional note on why you are doing this (logged only).
Exact text the model receives
Wait a number of seconds (at most 30), for an application to respond.

Args:
    duration: Seconds to wait, at most 30.
    intent: Optional note on why you are doing this (logged only).
Parameter Type Required Default
duration number yes —
intent string or null no null
JSON schema
{
  "properties": {
    "duration": {
      "title": "Duration",
      "type": "number"
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intent"
    }
  },
  "required": [
    "duration"
  ],
  "title": "computer_waitArguments",
  "type": "object"
}