Built-in Tools
File Tools
read_file
Read the contents of a file in the workspace.
| Parameter | Type | Required | Description |
|---|---|---|---|
path | string | yes | File path relative to workspace root |
Files outside the workspace are blocked.
write_file
Write content to a file. Creates the file if it does not exist, overwrites if it does. Creates parent directories automatically. Requires permission (file_write).
| Parameter | Type | Required | Description |
|---|---|---|---|
path | string | yes | File path relative to workspace root |
content | string | yes | Content to write |
list_files
List files and directories in a workspace directory. Returns names with a trailing / for directories.
| Parameter | Type | Required | Description |
|---|---|---|---|
path | string | no | Directory path relative to workspace root (default: root) |
show_file
Present a file to the user as a downloadable card in the chat. Use after creating or processing a file that the user would want to download.
| Parameter | Type | Required | Description |
|---|---|---|---|
path | string | yes | File path relative to workspace root |
label | string | no | Display label for the file card |
Shell
bash
Execute a shell command in the workspace directory. Requires permission (bash). Uses cmd.exe on Windows and /bin/bash on other platforms. Timeout: 120 seconds. Output truncated at 50,000 characters.
| Parameter | Type | Required | Description |
|---|---|---|---|
command | string | yes | The shell command to execute |
Web
web_fetch
Fetch the text content of a web page. Timeout: 30 seconds. Output truncated at 100,000 characters.
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | yes | The URL to fetch |
web_search
Search the web using DuckDuckGo. Returns results with titles, URLs, and snippets. No API key required.
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | yes | The search query |
maxResults | number | no | Maximum results to return (default: 5) |
Browser
browser
Control a visible Playwright-based browser window. The browser is visible to the user. Use web_fetch for simple content retrieval.
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | yes | The action to perform (see below) |
url | string | no | URL for navigate |
selector | string | no | Element ref (@e1, @e2...) or CSS selector |
text | string | no | Text for fill and type |
value | string | no | Value for select |
key | string | no | Key name for press (e.g. Enter, Tab) |
script | string | no | JavaScript for evaluate |
target | string | no | Wait target: CSS selector, milliseconds, or URL pattern |
Actions:
| Action | Description |
|---|---|
navigate | Go to a URL |
snapshot | Get accessibility tree with element refs (@e1, @e2...) |
screenshot | Capture the page as an image artifact |
click | Click an element by ref or CSS selector |
fill | Clear an input field and fill with text |
type | Type text into the focused or selected element |
select | Select a dropdown option by value |
press | Press a keyboard key |
evaluate | Execute JavaScript on the page |
get_text | Get the text content of an element |
get_content | Get page title, URL, and accessibility snapshot |
wait | Wait for a selector, text, or milliseconds |
back | Navigate back in history |
forward | Navigate forward in history |
reload | Reload the page |
close | Close the browser |
Memory
memory_read
Read long-term memory.
| Parameter | Type | Required | Description |
|---|---|---|---|
scope | string | no | "project" (default) or "global" |
Project memory is stored in .cortask/memory.md inside the workspace. Global memory is stored in the Cortask data directory.
memory_save
Replace the entire memory file with new content.
| Parameter | Type | Required | Description |
|---|---|---|---|
content | string | yes | Full markdown content to write |
scope | string | no | "project" (default) or "global" |
memory_append
Append a note to memory. Also indexes the note in the searchable memory database for semantic retrieval.
| Parameter | Type | Required | Description |
|---|---|---|---|
note | string | yes | The note to append |
scope | string | no | "project" (default) or "global" |
A warning is emitted when the memory file exceeds 200 lines, suggesting consolidation with memory_save.
memory_search
Search long-term memory using semantic and keyword search.
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | yes | The search query |
limit | number | no | Maximum results (default: 5) |
Data
data_file
Inspect and query data files (CSV, TSV, JSON, XLSX) without loading them into the conversation context.
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | yes | "inspect" or "query" |
path | string | yes | Path to the data file (relative to workspace) |
sql | string | no | SQL query (for query action). The table is named data. |
The inspect action returns column names, types, row count, and sample rows. The query action loads the file into an in-memory SQLite database and executes the SQL. Results are capped at 100 rows.
Artifacts
artifact
Create rich artifacts (HTML, CSV, SVG, JSON, text) that render inline in the chat. Content can be provided directly or read from a workspace file.
| Parameter | Type | Required | Description |
|---|---|---|---|
type | string | yes | "html", "csv", "json", "svg", or "text" |
title | string | yes | Short title for the artifact |
content | string | no | The artifact content (not needed if path is provided) |
path | string | no | File path relative to workspace root (preferred when file exists) |
Scheduling
cortask_cron
Manage scheduled jobs that run agent prompts on a timer.
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | yes | "list", "create", "update", "remove", or "run_now" |
name | string | no | Job name (for create/update) |
schedule_type | string | no | "at" (one-time), "every" (interval), or "cron" (recurring) |
schedule_value | string | no | ISO datetime, milliseconds, or cron expression |
timezone | string | no | Timezone (e.g. Europe/Berlin) |
prompt | string | no | The prompt to execute when the job runs |
enabled | boolean | no | Whether the job is enabled |
delivery_channel | string | no | Channel for result delivery ("telegram", "discord", "whatsapp") |
delivery_target | string | no | Target chat/user ID for delivery |
job_id | string | no | Job ID (for update, remove, run_now) |
Interaction
questionnaire
Present a multi-step questionnaire to the user to collect structured information. Only available in the web UI (not in channel-based conversations).
| Parameter | Type | Required | Description |
|---|---|---|---|
title | string | no | Title of the questionnaire |
description | string | no | Description of its purpose |
questions | array | yes | Array of question objects |
Each question object:
| Field | Type | Required | Description |
|---|---|---|---|
id | string | yes | Unique identifier |
question | string | yes | The question text |
type | string | yes | "single", "multiple", "text", or "textarea" |
options | array | no | Options for single/multiple choice (each with value, label, optional description) |
required | boolean | no | Whether the question must be answered |
placeholder | string | no | Placeholder text for text inputs |
allowOther | boolean | no | Add an "Other" option with text input |
Delegation
subagent
Spawn a child agent to handle an independent subtask. The sub-agent runs in isolation with its own context and returns the result directly. Use for delegating research, analysis, or parallel tasks.
| Parameter | Type | Required | Description |
|---|---|---|---|
task | string | yes | Clear description of the task for the sub-agent |
Constraints:
- Maximum nesting depth: 1 (sub-agents cannot spawn their own sub-agents)
- Maximum concurrent children per parent: 5
- Timeout: 120 seconds per sub-agent
Navigation
switch_workspace
Switch the active workspace for channel-based conversations. Only available when the agent is accessed through a channel (Telegram, Discord, WhatsApp), not in the web UI.
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | yes | "list" or "switch" |
workspace_name | string | no | Workspace name (case-insensitive partial match) |
Skills
cortask_skill
Manage custom skills. Skills are SKILL.md files with YAML frontmatter and markdown instructions.
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | yes | "create", "update", "list", or "remove" |
name | string | no | Skill name in kebab-case |
content | string | no | Full SKILL.md content (for create/update) |
Cannot overwrite bundled skills. Custom skills are stored in the user skills directory.