SoAI ships 119 built-in tools. This page lists all of them, grouped the same way as the Agent tools overview family pages. The family pages explain what a group of tools is for and what you have to configure; this page is the index you check when you need the exact tool name or argument list.
To select ordinary tools for a conversation, select Chat configuration in the chat header, then Tools. Turn on Tools enabled, use the tool list under Chat mode, Plan mode, or Execute mode, and select Save. The search box takes the tool names below, and each tool shows its description when you expand it.
skill_read is supplied for eligible turns with selected skills.
It does not need a separate tool-picker selection; automatic loading still needs tools enabled, a nonempty
tool selection for the active mode, and a model that supports tool calling.
Each table reflects the built-in tool catalog in the current SoAI release. Argument names are the complete input schema for each tool, and bold arguments are required.
Reading the flags
| Flag | Meaning |
|---|---|
| admin | Available only to administrator chat sessions; MCP server mode cannot expose it. |
| approve | Declares requiresApprovalHint. The WebUI asks before the call runs when tool approval is on. |
| chat | Available to authorized SoAI conversation users, including non-administrators; MCP server mode cannot expose it. |
| net | Declares openWorldHint. It reaches something outside SoAI. |
| read | Declares readOnlyHint. Reads resources or instructions without a destructive operation. |
| write | Declares destructiveHint. Plan mode refuses to run it, and the WebUI asks for approval when Require tool approval is on. |
No displayed flags means all tracked conditions above are false. It does not establish that the call
has no effect. For example, todo_write and plan_write update conversation state.
Both declare destructiveHint: false, so tool approval lets them through without a prompt.
Skills
2 tools. See Skills for usage guidance.
| Tool | Flags | Arguments | Description |
|---|---|---|---|
skill_materialize |
chat write | skill_id |
Copy an active skill's complete files into a new private directory in the conversation workspace. Requires execute mode and the selected write tool's approval. Does not run files or install dependencies. Repeated calls for the same admitted execution return the original durable result; changed or missing output is never overwritten or recreated. |
skill_read |
chat read | skill_id arguments source_relative path offset limit |
Skills give the assistant instructions for specific tasks. Load a skill's instructions or read its supporting files. Loading a skill does not grant permissions or run its files. |
Web and knowledge
16 tools. See Web and knowledge tools for usage guidance.
| Tool | Flags | Arguments | Description |
|---|---|---|---|
knowledge_config_get |
read | conv_id |
Get the knowledge base configuration for a conversation, including retrieval strategy, chunking, embedding model, and reranking settings. |
knowledge_list |
read | conv_id limit offset |
List all items in the conversation's knowledge base with their processing status. |
knowledge_reindex |
write | conv_id new_embedding_model confirm |
Reindex a conversation's knowledge base with a new embedding model. Requires confirm=true. Queues a background task. |
knowledge_search |
read | conv_id query top_k similarity_threshold retrieval_strategy |
Perform semantic search across all items in the conversation's knowledge base (includes both local files and web content). Supports 'similarity', 'mmr' (diverse results), and 'hybrid' (dense + BM25) retrieval strategies. |
knowledge_web_fetch |
net | conv_id url extract_mode screenshot timeout_ms max_chars focus_query retrieval_strategy top_k similarity_threshold chunking_strategy chunk_size chunk_overlap embedding_model |
Fetch a URL over HTTP and ingest it into the conversation knowledge base (embeddings + immediate context). Attempts a screenshot using the browser runtime for quick inspection. If the page is JS-rendered, requires login, or is blocked/empty via HTTP fetch, use the real-browser tools (browser_navigate + browser_snapshot/browser_eval) instead. |
mcp_resource_read |
read | server uri |
Read a resource from a connected MCP server. |
mcp_resource_templates_list |
read | server cursor |
List resource templates from connected MCP servers. |
mcp_resources_list |
read | server cursor |
List resources from connected MCP servers. |
soai_documentation |
chat read | query page max_results offset_chars max_chars |
Search or read the offline documentation bundled with this SoAI release. Provide exactly one of query or page. Search results return canonical page IDs; continue long page reads with next_offset_chars. |
web_fetch |
net | url extract_mode screenshot timeout_ms max_chars |
Fetch a URL over HTTP and extract readable content (extraction does not run JavaScript). Attempts a screenshot using the browser runtime for quick inspection. For JS-rendered pages, login-required pages, or blocked/empty responses, use the real-browser tools instead. |
web_search_brave |
read net | query limit country search_lang freshness |
Search using Brave Search API. Privacy-focused search with independent index. Requires a configured Brave Search API key. |
web_search_duckduckgo |
read net | query limit region |
Search using DuckDuckGo. Free, no API key required. Privacy-focused search with results from DuckDuckGo's index. |
web_search_google |
read net | query limit safe |
Search using Google Custom Search JSON API. 100 free queries/day. Requires a configured Google API key and TOOLS.RAG.GOOGLE.SEARCH_ENGINE_ID. |
web_search_searxng |
read net | query limit categories engines |
Search using a self-hosted SearXNG metasearch instance. Aggregates results from multiple search engines. Requires TOOLS.RAG.SEARXNG.BASE_URL configuration. |
web_search_serper |
read net | query limit gl hl |
Search using Serper.dev Google SERP API. Returns Google search results. Requires a configured Serper API key. |
web_search_tavily |
read net | query limit search_depth include_domains exclude_domains |
AI-optimized search using Tavily API. Designed for LLM and RAG applications. Requires a configured Tavily API key. |
Files and shell
11 tools. See File and shell tools for usage guidance.
| Tool | Flags | Arguments | Description |
|---|---|---|---|
apply_patch |
write | input |
Apply a structured patch to files under workspace_path. The patch must start with '*** Begin Patch' and end with '*** End Patch'. If the patch appears to be line-number prefixed (e.g., '1: *** Begin Patch'), prefixes are stripped. When the read-before-write file guard is enabled, edits to existing files require a prior read_file for text targets or read_image for image targets. Supported directives: '*** Add File: <path>' (content lines prefixed with +), '*** Delete File: <path>', '*** Update File: <path>' (unified diff hunks with @@, space/+/- prefixed lines). Update File supports '*** Move to: <path>' for renames. |
glob_files |
read | pattern path limit sort |
Find files by glob pattern under workspace_path. |
grep_files |
read | pattern include path output_mode case_insensitive multiline file_type before_context after_context context head_limit offset max_count_per_file |
Search files under workspace_path with a regex pattern. Returns matching file paths, per-file match counts, or matching lines with line numbers and optional context, depending on output_mode. Backed by a managed ripgrep binary. |
list_dir |
read | path offset limit depth |
List files and directories under workspace_path. |
read_file |
read | file_path offset limit mode render indentation |
Read a UTF-8 text file under workspace_path using line slicing, indentation views, or raw full-file reads. This tool is for source, config, log, and other text files. |
replace_in_file |
write | file_path find replace replace_all allow_noop dry_run expected_replacements |
Replace occurrences of a literal string in a file. Case-sensitive, not regex. By default, the operation is fail-safe: it requires exactly one match unless you explicitly set replace_all or expected_replacements. When the read-before-write file guard is enabled, edits to existing files require a prior read_file of the target file in line-based mode. This tool operates on utf-8 text files only. |
shell |
write | cmd workdir shell login tty run_in_background stream_output yield_time_ms cols rows max_output_tokens limit |
Run a real host shell command. The process starts in workspace_path or workdir, but command execution is not filesystem-sandboxed. Foreground commands stream output during yield_time_ms, then either return exit_code when complete or return status=running with session_id for shell_write_stdin/polling while the tracked PTY session continues server-side. COMMAND_BLACKLIST provides best-effort accidental-misuse checks; it is not a security boundary because interpreters and executed programs retain the caller's terminal authority. |
shell_output_read |
read | session_id offset limit from_end |
Read a paginated shell transcript by line offset. Use this when shell or shell_write_stdin reports has_more=true or when inspecting earlier/later output. |
shell_output_search |
read | session_id query offset limit case_sensitive |
Search a retained shell transcript and return matching line numbers/content. |
shell_write_stdin |
write | session_id chars keys cols rows yield_time_ms max_output_tokens limit |
Write input to a running shell session (started via shell), stream output deltas during the wait, and return incremental output. COMMAND_BLACKLIST is a best-effort accidental-misuse check on command names only, not a security boundary. |
write_file |
write | file_path content overwrite dry_run |
Create or overwrite a UTF-8 text file under workspace_path. Overwriting requires overwrite=true. When the read-before-write file guard is enabled, overwriting an existing file requires a prior read_file of the target file in line-based mode; the server rejects overwrites when the file changed since it was last read. code_diffs contains unified diffs; it is truncated when over the response budget and empty when content is unchanged. Set dry_run=true to validate and preview diffs without writing to disk. |
Browser automation
26 tools. See Browser automation tools for usage guidance.
| Tool | Flags | Arguments | Description |
|---|---|---|---|
browser_autofill_secret |
approve net | url secret_handle username_ref password_ref submit profile session_scope |
Securely autofill login fields using a secret_handle from vault_secret_request or vault_login_request. Requires approval and uses the current page URL for scope validation. Secrets never appear in tool arguments or results. |
browser_autofill_vault |
approve net | url credential_id username_ref password_ref submit profile session_scope |
Securely autofill login fields using a saved encrypted vault credential. Requires approval and uses the current page URL for scope validation. Secrets never appear in tool arguments or results. Use vault_login_request and choose to save to the vault to obtain a credential_id. |
browser_click |
net | element ref selector button double_click modifiers include_snapshot snapshot_roles wait_for_url wait_for_url_timeout_ms wait_for_url_wait_until profile session_scope |
Click an element by ref from browser_snapshot or by selector. Requires TOOLS.MCP.BROWSER.ENABLED=true. If the page navigates or a dialog appears, refresh state with browser_snapshot or browser_dialog before retrying. |
browser_close |
none | profile session_scope |
Close the current browser session for the caller. |
browser_console |
read | since type_filter profile session_scope |
Return console messages captured from the browser session for debugging page behavior. |
browser_dialog |
net | action dialog_id prompt_text profile session_scope |
List or handle JavaScript dialogs such as alert, confirm, and prompt for the current browser session. |
browser_downloads |
read | profile session_scope |
Return downloads captured for the current browser session, including file path when available and terminal status such as completed, canceled, or failed. A download is finished when status='completed' and file_path is present. |
browser_drag |
net | element_from from_ref from_selector from_match_index element_to to_ref to_selector to_match_index profile session_scope |
Drag an element from one ref (browser_snapshot) or selector to another. When using selectors, they must resolve to exactly one element unless you provide *MatchIndex. |
browser_eval |
net | script arg timeout_ms profile session_scope |
Evaluate JavaScript in the active page (must be enabled via TOOLS.MCP.BROWSER.JS_EVAL_ENABLED). |
browser_hover |
net | element ref selector force profile session_scope |
Hover an element by ref from browser_snapshot or by selector. Requires TOOLS.MCP.BROWSER.ENABLED=true. If navigation or a major page update occurred, refresh refs with browser_snapshot before retrying. |
browser_navigate |
net | action url tab_id accept_insecure wait_until timeout_ms http_auth clear_http_auth include_snapshot snapshot_roles profile session_scope |
Navigate a tab to a URL or move backward or forward through the active tab history. Set action=url with url, or action=back/forward without URL-only options. History actions require an active browser session. Requires TOOLS.MCP.BROWSER.ENABLED=true. Network navigation is blocked when SYSTEM.RUNTIME.STAY_OFFLINE=true. |
browser_network |
read | since cursor resource_type status_gte include_body max_requests profile session_scope |
Return captured network request and response metadata from the browser session for debugging page behavior. Use cursor + max_requests to page through large captures without advancing the session's last_call cursor. |
browser_pdf |
read net | landscape print_background scale page_ranges profile session_scope |
Generate a PDF of the current page in Chromium-based sessions and return it as base64 with metadata. |
browser_persistence_reset |
write | confirm profile session_scope |
Delete the configured persistence data for this profile and session_scope. Automatically resets either its user-data-dir profile or storage_state file. Destructive recovery action; requires confirm=true. |
browser_press_key |
net | key include_snapshot snapshot_roles profile session_scope |
Press a key in the active page. Requires TOOLS.MCP.BROWSER.ENABLED=true. If the expected control is missing because the layout changed, use browser_snapshot or browser_resize first. |
browser_profiles |
read | none | List configured browser profiles, including whether each profile uses remote CDP or local persistence settings. |
browser_resize |
none | width height profile session_scope |
Resize the browser viewport for the current session. |
browser_screenshot |
net | full_page element ref raw filename profile session_scope |
Take a PNG screenshot of the page or an element by ref. |
browser_scroll |
net | element ref delta_x delta_y steps delay_ms profile session_scope |
Scroll the page (or scroll an element into view by ref). |
browser_select_option |
net | element ref values include_snapshot snapshot_roles profile session_scope |
Select options in a native HTML <select> element by ref from browser_snapshot. Requires TOOLS.MCP.BROWSER.ENABLED=true. Refs become stale after navigation or major page changes. Provide the visible option text exactly as shown in browser_snapshot. For custom JavaScript dropdowns, use browser_click on the individual option elements instead. |
browser_snapshot |
read net | profile session_scope start_char snapshot_roles |
Return an accessibility snapshot with stable element refs for the current page. Requires TOOLS.MCP.BROWSER.ENABLED=true. Refs become stale after navigation or tab changes. Supports pagination using start_char and next_start_char. |
browser_status |
read | profile session_scope |
Return the current browser session status, including active tab metadata, dialog and log counters, persistence mode, and storage_state health. If no session exists, return disconnected status and instruct the caller to call browser_navigate first. |
browser_tabs |
none | action tab_id profile session_scope |
List, open, switch, or close tabs in the current browser session. This can change the active tab and may close an existing tab. |
browser_type |
net | element ref text submit include_snapshot snapshot_roles profile session_scope |
Fill an input by ref from browser_snapshot. Requires TOOLS.MCP.BROWSER.ENABLED=true. Refs are page-specific; refresh them after navigation or major page updates. |
browser_upload_file |
net | element ref filenames profile session_scope |
Upload one or more files under workspace_path to a file input element by ref. |
browser_wait_for |
read net | time text text_gone url_pattern url_prefix wait_until timeout_ms ref state reason profile session_scope |
Wait for time, for text to appear/disappear, for a browser_snapshot ref to reach a specific state, or for a URL pattern to match. Requires TOOLS.MCP.BROWSER.ENABLED=true. If the page changed before the wait starts, refresh refs with browser_snapshot first. Note: native <select> <option> elements are hidden by default, so waiting for option refs defaults to state='attached' unless you explicitly request another state. |
Media
4 tools. See Media reading tools for usage guidance.
| Tool | Flags | Arguments | Description |
|---|---|---|---|
read_audio |
read | file_id file_path model language task include_word_timestamps |
Read audio for model analysis with a local speech-to-text model provided by an installed plugin, plus local file metadata. Returns transcript text, timing, source/container metadata, speech pacing, silence gaps, and speech model confidence diagnostics when the model reports them. If speech-to-text is not set up, the error explains which plugin backend or model to install. |
read_document |
read net | file_id document_id file_path url max_chars offset_chars parse_timeout_sec |
Extract text from a document for LLM reading. Supports large documents via chunked reads: set max_chars and offset_chars; if truncated=true, continue with next_offset_chars. Uses the OCR-capable document pipeline for unreadable PDFs, scans, and images when OCR dependencies are available. Provide exactly one of file_id (uploaded file), document_id (RAG document), file_path (workspace_path path), or url (http/https). The file_path field also accepts an http/https URL. |
read_image |
read | file_path |
Read an image under workspace_path for vision-native inspection. Use read_document only when OCR/text extraction is needed. |
read_video |
read | file_path frames_per_second include_audio start_seconds end_seconds job_id cursor cancel |
Read frames and optional audio transcript from a local workspace video. The transcript uses the local speech-to-text model chosen by the speech model setting ('auto', a Whisper size, or an installed model ID), provided by an installed plugin. Use include_audio=false to read frames without speech setup. The call blocks until the selected range is parsed or cancelled. |
Image generation
1 tool. See Image generation tools for usage guidance.
| Tool | Flags | Arguments | Description |
|---|---|---|---|
generate_image |
approve net | prompt negative_prompt width height steps cfg_scale seed |
Generate an image from a clear English prompt using SoAI's configured image engine. Before calling this tool, translate or rewrite the user's visual request into English; non-English prompts can produce poor output. SoAI supports local Automatic1111, local ComfyUI with a configured API workflow, and explicit AI Horde. Local Automatic1111 is the default engine. AI Horde is a public queue and may take a long time; SoAI waits while the provider reports the request remains possible and stops when the provider rejects, faults, or exceeds the configured generation ceiling. Width and height must each be from 64 to 2048 pixels and multiples of 8. For wallpaper, wide, landscape, or 16:9 requests, explicitly pass a wide size such as width 1344 and height 768 when the configured engine can support it. This creates provider or local generator work outside the model and requires approval. |
Memory and history
5 tools. See Memory and history tools for usage guidance.
| Tool | Flags | Arguments | Description |
|---|---|---|---|
memory_conversation_history |
read | action include_automation limit last_modified_before last_modified_before_conv_id query limit_matches limit_conversations matches_per_conversation max_chars_per_match conv_id limit_messages before_timestamp before_message_id max_chars_per_message |
List, search, and read the user's past chat conversations. Defaults to user+assistant messages only. When called from an automation conversation, automation conversations are included by default; otherwise they are excluded unless include_automation is set. |
memory_forget |
write | entity_names observation_ids relation_ids |
Remove entities, observations, or relations from the persistent memory graph. Deleting an entity cascades to its observations and relations. |
memory_recall |
read | name |
Recall a specific entity from the persistent memory graph by exact name. Returns the entity with all its observations and relations. |
memory_search |
read | query entity_type limit |
Search the persistent memory graph by keyword or wildcard. Matches entity names and observation content, ranking exact entity names first. Returns matching entities with their observations and relations. Use '*' to retrieve all entities. |
memory_store |
approve | entities observations relations |
Store knowledge in the persistent memory graph. Create entities (people, projects, concepts), add observations about them, and create relations between them. Data persists across conversations. Requires approval. |
Planning and agent control
15 tools. See Planning and agent control tools for usage guidance.
| Tool | Flags | Arguments | Description |
|---|---|---|---|
ask_user |
none | questions |
Present one to six questions to the user in the chat UI, pause execution, and wait for their response or cancellation. Prefer one to three questions and two to four choices when options are needed. Use is_secret only for non-credential confidential free-text. |
automation_create |
none | title enabled color timezone start_local recurrence turns max_turns max_turn_chars max_run_minutes interactive_tool_approval model_settings |
Create an automation for the authenticated user. The payload must use the SoAI automation contract (timezone/start_local/recurrence/turns). |
automation_run_enqueue |
none | automation_id |
Enqueue an immediate automation run for the authenticated user. |
automation_run_get |
read | run_id |
Fetch an automation run record for the authenticated user. |
automation_run_wait |
none | run_id timeout_ms |
Wait for an automation run to reach a terminal state and return its record. |
automation_update |
none | automation_id title enabled color timezone start_local recurrence turns max_turns max_turn_chars max_run_minutes interactive_tool_approval model_settings |
Update an existing automation for the authenticated user. |
notify_user |
none | type title message source link |
Create a persisted user notification and enqueue it for realtime delivery. This does not wait for a user reply. |
plan_get |
read | none | Fetch the canonical long plan (markdown). |
plan_write |
none | title markdown |
Write the plan the user reviews and approves before execution (markdown). Each call replaces the whole plan. In plan mode, deliver the final plan here. |
stop_conversation |
chat | none | Stop the current model turn cleanly without closing the conversation. |
subagent_cancel |
none | subagent_id |
Cancel a running subagent. Cancellation is cooperative/asynchronous and may not stop in-flight work immediately. |
subagent_observe |
read | subagent_id mode timeout_ms |
Read a current-turn subagent snapshot. mode=current returns immediately; mode=terminal waits for completion, cancellation, error, or abandonment. |
subagent_spawn |
none | task skill_ids context mode display_name model workspace_path max_iterations tools |
Spawn a background subagent for the current conversation turn. Omit tools to use the default subagent tool set, pass an empty array for text-only execution, or pass tool names to restrict the subagent to those tools. |
todo_write |
none | explanation todo |
Write the canonical conversation todo checklist. Each call replaces the entire todo list. Keep at most one item in_progress at a time. |
wait |
read | seconds until timezone reason |
Wait or sleep for a duration or until a specific date/time, up to 1 week. Use this to intentionally pause the current agent step when time must pass. |
Productivity and feeds
23 tools. See Productivity and feed tools for usage guidance.
| Tool | Flags | Arguments | Description |
|---|---|---|---|
calendar_account_sync |
net | account_id |
Run an explicit remote discovery and cache sync for one calendar account. |
calendar_accounts_list |
read net | none | List configured calendar accounts for the authenticated user. |
calendar_calendars_list |
read net | account_id limit cursor order_by order_direction |
List cached calendars for one calendar account. |
calendar_event_read |
read net | event_id max_chars offset_chars |
Read one cached calendar event. |
calendar_event_update |
write net | action calendar_id event_id event |
Create, update, or delete one calendar event. |
calendar_events_list |
read net | calendar_id window_start_ms window_end_ms limit cursor order_by order_direction query attendee organizer |
List cached calendar events for one window. |
calendar_invite_respond |
write net | event_id action comment |
Respond to one calendar invitation. |
calendar_window_sync |
net | calendar_id window_start_ms window_end_ms |
Run an explicit remote sync for one calendar window. |
http_request |
net | url method headers body timeout follow_redirects max_response_bytes detect_blocked retries retry_backoff_min_ms retry_backoff_max_ms retry_jitter_max_ms retry_on_timeouts retry_on_request_errors retry_on_status session_mode session |
Perform HTTP request (returns status, headers, body, timing). Text is UTF-8; binary is base64. Retries are automatic for safe methods and require Idempotency-Key for mutating methods. Supports session persistence (cookies/headers). |
mail_account_sync |
net | account_id folder_id |
Run an explicit cache refresh for one mail account. |
mail_accounts_list |
read net | none | List configured mail accounts for the authenticated user. |
mail_attachment_download |
read net | attachment_id |
Persist one mail attachment into SoAI files storage. |
mail_folder_backfill |
net | folder_id batch_limit before_ms |
Import the next older cache batch for one folder. |
mail_folder_update |
write net | account_id action folder_id folder_name |
Create, rename, delete, or change subscription state for one folder. |
mail_folders_list |
read net | account_id limit cursor order_by order_direction |
List cached folders for one mail account. |
mail_message_compose |
write net | account_id mode delivery base_message_id to cc bcc subject body_text body_html attachments |
Compose and send or save a draft message for one mail account. |
mail_message_read |
read net | message_id part_id max_chars offset_chars |
Read one cached mail message with standard chunked-read arguments. |
mail_message_update |
write net | message_id action destination_folder_id |
Apply a mailbox mutation to one cached mail message. |
mail_messages_list |
read net | folder_id limit cursor order_by order_direction query thread_id unread flagged has_attachments from to subject since_ms before_ms |
List cached mail messages for one folder using cache-first filters. |
mail_messages_remote_search |
net | account_id folder_id limit from to subject since_ms before_ms text rfc822_message_id |
Run an explicit remote search and import matching summaries into cache. |
news |
read net | query language country max_results |
Search recent image-capable news articles through GDELT. DOC 2.0 provides full-text country-filtered results; the official Article List provides a global headline-and-summary fallback when DOC is unavailable. Use 'latest' or 'today' for current headlines, a date in YYYY-MM-DD format for articles from a specific day, or any keyword or phrase for news search. |
rss_read |
read net | url max_items |
Fetch and parse RSS or Atom feed from a URL, returning structured feed items |
weather |
read net | location units country_code forecast_days hourly_hours |
Get current conditions and a daily forecast (1-14 days, default 3) for a user-provided location using the configured no-key Open-Meteo-compatible endpoints, optionally with an hourly forecast (up to 48 hours). Use this for weather questions, include country_code when a location is ambiguous, set units to imperial only when the user asks for Fahrenheit or imperial units, set forecast_days to the asked window, and set hourly_hours when intra-day detail is requested. |
Utilities
8 tools. See Utility tools for usage guidance.
| Tool | Flags | Arguments | Description |
|---|---|---|---|
base64 |
read | operation text variant |
Encode or decode text using Base64, Base64URL, or Base32. |
calculator |
read | expression variables mode |
Safely evaluate math. Mode 'numeric' (default): exact integers (up to 4000 digits), floating-point decimals, + - * / // % ^, comparisons, and/or/not, 'a if c else b'. Separate statements with ';' or new lines; the last is the result and every 'name = value' is returned in 'assignments', so name each value you need. Constants pi, e, tau. Functions: abs, sign, round(x[, ndigits]), floor, ceil, trunc, sqrt, cbrt, exp, expm1, log(x[, base]), ln, log10, log2, log1p, pct(p, x), clamp(x, low, high), hypot, min, max, sin, cos, tan, asin, acos, atan, atan2(y, x), sinh, cosh, tanh, asinh, acosh, atanh, degrees, deg, radians, rad, gamma, lgamma, erf, erfc, factorial, comb(n, k), perm(n, k), gcd, lcm, isqrt, sum, prod, mean, median, stdev, pstdev, variance, pvariance; sum, mean and similar also take one list. Mode 'symbolic': unknown names are symbols, decimals are exact, I and oo exist; adds simplify, expand, factor, cancel, apart(expr[, x]), together, trigsimp, solve(equations[, unknowns]), subs(expr, x, value), N(expr[, digits]), diff(expr, x[, order]), integrate(expr, x[, low, high]), limit(expr, x, point[, side]), series(expr, x[, point, order]), summation(expr, i, low, high), product(expr, i, low, high), Matrix, det, inv, transpose, rank, eigenvals. Write equations with == (a plain expression means = 0), e.g. solve([x + 2*y == 7, 3*x - y == 7], [x, y]). Index results with s[0], s[0][x] or M[i, j]; limits are two-sided unless side is 1 or -1. Symbolic calls stop after 10 s. Pass unknowns explicitly; other symbols are parameters, and answers that depend on them come as 'cases'. Results report 'exact' and any 'constraints' the value needs; special cases (partial or conditional solutions, no solution, infinitely many, infinity, undefined, no limit) add 'outcome' and 'note'. |
datetime_current |
read | operation timezone source_timezone target_timezone datetime_str datetime_ms days format |
Get current time, convert timezones, and perform date arithmetic. Supports UTC and IANA timezone conversions, custom datetime formatting, and epoch milliseconds. |
hash |
read | text algorithm encoding |
Generate cryptographic hashes (MD5, SHA1, SHA256, SHA512) of text input |
message_parse |
read | file_id document_id file_path platform max_messages |
Parse chat exports from messaging platforms: WhatsApp, Telegram, Discord, Signal, Facebook Messenger, MSN Messenger. Supports .txt, .json, .xml, .csv, .html, and .zip files. Provide file_id (from /v1/files upload), document_id (RAG document), or file_path under workspace_path. |
random_generate |
read | type min max length charset choices count |
Generate random numbers, UUIDs, strings, or make random selections |
text_stats |
read | text |
Analyze text and return statistics: character count, word count, token count, sentence count, reading time |
unit_convert |
read | value from_unit to_unit category |
Convert values between units: temperature, length, weight, data sizes |
Hardware
3 tools. See Hardware tools for usage guidance.
| Tool | Flags | Arguments | Description |
|---|---|---|---|
hardware_benchmark |
admin write approve | action device_id run_id profile temperature_limit_celsius history_limit |
OpenCL GPU benchmark and stress tool. profile=soaibench runs certified SoAI Bench for comparable validation; profile=stress_test runs the stress workload for thermal or instability hunting. Requires approval. Poll status until the run is terminal. |
hardware_control |
admin write approve | action device_id settings |
Inspect GPU control capabilities and apply supported power/fan/clock settings. Call list first to inspect each GPU's supported controls and capability ranges, then set only supported controls. Tune one control at a time in small steps, use 'auto' or reset_clocks to undo clock changes, then validate with hardware_benchmark before choosing final settings. Requires approval. |
hardware_snapshot |
read | components include_processes |
Return a live hardware snapshot from SoAI (CPU/RAM/GPU temps and usage, plus disk space for the SoAI installation path). Use this before GPU tuning to identify device_id, vendor, temperature, utilization, VRAM usage, power, clocks, and system memory pressure. |
Secrets vault
5 tools. See Secrets vault for usage guidance.
| Tool | Flags | Arguments | Description |
|---|---|---|---|
vault_delete |
write approve | credential_id |
Delete a credential from the encrypted vault by id. Requires approval. |
vault_list |
read | none | List encrypted vault credentials (metadata only). |
vault_login_request |
approve | url label_suggestion profile session_scope |
Request credentials via the WebUI and optionally save them to the encrypted vault. This tool requires approval and never returns secrets; it returns an opaque secret_handle plus save metadata only. |
vault_search |
read | query |
Search encrypted vault credentials by label (metadata only). |
vault_secret_request |
none | current_page_url title message allow_save_to_vault |
Request credentials from the WebUI without returning secrets to the model. The tool may optionally offer save-to-vault and returns only an opaque secret_handle plus optional saved credential metadata. |