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.
web_search¶
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.
textholds at mostmax_lengthcharacters starting atoffset. Whenhas_moreis true, call again withoffset=next_offsetto read the next part.likely_js_renderedis true when the page looks like it is built by JavaScript (little text, many scripts, or an empty app root). Retry withfetch_webpage_renderedif that tool is available.byte_cap_reachedis 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 asformat="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 whenstructured=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 objectweb_searchreturns (with aresultsarray) 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 nopagesparameter.
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 withpage('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 theDPTTOOLS_SANDBOX_TIMEOUTenvironment 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.pyscript within the skill directory.args: Arguments to pass to the script (POSIXshlexsplitting).
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 contextawait screenshot(): capture the tab; the image is returned with the resultawait 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 topage(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"
}