Skip to content

Internal Capabilities

Internal capabilities (type: "internal") are the built-in tools that ship with the platform — memory, web search, the canvas, document search, sub-chats, tasks, and more. Unlike API, MCP, Computer Use, and Sandbox capabilities (which are built from an options blob), an internal capability is selected by its code and resolved through a central tool registry. There's no options JSON to fill in — you just attach the capability to an agent.

This page is the catalog: which internal capabilities exist, what tools each one provides, and when each is active. For the broader picture of how capabilities fit together, see Capabilities.

How they work

  • Each internal capability has a code (e.g. base, web_search, tasks). A single capability row's code may even be a comma-separated list, activating several tool groups at once.
  • When a chat starts, the platform collects the active codes from the agent's linked internal capabilities and resolves them into the de-duplicated set of tools registered under those codes.
  • Tool names are de-duplicated across all sources — if two capabilities provide a tool with the same name, the first one wins.

For developers

Internal tools are registered in code (and can be contributed by external plugins via Python entry-points). See Tool Plugins for how to register your own tools under a capability code.

Example agent recipes

Internal capabilities are most useful in combination. A few realistic mixes — attach these codes together on an agent to get the described behavior:

Agent Capabilities to enable What it can do
Research / briefing base, web_search, rag, documents, memory Search the web, search uploaded documents and past chats, save findings as documents, and remember preferences across sessions.
Customer support base, rag, documents, chat_db_edit, memo, tasks Answer from a knowledge base, track structured tickets in the chat DB, keep session notes, and hand off work via tasks.
Data ops base, sandbox, documents, generic_api_requests Fetch data over HTTP, crunch and convert files in an ephemeral shell, and save the results as documents.
Live App builder base, canvas_toolkit, documents Build and iteratively edit an interactive HTML/React page on the canvas. (Canvas tools only activate on a Live Page.)
Media analyst base, video_analysis, video_transcription, audio_diarization Summarize and transcribe video, pull keyframes, and produce speaker-labelled transcripts.

base is the sensible default on almost every agent — it carries notifications, URL reading, image/voice generation, and agent-to-agent calls.

Context-gated behavior

Some internal capabilities are conditionally enabled — or remapped — based on the chat context. This is why a capability attached to an agent may not always produce a tool:

Capability Condition
base_dev Auto-added alongside base only in development environments.
base Provides speak only on a message sent in Voice Mode; the tool is absent otherwise.
canvas_toolkit Dropped unless the chat's page type is html or react (i.e. a Live Page).
subchats Remapped to subchats_parent (top-level chat) or subchats_child (chat with a parent) based on the chat hierarchy.
rag Adds rag_documents only when the chat has documents & collections enabled.
scheduled_prompts Dropped unless the chat has scheduled tasks enabled (scheduled_jobs_enabled).
memory Built per-request; skipped on temporary chats or when global memory is off.
web_search_google_serper Built per-request; requires SERPER_API_KEY in settings (otherwise a warning is logged and no tool is added).
generic_api_requests Built per-request (a fresh instance each call).

Capability reference

base — Base Tools

Core tools available to all agents (notifications, generation, agent-to-agent communication).

Tool Description
set_chat_title_name Rename/retitle the chat; auto-derives a title from history if none given.
notify_user Updates the "thinking" status message to tell the user what's happening.
send_push_notification_to_user Creates a notification for a user and pushes it (optionally with an email body).
read_content_of_url Fetches a public http(s) URL — reads web-page content as text, returns text/data files as-is, or saves the result into the chat when both a destination folder and filename are given.
hide_message_tool Hides an agent message that needs no response or is directed to someone else.
query_agent Calls another agent in the chat; returns its reply marked as "Response from the [name] Agent".
call_chat Calls a specific chat on another agent via the chat's mention name.
execute_task Executes a named task on another agent in the chat.
available_mentions Lists mentionable entities (users, agents, chats, tasks) available to the user, permission-filtered.
generate_image Generates images from text with style/size/reference-image options.
generate_voice Text-to-speech; supports single-speaker narration and multi-speaker dialogue.
speak Available only on a message sent in Voice Mode. Sends a short spoken script to the client to read aloud alongside the written reply — plain text only, capped at about forty seconds of speech.

