Skip to main content

Tool Catalog

This page enumerates every tool an expert can call in a conversation, along with its parameters. Tools are the model’s action interface — a tool the model cannot see is a tool it cannot call, and a tool not activated this turn does not exist. How to read it: first confirm in the Plugin Catalog whether a plugin is active this turn, then come here for what it injects and how the parameters work.
Most tools multiplex on an action parameter (a single browser tool carries 12 actions) rather than splitting into a dozen separate tools. The reason is that tool count directly consumes system-prompt context budget, and more tools means a higher chance the model picks the wrong one. The cost is longer parameter tables where most fields are irrelevant to any given action.

Sandbox tools (not part of any plugin)

Always available when sandbox mode is not none; no plugin tick required. This is the most commonly misunderstood group — users assume “no plugins enabled means nothing touches files,” but file I/O is a base capability.
edit’s old_string must match the file character for character, including indentation and whitespace. The most common failure when a model edits a large file is right here — it reconstructs old_string from memory instead of reading first. Repeated edit-retry loops usually mean exactly this.lsp’s read_lints checks every file written or edited in this session when paths is left empty.

Plan mode only

plan_write having no path parameter is deliberate: plan mode filters out every world-writing tool, so if plan_write could target a path it would immediately degrade into a general-purpose write escape and break the mode isolation.

Browser (profy-browser)

action values: navigate, screenshot, snapshot, click, type, fill, scroll, press_key, tabs, set_html, evaluate, go_back. An invalid action returns:
ref is an element handle returned by snapshot and is only valid for that snapshot. Once the page changes you must re-snapshot for fresh refs, or you click the wrong element or fail outright. Fine-grained variants (browser_click, browser_fill, browser_navigate, browser_press_key, browser_scroll, browser_snapshot, browser_tabs, browser_take_screenshot, browser_type) are exposed separately on some paths with identical parameters.

Chrome extension (profy-chrome)

Requires chrome_connected: true. The critical difference from profy-browser: Chrome drives your own browser with your own login state. That is why it has a four-tier permission gate that hard-blocks financial and account operations.

Computer use (profy-computer)

Requires desktop_connected: true. action values: screenshot, click, double_click, type, scroll, drag, keypress, invoke_menu, move, wait, cursor_position, list_windows, get_window_state, launch_app, list_apps, get_accessibility_tree, bring_to_front, set_value, check_permissions. Fine-grained variants: click, drag, key, mouse_move, screenshot, scroll, type_text, list_windows, get_window_state. check_permissions is worth calling once up front — without macOS accessibility permission every subsequent action fails, and the failure message does not always point at permissions.

Creative generation (profy-creative)

Automatically available; no tick needed. The read action is often overlooked: it lets the model actually see what it generated, which is the linchpin of the generate → inspect → regenerate loop. Without it the model can only imagine the result from its own prompt. Billing follows per_call or duration_second per the Billing Formulas. Requires enable_web_search: true. The minimal signature is intentional: search results must be truncated per result and capped in count before returning, and opening up parameters would let parallel searches blow out the context.

Memory (profy-memory)

Requires enable_memory: true. memory_type values: preference, fact, skill, habit, event, context, constraint, decision, entity. scope values: user (personal), expert (expert-specific). An invalid action returns:
Terminal users of the developer platform (calling through /v1/*) get the entire tool refused. Memory is isolated per platform user; a terminal user is not a platform identity, so writing would cross accounts.

Knowledge (profy-knowledge)

Leaving platform empty searches every connected platform. Write actions (create / append) depend on whether that platform’s adapter implements them; unimplemented ones report a capability error rather than failing silently.

Skills (profy-skill)

Use qualified names: builtin/docx, user/nuwa, expert/my-skill. Bare names auto-resolve when unambiguous. execute takes resource_type of script / reference / asset / template / workflow. Scripts run black-box — only stdout/stderr comes back, source never enters context. That is deliberate: skill scripts run to hundreds of lines and would crowd out the data actually being processed.

Delegation and scheduling

schedule has only add and search:
  • add requires title + prompt + scheduled_date (ISO, e.g. 2025-03-15) + scheduled_time (HH:MM)
  • repeat_type: no-repeat / daily / weekly / monthly
  • dependency_strategy: skip or continue when the predecessor fails
  • search’s status filter: pending / running / completed / paused / all
Invalid action: ❌ Invalid action 'xxx'. Must be 'add' or 'search'. There is no delete or update. Modifying a scheduled task means going to the product UI; conversation cannot do it. delegate runs detached by default — it dispatches without blocking the current conversation.

Human interaction (profy-message)

Called when the expert needs you to choose; the frontend renders it as a choice card. This is the only mechanism that halts execution to wait for your answer.

Sites (profy-sites)

Requires sandbox_mode != none.
deploy does not publish. The only real publish entry point is the deploy dialog in the UI. The expert calling deploy merely hands the request to you for confirmation — a deliberate one-way gate so experts cannot ship on their own.

Visualize (profy-visualize)

Canvas (profy-canvas)

concurrency defaulting to 1 is a conservative choice — running the DAG in parallel fires multiple billable generation jobs at once.

Video production (profy-movie)

exclusive: true; no other plugin loads while it is on. movie actions are pipeline stages: briefscriptstoryboardstrategyassemblecaptionexport. timeline_edit actions: insert_clip, remove_clip, trim, split, and others.

Feishu (profy-feishu)

Requires has_feishu_client: true. Write operations need user authorization; without it the tool returns an authorization marker prompting you to send /auth. See Feishu tools.

Customs (profy-customs)

Record & Replay (profy-record-and-replay)

Requires desktop_connected: true.

Distillation and evolution (internal)

evolution_log parameters: action (only suggest_skill_improvement), skill_name, summary, diff_summary, improved_content, before_scores, after_scores, improved_dimensions. Scoring rules are in Self-evolution.

The four office plugins have no tools

profy-docx / profy-pdf / profy-pptx / profy-xlsx declare empty tool arrays. They work through skill documents plus pre-installed sandbox libraries, driven by bash. See each plugin’s page for the concrete methods.

Plugin Catalog

Which tools activate this turn

Skill Catalog

The method layer beyond tools

Limits

Timeouts, counts, size caps

Billing Formulas

How tool calls are billed
Verified 2026-08-11. Sources: services/agent-runtime/src/base/tools/sandbox.py, services/agent-runtime/src/plugins/builtin/*/tools/*.py. Defaults are taken directly from each tool’s Field(default=...).