base_dev — Base Dev Tools (development only)

Tool Description
wait_seconds Waits for a specified timeout before the next action (testing/debugging).

canvas_toolkit — Canvas (Live Pages only)

Interactive canvas for collaboratively creating/editing documents. Only active on html/react pages.

Tool Description
set_html_canvas_safe Replaces canvas HTML with safety checks, payload validation, and auto-escaping.
set_canvas_chunked Updates canvas HTML in chunks to avoid truncation with large content.
edit_html_canvas_enhanced Edits parts of canvas HTML (replace, insert, delete, append, replace_script, upsert_script).
get_canvas_diagnostics Returns diagnostics about current canvas content (size metrics, validation).
get_canvas_content Retrieves canvas HTML with optional filtering (line/char range, CSS selector).

chat_db_edit — Chat DB (Edit)

Read/write access to the chat database for structured entities.

Tool Description
chatdb_init Initializes the chat DB (schema/tables) for storing structured entities.
chatdb_list Lists/searches entities with filtering operators and pagination.
chatdb_get Retrieves a single entity by ID.
chatdb_add Creates one or more entities (single or batch).
chatdb_edit Updates one or more entities (merge + optimistic locking).
chatdb_delete Deletes one or more entities.

chat_db_read_only — Chat DB (Read Only)

Query-only access to the chat database.

Tool Description
chatdb_list Lists/searches entities (read-only).
chatdb_get Retrieves a single entity by ID (read-only).

web_search — Web Search (unified)

Tool Description
web_search Searches the web via the configured provider (Auto, Tavily, Perplexity, Serper, or Internal).

Web search on OpenRouter models

When the agent's model is an OpenRouter route and no external search key applies, the capability is served by OpenRouter's own web plugin. Two settings tune it:

Setting Default Description
WEB_SEARCH_MAX_RESULTS 5 Number of results OpenRouter attaches. Values below 1 are raised to 1.
WEB_SEARCH_ENGINE OpenRouter's own choice One of native, exa, firecrawl, parallel, perplexity. An unset or unrecognized value is ignored, leaving OpenRouter to route the search itself.

The plugin searches on every turn

Unlike a tool the model decides to call, OpenRouter searches before the model sees the turn and prepends the results — so an OpenRouter agent with this capability pays for a search on every message, including ones that need none. Three things bound that: the plugin is only attached to an agent that actually has the web_search capability, a configured external provider key (Tavily, Perplexity, or Serper) takes precedence over it, and WEB_SEARCH_MAX_RESULTS caps each search. Leave the capability off agents that do not need to search.

web_search_perplexity — Web Search (Perplexity)

Tool Description
perplexity_web_search Perplexity search with workflows for news, entity research, and general inquiries; supports location-based search and authority filtering.

web_search_gemini_deep_research — Web Search (Gemini Deep Research)

Tool Description
gemini_deep_research Runs a background Gemini research job, polls to completion, returns the final report + metadata.

subchats_parent — Subchats (Parent)

Active when the chat is top-level.

Tool Description
create_subchats Creates subchats in the current chat with optional initial prompts and goals.

subchats_child — Subchats (Child)

Active when the chat has a parent.

Tool Description
report_information_to_parent_chat Sends text to the parent chat, optionally analyzing it with the LLM.

memo — Memo

Tool Description
chat_memo Sets or appends to the chat memo (info scoped to the chat/session only).

goal — Goal

Tool Description
set_chat_goal Replaces the chat goal text when the user explicitly asks to set/change it.

rag_messages — RAG Messages

Tool Description
rag_search_messages Semantic search over chat message history.

rag_documents — RAG Documents

Added by the rag capability when documents are enabled.

Tool Description
rag_search_documents_and_collections Semantic search across documents and collections.

documents — Documents

Tool Description
list_collection_documents Lists documents in a collection (with custom-name metadata).
list_directories_and_documents Lists directories and documents at a path in the chat's document tree.
wait_until_document_text_extraction_is_finished Waits until a document is "Ready" or until timeout.
get_document_text Retrieves the full text (or a portion) of a document by ID.
view_image Lets the agent actually see an image document from the chat, rather than read its (usually empty) extracted text. Takes the document ID; the document must be linked to the current chat or its workspace and must be an image. A viewed image is also pinned — see below. Pass unpin: true to remove a previously pinned image from later turns. Anything that cannot be shown (not in this chat, not an image, bytes unreadable) comes back as a plain explanation instead of failing the turn.
save_document Saves content as a document (TXT, DOCX, MD, HTML, PDF, CSV, XLSX, CUSTOM), optionally into a destination folder. The filename must be a plain basename; a path-shaped name is rejected with a retry message rather than being split.
document_status Returns a document's processing/availability status.
attach_documents_to_response Attaches documents that already exist in the chat to the assistant's own reply, so the user gets them as message attachments. Documents are named by path (for example /reports/q3.md) or by numeric ID, must belong to the current chat, and are limited to 10 per call. Re-attaching a document that is already attached does nothing.

Seeing images from earlier in the chat

An image only reaches the model as a picture while its message is still inside the recent-history window. Once it scrolls out, the model is blind to it — and asking for its text gets little or nothing back, because a photo or screenshot has no useful extracted text.

view_image closes that gap, and what it shows stays shown:

  • A successfully viewed image is pinned to the conversation and re-attached on every later turn, so the agent can keep referring to it instead of viewing it again.
  • Pins are capped at five per chat. Adding a sixth evicts the oldest pin. Call view_image with unpin: true to release one deliberately.
  • Images are downscaled before being sent, and an image already present in the turn is not sent twice, so pinning has a bounded cost.

Behaviour is the same whichever model provider the agent runs on; the platform adapts how the image is delivered to what each provider accepts.

How many images reach the model at once

Images attached to recent messages are sent to the model as real images, not just filenames — but within a budget per conversation. By default at most six images and 15 MB of image data are attached, newest first.

Beyond that budget, an image is not an error and does not disappear: it degrades to its metadata, so the model still knows a file of that name is attached but can no longer see it. An image whose stored file cannot be read degrades the same way, with a note saying so.

This matters for anything that attaches images repeatedly — a Live App that re-attaches photographs at each stage of a flow, for instance. Past the budget the oldest images stop being visible while appearing to still be attached. Where a specific image needs to be seen, have the agent open it deliberately with view_image, which also pins it, rather than relying on it still being inside the history budget.

Tell the agent the image is there

The agent discovers image documents from the chat's document list and from the attachment notes on earlier messages. If a user refers to "the screenshot I sent yesterday", the agent needs the documents capability to look it up and view it.

genui — Gen UI

Lets the assistant answer with interactive widgets instead of plain text. Each tool appends a rendered component to the message it is replying with, so the chat bubble updates live.

Tool Description
render_text Markdown text block, with an optional heading level.
render_chart A pie, bar, line, scatter, histogram, or heatmap chart, with colors, number formatting, legend, and grid options.
render_status_card An info, success, warning, or error status card.
render_choice Single- or multi-select choice cards, optionally allowing a typed-in answer.
render_form A form built from text, multiline, number, select, radio, checkbox, and date fields, with validation rules and fields that appear conditionally.
render_confirmation A confirm/cancel gate that shows what the consequence would be.
render_rating A star, thumbs, or numeric rating, optionally with a comment.
render_schedule_picker A picker for choosing from offered times.
render_comparison_matrix A side-by-side comparison table.
render_card_carousel A swipeable set of cards.

settings — Settings

Tool Description
edit_user_setting Creates/updates a user setting (name + value) scoped to the user's current group.

tasks — Tasks

Tool Description
get_capabilities Gets the list of capabilities for the default virtual assistant.
create_task Creates a task with scheduling, memory, search, and customization options.

scheduled_prompts — Scheduled Prompts

Requires scheduled tasks to be enabled on the chat (the chat's scheduled_jobs_enabled flag).

Tool Description
add_scheduled_job Adds a scheduled job that runs a given prompt on a schedule.

Note

The underlying toolkit also defines tools to list, update, and delete scheduled jobs, but only add_scheduled_job is registered under this capability.

video_analysis — Video Analysis

Tool Description
analyze_video_tool Analyzes video to summarize, extract info, and identify key points/timelines.
extract_video_keyframes Extracts scene-change keyframes and saves each as an image document.

video_transcription — Video Transcription

Tool Description
transcribe_video_tool Verbatim transcript from a video's audio track (or an audio file), no summarization.

audio_diarization — Audio Diarization

Tool Description
diarize_audio_tool Transcribes audio with speaker diarization; returns [MM:SS] timestamps + Speaker labels.

sandbox — Sandbox (internal toolkit)

An ephemeral per-turn Daytona shell for code/skill execution.

Tool Description
sandbox_exec Runs a shell command in an ephemeral per-turn sandbox; state is reused across calls within the same turn.

Not the same as a type: "sandbox" capability

This internal sandbox capability provides the general-purpose sandbox_exec tool — see Sandbox Execution. It's distinct from a Sandbox capability (type: "sandbox"), which packages a whole automation behind a nested loop.

computer_use — Computer Use (internal toolkit)

Direct desktop control where the agent's own model does the looking and clicking.

Tool Description
computer_use Performs one mouse/keyboard action (click, type, scroll, etc.) on a per-turn desktop sandbox.
computer_screenshot Captures the desktop screen, with optional region zoom for small text.

Not the same as a type: "computer_use" capability

This internal computer_use capability exposes low-level actions the agent's own model drives directly. It's distinct from a Computer Use capability (type: "computer_use"), which runs a nested Claude loop behind a single named tool.

Special-cased capabilities (built per-request)

These can't be pre-registered because they need per-user or per-request state, so the platform builds them at runtime:

memory — Memory

Skipped on temporary chats and when global memory is off. Scoped to the user and group (and per-agent for constitution memories).

Tool Description
search_memory Semantic vector lookup of saved memories; returns id, type, priority, timestamp, text.
update_memory Adds, updates, or deletes a memory (action + text + memory_type + priority and/or memory_id).

web_search_google_serper — Web Search (Google Serper)

Tool Description
google_serper_results_json Google search results. Requires SERPER_API_KEY in user/group settings; if missing, the tool is omitted and a warning is logged.

generic_api_requests — Generic API Requests

Tool Description
requests_get Performs HTTP GET requests and returns the response. Instantiated fresh per request (not registry-cached).

Codes handled elsewhere

A few capability codes exist but don't map to discrete tools on this page — they're handled by other subsystems (the agent prompt, plugins, or platform features) rather than the tool registry:

  • multimodality
  • process_documents
  • obviously_manage
  • web_search_internal

Quick reference: code → tools

Code Display name Tools
base Base Tools 12 tools (title, notify, push, read URL, hide, query/call/execute, mentions, image, voice, speak)
base_dev Base Dev Tools wait_seconds
canvas_toolkit Canvas 5 canvas tools
chat_db_edit Chat DB (Edit) 6 chatdb tools
chat_db_read_only Chat DB (Read Only) chatdb_list, chatdb_get
web_search Web Search web_search
web_search_perplexity Web Search (Perplexity) perplexity_web_search
web_search_gemini_deep_research Web Search (Gemini Deep Research) gemini_deep_research
web_search_google_serper Web Search (Serper) google_serper_results_json (special)
subchats_parent / subchats_child Subchats create_subchats / report_information_to_parent_chat
memo Memo chat_memo
goal Goal set_chat_goal
rag_messages RAG Messages rag_search_messages
rag_documents RAG Documents rag_search_documents_and_collections
documents Documents 8 document tools
genui Gen UI 10 render_* widget tools
settings Settings edit_user_setting
tasks Tasks get_capabilities, create_task
scheduled_prompts Scheduled Prompts add_scheduled_job
video_analysis Video Analysis analyze_video_tool, extract_video_keyframes
video_transcription Video Transcription transcribe_video_tool
audio_diarization Audio Diarization diarize_audio_tool
sandbox Sandbox sandbox_exec
computer_use Computer Use computer_use, computer_screenshot
memory Memory search_memory, update_memory (special)
generic_api_requests Generic API Requests requests_get (special)