Skip to content

MCP Matrix ​

One table per question, all of them derived from TOOL_REGISTRY and ToolGroup in src-tauri/src/mcp/server.rs. The registry is the source of truth; this page is a projection of it, and bash scripts/mcp-matrix.sh --check fails when the two disagree.

Tool Reference is the companion page: it carries argument schemas, worked examples and the prose a generator cannot write. This page carries the facts a human should never retype.

The surfaces, counted ​

SurfaceWhat defines itTools
Whole registryevery row of TOOL_REGISTRY272
Default surfaceToolGroup::admitted_by(&ToolGroup::all(), …)181
Opt-inits toolset is admitted by neither, so it is off even under --toolsets all and must be named91
Build: OSSno #[cfg] gate on the row118
Build: Pro boardtasks build features90
Build: Visual editortasks + visual-editor build features60
Build: Visual editor + extension armextension-driver + tasks + visual-editor build features4

Build tiers are cumulative in the obvious direction: a visual-editor build registers everything an OSS build does. They are read off each row's own #[cfg], which is the only thing that decides whether a tool is compiled in at all.

Toolsets ​

ToolsetToolGroupOn by defaultBuildToolsDescription
projectsToolGroup::ProjectsyesOSS13Registry CRUD + setup: list, status, detect, add, update, remove, export, import, setup.
lifecycleToolGroup::LifecycleyesOSS4start, stop, restart, stop_all.
diagnosticsToolGroup::DiagnosticsyesOSS4logs, doctor, sidecar_status.
scaffoldToolGroup::ScaffoldyesOSS1setup_from_template — runs upstream scaffolders (network access).
groupsToolGroup::GroupsyesOSS7Group CRUD + batch lifecycle: list, create, update, remove, start, stop, restart.
tunnelsToolGroup::TunnelsyesOSS5Read-only tunnel visibility: list active public tunnels, look up one by id, and list saved SSH connections (hosts).
ssh-execToolGroup::SshExecno — name ssh-execOSS15Remote command execution on a saved SSH host (portbay_ssh_execute), plus the read-only alias directory that names the hosts it can run on (portbay_remote_hosts_list).
runtimesToolGroup::RuntimesyesOSS4Runtime management: list detected versions, set defaults, add/remove manual paths.
databasesToolGroup::DatabasesyesOSS15Database engines + owned instances: list, create, lifecycle, link, auto-start.
dnsToolGroup::DnsyesOSS3DNS / domains: resolver status, DNS records, domain-suffix change.
sandboxToolGroup::SandboxyesOSS4Sandboxed Run (macOS Seatbelt): status, enable, disable, violations.
inspectorToolGroup::InspectoryesOSS2HTTP request inspector: recent Caddy requests, clear the log, replay (replay is app-only from this tool — see its description).
certsToolGroup::CertsyesOSS3Local-HTTPS certificates: per-project cert info, reissue.
migrateToolGroup::Migrateno — name migrateOSS3Migration import from other local-dev tools (Herd / ServBay / MAMP): detect sources, preview their sites, import into the registry.
secretsToolGroup::SecretsyesOSS14PortBay's local secrets vault: set/list/status/validate/import/delete per-project secrets.
secrets-transferToolGroup::SecretsTransferno — name secrets-transferOSS2Bulk secret transfer between PortBay's vault and an EXTERNAL secret manager: portbay_secrets_import_from (pull every secret in) and portbay_secrets_export_to (push every secret out).
tasksToolGroup::TasksyesPro board35Per-project task board + session hand-off: list/next/create/ack/update cards, read/append the rolling hand-off log.
connectorsToolGroup::ConnectorsyesPro board11External business/task systems connected to PortBay.
captureToolGroup::Captureno — name captureOSS4Screen capture: read-only capture history + (approval-gated) programmatic screenshot / OCR.
workflowsToolGroup::Workflowsno — name workflowsPro board36Outcome workflow recipes + local case files.
browserToolGroup::BrowseryesVisual editor · Visual editor + extension arm31Visible browser companion sessions on a PortBay-managed Chrome profile.
browser-ioToolGroup::BrowserIoyes — rides browserVisual editor25The browser companion's STATE and WIRE half: cookies, Web Storage, network capture / mocking, frames, dialogs, file download and upload, and drag.
imagegenToolGroup::Imagegenno — name imagegenOSS2On-device image generation (the portbay-imagegen diffusion sidecar).
sttToolGroup::Sttno — name sttOSS2On-device speech-to-text: transcribe an existing audio file (the portbay-stt sidecar's transcribe-file op).
ttsToolGroup::Ttsno — name ttsOSS1On-device text-to-speech: synthesize speech from text into an audio FILE (the portbay-stt sidecar's tts-synthesize op on macOS, a system piper install on Linux).
websearchToolGroup::Websearchno — name websearchPro board3Web search through PortBay's pluggable search providers (DuckDuckGo / SearXNG keyless, Tavily / Brave keyed).
verifyToolGroup::Verifyno — name verifyVisual editor1Read-only run summaries from the Pro visual editor's Tier-2 auto-verify loop (P2.3).
editorToolGroup::Editorno — name editorVisual editor7Read-only inspection of the Pro visual editor's persisted state for a BYO-agent (P2.4): the staged working diff and the visual-edit history ledger.
deliveryToolGroup::Deliveryno — name deliveryPro board5The board-level delivery pipeline: plan a delivery from the Done column, run it, read it, resume it, cancel it.
ssh-opsToolGroup::SshOpsno — name ssh-opsOSS10SSH-OPS views of a saved host (capabilities, Docker, systemd services, health, security, exposure, backups, PaaS and Kubernetes reports, one container's redacted inspect, a bounded log tail) and the typed actions an assigned agent runs under its task grant.

Tools ​

In registry order. Changes state is TOOL_REGISTRY's own is_mutating flag. Default says whether the tool is on the default surface; a no means its toolset must be named explicitly.

ToolToolsetChanges stateDefaultBuild
portbay_list_projectsprojectsnoyesOSS
portbay_statusprojectsnoyesOSS
portbay_targetprojectsnoyesOSS
portbay_detect_projectprojectsnoyesOSS
portbay_detect_workspace_appsprojectsnoyesOSS
portbay_list_recipesprojectsnoyesOSS
portbay_setup_from_recipeprojectsyesyesOSS
portbay_add_projectprojectsyesyesOSS
portbay_update_projectprojectsyesyesOSS
portbay_remove_projectprojectsyesyesOSS
portbay_export_configprojectsyesyesOSS
portbay_import_configprojectsyesyesOSS
portbay_setupprojectsyesyesOSS
portbay_startlifecycleyesyesOSS
portbay_stoplifecycleyesyesOSS
portbay_restartlifecycleyesyesOSS
portbay_stop_alllifecycleyesyesOSS
portbay_logsdiagnosticsnoyesOSS
portbay_doctordiagnosticsnoyesOSS
portbay_release_preflightdiagnosticsyesyesOSS
portbay_sidecar_statusdiagnosticsnoyesOSS
portbay_setup_from_templatescaffoldyesyesOSS
portbay_list_groupsgroupsnoyesOSS
portbay_create_groupgroupsyesyesOSS
portbay_update_groupgroupsyesyesOSS
portbay_remove_groupgroupsyesyesOSS
portbay_start_groupgroupsyesyesOSS
portbay_stop_groupgroupsyesyesOSS
portbay_restart_groupgroupsyesyesOSS
portbay_list_tunnelstunnelsnoyesOSS
portbay_tunnel_statustunnelsnoyesOSS
portbay_list_ssh_tunnelstunnelsnoyesOSS
portbay_ssh_tunnel_statustunnelsnoyesOSS
portbay_list_ssh_connectionstunnelsnoyesOSS
portbay_ssh_executessh-execyesnoOSS
portbay_remote_execssh-execyesnoOSS
portbay_remote_files_listssh-execnonoOSS
portbay_remote_file_readssh-execnonoOSS
portbay_remote_file_writessh-execyesnoOSS
portbay_deployssh-execyesnoOSS
portbay_deploy_statusssh-execnonoOSS
portbay_deploy_recipes_listssh-execnonoOSS
portbay_deploy_rollbackssh-execyesnoOSS
portbay_remote_hosts_listssh-execnonoOSS
portbay_project_deploy_targetssh-execnonoOSS
portbay_remote_env_checkssh-execnonoOSS
portbay_deploy_snippets_listssh-execnonoOSS
portbay_deploy_snippet_savessh-execyesnoOSS
portbay_deploy_snippet_runssh-execyesnoOSS
portbay_ssh_host_viewssh-opsnonoOSS
portbay_ssh_container_inspectssh-opsnonoOSS
portbay_ssh_logs_tailssh-opsnonoOSS
portbay_ssh_kube_execssh-opsyesnoOSS
portbay_ssh_kube_debugssh-opsyesnoOSS
portbay_ssh_kube_read_as_rootssh-opsnonoOSS
portbay_ssh_container_actionssh-opsyesnoOSS
portbay_ssh_service_restartssh-opsyesnoOSS
portbay_ssh_hardening_previewssh-opsnonoOSS
portbay_ssh_hardening_applyssh-opsyesnoOSS
portbay_list_runtimesruntimesnoyesOSS
portbay_set_default_runtimeruntimesyesyesOSS
portbay_add_runtime_pathruntimesyesyesOSS
portbay_remove_runtime_pathruntimesyesyesOSS
portbay_list_database_enginesdatabasesnoyesOSS
portbay_list_databasesdatabasesnoyesOSS
portbay_database_connectiondatabasesnoyesOSS
portbay_db_schemadatabasesnoyesOSS
portbay_db_querydatabasesnoyesOSS
portbay_db_explaindatabasesnoyesOSS
portbay_db_executedatabasesyesyesOSS
portbay_create_databasedatabasesyesyesOSS
portbay_remove_databasedatabasesyesyesOSS
portbay_start_databasedatabasesyesyesOSS
portbay_stop_databasedatabasesyesyesOSS
portbay_restart_databasedatabasesyesyesOSS
portbay_link_databasedatabasesyesyesOSS
portbay_unlink_databasedatabasesyesyesOSS
portbay_set_database_auto_startdatabasesyesyesOSS
portbay_dns_statusdnsnoyesOSS
portbay_list_dns_recordsdnsnoyesOSS
portbay_set_domain_suffixdnsyesyesOSS
portbay_sandbox_statussandboxnoyesOSS
portbay_sandbox_violationssandboxnoyesOSS
portbay_enable_sandboxsandboxyesyesOSS
portbay_disable_sandboxsandboxyesyesOSS
portbay_recent_requestsinspectornoyesOSS
portbay_clear_requestsinspectoryesyesOSS
portbay_cert_infocertsnoyesOSS
portbay_reissue_certcertsyesyesOSS
portbay_ensure_httpscertsyesyesOSS
portbay_detect_import_sourcesmigratenonoOSS
portbay_preview_importmigratenonoOSS
portbay_import_projectsmigrateyesnoOSS
portbay_secret_setsecretsyesyesOSS
portbay_secrets_setsecretsyesyesOSS
portbay_secrets_listsecretsnoyesOSS
portbay_secret_statussecretsnoyesOSS
portbay_secret_validatesecretsnoyesOSS
portbay_secrets_importsecretsyesyesOSS
portbay_secrets_import_fromsecrets-transferyesnoOSS
portbay_secret_deletesecretsyesyesOSS
portbay_secret_rotatesecretsyesyesOSS
portbay_secret_revealsecretsyesyesOSS
portbay_secrets_export_tosecrets-transferyesnoOSS
portbay_secret_adoptsecretsyesyesOSS
portbay_deployment_preparesecretsnoyesOSS
portbay_deployment_stagesecretsyesyesOSS
portbay_deployment_applysecretsyesyesOSS
portbay_deployment_rollbacksecretsyesyesOSS
portbay_capture_historycapturenonoOSS
portbay_capture_getcapturenonoOSS
portbay_capture_screencaptureyesnoOSS
portbay_capture_ocrcaptureyesnoOSS
portbay_imagegen_modelsimagegennonoOSS
portbay_imagegen_generateimagegenyesnoOSS
portbay_stt_modelssttnonoOSS
portbay_stt_transcribesttnonoOSS
portbay_tts_speakttsyesnoOSS
portbay_web_searchwebsearchnonoPro board
portbay_web_search_and_scrapewebsearchnonoPro board
portbay_extract_pagewebsearchnonoPro board
portbay_tasks_listtasksnoyesPro board
portbay_connectors_statustasksnoyesPro board
portbay_workflow_listworkflowsnonoPro board
portbay_workflow_planworkflowsnonoPro board
portbay_workflow_startworkflowsyesnoPro board
portbay_workflow_generateworkflowsnonoPro board
portbay_workflow_authorworkflowsnonoPro board
portbay_workflow_editworkflowsnonoPro board
portbay_workflow_validate_graphworkflowsnonoPro board
portbay_workflow_recipe_validateworkflowsnonoPro board
portbay_workflow_recipe_saveworkflowsyesnoPro board
portbay_workflow_runworkflowsyesnoPro board
portbay_workflow_run_cardworkflowsyesnoPro board
portbay_workflow_run_snapshotworkflowsnonoPro board
portbay_workflow_run_listworkflowsnonoPro board
portbay_workflow_run_getworkflowsnonoPro board
portbay_run_searchworkflowsnonoPro board
portbay_workflow_stopworkflowsyesnoPro board
portbay_workflow_review_resolveworkflowsyesnoPro board
portbay_workflow_step_resolveworkflowsyesnoPro board
portbay_workflow_trigger_saveworkflowsyesnoPro board
portbay_workflow_trigger_listworkflowsnonoPro board
portbay_workflow_trigger_deleteworkflowsyesnoPro board
portbay_workflow_trigger_set_enabledworkflowsyesnoPro board
portbay_workflow_capabilitiesworkflowsnonoPro board
portbay_workflow_dry_runworkflowsnonoPro board
portbay_workflow_preflightworkflowsnonoPro board
portbay_workflow_fixture_runworkflowsyesnoPro board
portbay_workflow_recipe_getworkflowsnonoPro board
portbay_workflow_recipe_deleteworkflowsyesnoPro board
portbay_workflow_recipe_versionsworkflowsnonoPro board
portbay_workflow_recipe_version_getworkflowsnonoPro board
portbay_workflow_recipe_restoreworkflowsyesnoPro board
portbay_workflow_run_step_logworkflowsnonoPro board
portbay_workflow_step_retryworkflowsyesnoPro board
portbay_case_file_getworkflowsnonoPro board
portbay_case_file_appendworkflowsyesnoPro board
portbay_workflow_tool_schemaworkflowsnonoPro board
portbay_browser_sessionsbrowsernoyesVisual editor
portbay_browser_openbrowseryesyesVisual editor
portbay_browser_navigatebrowseryesyesVisual editor
portbay_browser_closebrowseryesyesVisual editor
portbay_browser_submitbrowseryesyesVisual editor
portbay_browser_snapshotbrowsernoyesVisual editor
portbay_browser_click_refbrowseryesyesVisual editor
portbay_browser_type_refbrowseryesyesVisual editor
portbay_browser_selectbrowseryesyesVisual editor
portbay_browser_keybrowseryesyesVisual editor
portbay_browser_hoverbrowseryesyesVisual editor
portbay_browser_scrollbrowseryesyesVisual editor
portbay_browser_batchbrowseryesyesVisual editor
portbay_browser_fillbrowseryesyesVisual editor
portbay_browser_clickbrowseryesyesVisual editor
portbay_browser_screenshotbrowsernoyesVisual editor
portbay_browser_samplebrowsernoyesVisual editor
portbay_browser_measurebrowsernoyesVisual editor
portbay_browser_canvas_readbrowsernoyesVisual editor
portbay_browser_shell_snapshotbrowsernoyesVisual editor
portbay_observebrowsernoyesVisual editor
portbay_browser_saybrowsernoyesVisual editor
portbay_browser_consolebrowsernoyesVisual editor
portbay_browser_waitbrowsernoyesVisual editor
portbay_browser_findbrowsernoyesVisual editor
portbay_browser_viewportbrowseryesyesVisual editor
portbay_browser_network_capturebrowser-ionoyesVisual editor
portbay_browser_network_requestbrowser-ionoyesVisual editor
portbay_browser_network_routebrowser-ioyesyesVisual editor
portbay_browser_network_unroutebrowser-ioyesyesVisual editor
portbay_browser_cookies_getbrowser-ionoyesVisual editor
portbay_browser_cookies_setbrowser-ioyesyesVisual editor
portbay_browser_cookies_clearbrowser-ioyesyesVisual editor
portbay_browser_storage_getbrowser-ionoyesVisual editor
portbay_browser_storage_setbrowser-ioyesyesVisual editor
portbay_browser_storage_clearbrowser-ioyesyesVisual editor
portbay_browser_framebrowser-ionoyesVisual editor
portbay_browser_dialogbrowser-ioyesyesVisual editor
portbay_browser_downloadbrowser-ioyesyesVisual editor
portbay_browser_uploadbrowser-ioyesyesVisual editor
portbay_browser_dragbrowser-ioyesyesVisual editor
portbay_browser_flickbrowser-ioyesyesVisual editor
portbay_browser_pointerbrowser-ioyesyesVisual editor
portbay_browser_pdfbrowser-ionoyesVisual editor
portbay_browser_http_authbrowser-ioyesyesVisual editor
portbay_browser_clockbrowser-ioyesyesVisual editor
portbay_browser_error_budgetbrowser-ionoyesVisual editor
portbay_browser_fixture_setbrowser-ioyesyesVisual editor
portbay_browser_across_viewportsbrowser-ioyesyesVisual editor
portbay_browser_comparebrowsernoyesVisual editor
portbay_browser_extension_hostsbrowsernoyesVisual editor + extension arm
portbay_browser_extension_openbrowseryesyesVisual editor + extension arm
portbay_browser_extension_statusbrowsernoyesVisual editor + extension arm
portbay_browser_extension_closebrowseryesyesVisual editor + extension arm
portbay_verify_runsverifynonoVisual editor
portbay_editor_working_diffeditornonoVisual editor
portbay_editor_historyeditornonoVisual editor
portbay_editor_restore_previeweditornonoVisual editor
portbay_editor_restoreeditoryesnoVisual editor
portbay_editor_applyeditoryesnoVisual editor
portbay_editor_state_previeweditoryesnoVisual editor
portbay_editor_inspecteditornonoVisual editor
portbay_connector_accountsconnectorsnoyesPro board
portbay_connector_searchconnectorsnoyesPro board
portbay_connector_listconnectorsnoyesPro board
portbay_connector_getconnectorsnoyesPro board
portbay_connector_createconnectorsyesyesPro board
portbay_connector_updateconnectorsyesyesPro board
portbay_connector_commentconnectorsyesyesPro board
portbay_connector_deleteconnectorsyesyesPro board
portbay_connector_sendconnectorsyesyesPro board
portbay_mcp_invokeconnectorsyesyesPro board
portbay_mcp_serversconnectorsnoyesPro board
portbay_task_nexttasksnoyesPro board
portbay_task_gettasksnoyesPro board
portbay_task_schematasksnoyesPro board
portbay_task_createtasksyesyesPro board
portbay_task_acktasksyesyesPro board
portbay_buildtasksyesyesPro board
portbay_task_updatetasksyesyesPro board
portbay_task_edittasksyesyesPro board
portbay_task_assigntasksyesyesPro board
portbay_task_dispatchtasksyesyesPro board
portbay_task_canceltasksyesyesPro board
portbay_task_checktasksyesyesPro board
portbay_task_checklist_addtasksyesyesPro board
portbay_task_commenttasksyesyesPro board
portbay_task_request_exit_approvaltasksyesyesPro board
portbay_session_registertasksyesyesPro board
portbay_session_endtasksyesyesPro board
portbay_sessions_listtasksnoyesPro board
portbay_who_ownstasksnoyesPro board
portbay_commit_checktasksnoyesPro board
portbay_message_sendtasksyesyesPro board
portbay_inboxtasksyes (kept under --read-only)yesPro board
portbay_message_acktasksyesyesPro board
portbay_handoff_gettasksnoyesPro board
portbay_handoff_updatetasksyesyesPro board
portbay_learning_addtasksyesyesPro board
portbay_learning_gettasksnoyesPro board
portbay_task_completetasksyesyesPro board
portbay_tasks_donetasksyesyesPro board
portbay_verification_enqueuetasksyesyesPro board
portbay_verification_nexttasksyesyesPro board
portbay_verification_resolvetasksyesyesPro board
portbay_task_verifytasksyesyesPro board
portbay_delivery_preparedeliveryyesnoPro board
portbay_delivery_statusdeliverynonoPro board
portbay_delivery_startdeliveryyesnoPro board
portbay_delivery_resumedeliveryyesnoPro board
portbay_delivery_canceldeliveryyesnoPro board
portbay_browser_a11ybrowser-ionoyesVisual editor
portbay_browser_profile_resetbrowser-ioyesyesVisual editor

The mutating flag has three readers, and they must agree ​

TOOL_REGISTRY's third field answers one question — does calling this tool change state? — and the tool's own annotations(read_only_hint = …) answers the same one. --read-only route filtering reads the first, voice_bridge::classify_tool_risk and every MCP client read the second, and context::automation::gates::ipc reads both and refuses on a disagreement rather than taking the permissive reading.

Of 272 registry rows, 272 carry a read_only_hint annotation in server.rs and 0 disagree with is_mutating.

Mutating, and kept under --read-only anyway ​

READ_ONLY_RETAINED is the seam for a routing exemption, so that no tool has to be registered non-mutating — a false behavioural claim every other reader of the flag would then believe.

ToolWhy
portbay_inboxreading delivers, so it writes — but a read-only session must still be able to collect a warning another session sent it, and the write is confined to the delivery state of that session's own messages

What a client sees at boot ​

With --dynamic-toolsets (the default), tools/list does not start with the surface above. It starts with the bootstrap tools — which are not registry rows, and so are in none of the counts on this page — plus any toolset pre-enabled through PORTBAY_MCP_BOOT_TOOLSETS. Everything else is reachable in the same session through portbay_enable_toolset.

Bootstrap tool
portbay_enable_toolset
portbay_list_toolsets
portbay_search_tools

Without --dynamic-toolsets, the default surface is listed up front and an opt-in toolset is reachable only by naming it at startup.

Two definitions of the open-source surface ​

A tool is in the OSS build if its row carries no #[cfg] gate. ADVERTISED_OSS_TOOL_COUNT and the counts on Tool Reference are derived a second way — by toolset, from BOARD_OVERLAY_GROUPS and EDITOR_OVERLAY_GROUPS, with anything in neither list counted as OSS. The two can disagree, and where they do the #[cfg] is the one the compiler obeys.

By toolset partition: 123 OSS, 85 Pro board, 64 visual editor. By #[cfg]: 118 OSS.

5 tool(s) are counted as open-source by the toolset partition but are not compiled into an open-source build:

ToolToolsetGated on
portbay_delivery_preparedeliverytasks
portbay_delivery_statusdeliverytasks
portbay_delivery_startdeliverytasks
portbay_delivery_resumedeliverytasks
portbay_delivery_canceldeliverytasks

Toolsets in detail ​

Each description below is the toolset's own doc comment in server.rs, reproduced rather than rewritten.

projects ​

ToolGroup::Projects · 13 tools · on the default surface

Registry CRUD + setup: list, status, detect, add, update, remove, export, import, setup.

portbay_list_projects, portbay_status, portbay_target, portbay_detect_project, portbay_detect_workspace_apps, portbay_list_recipes, portbay_setup_from_recipe, portbay_add_project, portbay_update_project, portbay_remove_project, portbay_export_config, portbay_import_config, portbay_setup

lifecycle ​

ToolGroup::Lifecycle · 4 tools · on the default surface

start, stop, restart, stop_all.

portbay_start, portbay_stop, portbay_restart, portbay_stop_all

diagnostics ​

ToolGroup::Diagnostics · 4 tools · on the default surface

logs, doctor, sidecar_status.

portbay_logs, portbay_doctor, portbay_release_preflight, portbay_sidecar_status

scaffold ​

ToolGroup::Scaffold · 1 tool · on the default surface

setup_from_template — runs upstream scaffolders (network access).

portbay_setup_from_template

groups ​

ToolGroup::Groups · 7 tools · on the default surface

Group CRUD + batch lifecycle: list, create, update, remove, start, stop, restart.

portbay_list_groups, portbay_create_group, portbay_update_group, portbay_remove_group, portbay_start_group, portbay_stop_group, portbay_restart_group

tunnels ​

ToolGroup::Tunnels · 5 tools · on the default surface

Read-only tunnel visibility: list active public tunnels, look up one by id, and list saved SSH connections (hosts). No remote execution lives here — that is the deliberately separate [ToolGroup::SshExec].

portbay_list_tunnels, portbay_tunnel_status, portbay_list_ssh_tunnels, portbay_ssh_tunnel_status, portbay_list_ssh_connections

ssh-exec ​

ToolGroup::SshExec · 15 tools · opt-in

Remote command execution on a saved SSH host (portbay_ssh_execute), plus the read-only alias directory that names the hosts it can run on (portbay_remote_hosts_list). Held apart from every other group and deliberately excluded from [ToolGroup::all] (so it is off even under --toolsets all): an operator must name ssh-exec explicitly to expose it. That explicit enablement is the consent gesture — PortBay's in-app "Run is the approval" model, expressed at the toolset boundary. Execute is mutating, so read-only mode strips it too; the alias list survives read-only.

portbay_ssh_execute, portbay_remote_exec, portbay_remote_files_list, portbay_remote_file_read, portbay_remote_file_write, portbay_deploy, portbay_deploy_status, portbay_deploy_recipes_list, portbay_deploy_rollback, portbay_remote_hosts_list, portbay_project_deploy_target, portbay_remote_env_check, portbay_deploy_snippets_list, portbay_deploy_snippet_save, portbay_deploy_snippet_run

runtimes ​

ToolGroup::Runtimes · 4 tools · on the default surface

Runtime management: list detected versions, set defaults, add/remove manual paths.

portbay_list_runtimes, portbay_set_default_runtime, portbay_add_runtime_path, portbay_remove_runtime_path

databases ​

ToolGroup::Databases · 15 tools · on the default surface

Database engines + owned instances: list, create, lifecycle, link, auto-start.

portbay_list_database_engines, portbay_list_databases, portbay_database_connection, portbay_db_schema, portbay_db_query, portbay_db_explain, portbay_db_execute, portbay_create_database, portbay_remove_database, portbay_start_database, portbay_stop_database, portbay_restart_database, portbay_link_database, portbay_unlink_database, portbay_set_database_auto_start

dns ​

ToolGroup::Dns · 3 tools · on the default surface

DNS / domains: resolver status, DNS records, domain-suffix change.

portbay_dns_status, portbay_list_dns_records, portbay_set_domain_suffix

sandbox ​

ToolGroup::Sandbox · 4 tools · on the default surface

Sandboxed Run (macOS Seatbelt): status, enable, disable, violations.

portbay_sandbox_status, portbay_sandbox_violations, portbay_enable_sandbox, portbay_disable_sandbox

inspector ​

ToolGroup::Inspector · 2 tools · on the default surface

HTTP request inspector: recent Caddy requests, clear the log, replay (replay is app-only from this tool — see its description).

portbay_recent_requests, portbay_clear_requests

certs ​

ToolGroup::Certs · 3 tools · on the default surface

Local-HTTPS certificates: per-project cert info, reissue.

portbay_cert_info, portbay_reissue_cert, portbay_ensure_https

migrate ​

ToolGroup::Migrate · 3 tools · opt-in

Migration import from other local-dev tools (Herd / ServBay / MAMP): detect sources, preview their sites, import into the registry.

Opt-in — left out of [ToolGroup::all] and named explicitly (migrate). Purely a cost decision, not a consent one: migrating off Herd/ServBay/MAMP happens ONCE per machine, in practice through the app's own migration screen, and the three tools cost ~480 tokens of tools/list on every session forever — including the overwhelming majority that have nothing left to migrate. Same reasoning as [ToolGroup::SecretsTransfer]'s cost half: a tool nobody calls is not free, it is the most expensive kind of tool there is.

portbay_detect_import_sources, portbay_preview_import, portbay_import_projects

secrets ​

ToolGroup::Secrets · 14 tools · on the default surface

PortBay's local secrets vault: set/list/status/validate/import/delete per-project secrets. Every write is write-only — a value is never echoed back by any tool in this group, only names and metadata.

portbay_secret_set, portbay_secrets_set, portbay_secrets_list, portbay_secret_status, portbay_secret_validate, portbay_secrets_import, portbay_secret_delete, portbay_secret_rotate, portbay_secret_reveal, portbay_secret_adopt, portbay_deployment_prepare, portbay_deployment_stage, portbay_deployment_apply, portbay_deployment_rollback

secrets-transfer ​

ToolGroup::SecretsTransfer · 2 tools · opt-in

Bulk secret transfer between PortBay's vault and an EXTERNAL secret manager: portbay_secrets_import_from (pull every secret in) and portbay_secrets_export_to (push every secret out).

Opt-in like [ToolGroup::SshExec] — left out of [ToolGroup::all] (off even under --toolsets all) and named explicitly (secrets-transfer). Two reasons, and both are load-bearing:

  • Cost. These two carry the largest argument schemas on the whole surface — a provider enum plus every provider's own config fields, ~2,514 tokens between them. That was charged to every session in static mode, including the overwhelming majority that never move a secret anywhere. A tool nobody calls is not free; it is the most expensive kind of tool there is.
  • Consent. export_to EXFILTRATES every configured value off this machine (it is already human-approval gated at the call — see gate_secret_op's SecretOp::Export). Naming the toolset is the same "the operator asked for this" gesture ssh-exec requires, one layer earlier.

The vault's own per-secret tools stay on the default surface under [ToolGroup::Secrets]: a session that needs to set or read the status of one secret is ordinary work, where moving the whole vault is not.

portbay_secrets_import_from, portbay_secrets_export_to

tasks ​

ToolGroup::Tasks · 35 tools · on the default surface

Per-project task board + session hand-off: list/next/create/ack/update cards, read/append the rolling hand-off log. The live channel into PortBay's canonical task model.

portbay_tasks_list, portbay_connectors_status, portbay_task_next, portbay_task_get, portbay_task_schema, portbay_task_create, portbay_task_ack, portbay_build, portbay_task_update, portbay_task_edit, portbay_task_assign, portbay_task_dispatch, portbay_task_cancel, portbay_task_check, portbay_task_checklist_add, portbay_task_comment, portbay_task_request_exit_approval, portbay_session_register, portbay_session_end, portbay_sessions_list, portbay_who_owns, portbay_commit_check, portbay_message_send, portbay_inbox, portbay_message_ack, portbay_handoff_get, portbay_handoff_update, portbay_learning_add, portbay_learning_get, portbay_task_complete, portbay_tasks_done, portbay_verification_enqueue, portbay_verification_next, portbay_verification_resolve, portbay_task_verify

connectors ​

ToolGroup::Connectors · 11 tools · on the default surface

External business/task systems connected to PortBay. Reads are free; writes self-gate through the connector approval queue.

portbay_connector_accounts, portbay_connector_search, portbay_connector_list, portbay_connector_get, portbay_connector_create, portbay_connector_update, portbay_connector_comment, portbay_connector_delete, portbay_connector_send, portbay_mcp_invoke, portbay_mcp_servers

capture ​

ToolGroup::Capture · 4 tools · opt-in

Screen capture: read-only capture history + (approval-gated) programmatic screenshot / OCR. Like [ToolGroup::SshExec] this is opt-in — left out of [ToolGroup::all] (off even under --toolsets all) and named explicitly (capture). An agent reading the user's live screen is privacy-sensitive, so screen-grab/OCR are mutating + approval-gated; the history view tools are read-only.

portbay_capture_history, portbay_capture_get, portbay_capture_screen, portbay_capture_ocr

workflows ​

ToolGroup::Workflows · 36 tools · opt-in

Outcome workflow recipes + local case files. Opt-in for dispatches that select a recipe or explicitly enable workflow tools.

portbay_workflow_list, portbay_workflow_plan, portbay_workflow_start, portbay_workflow_generate, portbay_workflow_author, portbay_workflow_edit, portbay_workflow_validate_graph, portbay_workflow_recipe_validate, portbay_workflow_recipe_save, portbay_workflow_run, portbay_workflow_run_card, portbay_workflow_run_snapshot, portbay_workflow_run_list, portbay_workflow_run_get, portbay_run_search, portbay_workflow_stop, portbay_workflow_review_resolve, portbay_workflow_step_resolve, portbay_workflow_trigger_save, portbay_workflow_trigger_list, portbay_workflow_trigger_delete, portbay_workflow_trigger_set_enabled, portbay_workflow_capabilities, portbay_workflow_dry_run, portbay_workflow_preflight, portbay_workflow_fixture_run, portbay_workflow_recipe_get, portbay_workflow_recipe_delete, portbay_workflow_recipe_versions, portbay_workflow_recipe_version_get, portbay_workflow_recipe_restore, portbay_workflow_run_step_log, portbay_workflow_step_retry, portbay_case_file_get, portbay_case_file_append, portbay_workflow_tool_schema

browser ​

ToolGroup::Browser · 31 tools · on the default surface

Visible browser companion sessions on a PortBay-managed Chrome profile. Included in [ToolGroup::all] so it appears in portbay_list_toolsets by default: an agent can call portbay_enable_toolset browser without the operator naming it at startup. The toolset is still not auto-enabled: dynamic mode hides it behind portbay_enable_toolset like every other group. Safety invariants (origin guard, credential deny-list, submit approval) are enforced at the op layer regardless. Available only when compiled with tasks + visual-editor features.

It also holds the four portbay_browser_extension_* tools — the SECOND driver arm, the person's own signed-in browser through the PortBay Browser Agent extension — which additionally need extension-driver and so live in their own router. They are here rather than in [ToolGroup::BrowserIo] because that split defers tools which act on a session already open, and these are how a session on that arm comes to exist: an agent that enabled browser and could not see them would have no reachable way to say "drive the browser I am signed into".

portbay_browser_sessions, portbay_browser_open, portbay_browser_navigate, portbay_browser_close, portbay_browser_submit, portbay_browser_snapshot, portbay_browser_click_ref, portbay_browser_type_ref, portbay_browser_select, portbay_browser_key, portbay_browser_hover, portbay_browser_scroll, portbay_browser_batch, portbay_browser_fill, portbay_browser_click, portbay_browser_screenshot, portbay_browser_sample, portbay_browser_measure, portbay_browser_canvas_read, portbay_browser_shell_snapshot, portbay_observe, portbay_browser_say, portbay_browser_console, portbay_browser_wait, portbay_browser_find, portbay_browser_viewport, portbay_browser_compare, portbay_browser_extension_hosts, portbay_browser_extension_open, portbay_browser_extension_status, portbay_browser_extension_close

browser-io ​

ToolGroup::BrowserIo · 25 tools · on the default surface

The browser companion's STATE and WIRE half: cookies, Web Storage, network capture / mocking, frames, dialogs, file download and upload, and drag.

Split out of [ToolGroup::Browser] for cost, not for consent. Enabling the browser toolset was measured at 9,217 tokens for a 30-tool group — 77% of that session's entire tool surface — and these fifteen are 3,268 of it while most browser work (open, snapshot, click, type, read) never touches one. Deferring them takes the first enable_toolset browser down by a third and loses no capability at all: a second portbay_enable_toolset browser-io gets every one of them back, in the same session, against the same session id. This is the split Playwright MCP ships (23 of its 68 are on by default, the rest behind --caps), except that theirs is decided at launch and this one is decided when the need appears.

It is not a second ceiling. PORTBAY_MCP_TOOLSETS admits it wherever it admits browser (see [ToolGroup::admitted_by]), because nothing about the exposure changed — same managed profile, same origin allowlist, same approval gate, same credential refusal. A group that had to be named separately would silently drop fifteen tools from every config already written, and would put a cost decision into a vocabulary that is about consent.

portbay_browser_network_capture, portbay_browser_network_request, portbay_browser_network_route, portbay_browser_network_unroute, portbay_browser_cookies_get, portbay_browser_cookies_set, portbay_browser_cookies_clear, portbay_browser_storage_get, portbay_browser_storage_set, portbay_browser_storage_clear, portbay_browser_frame, portbay_browser_dialog, portbay_browser_download, portbay_browser_upload, portbay_browser_drag, portbay_browser_flick, portbay_browser_pointer, portbay_browser_pdf, portbay_browser_http_auth, portbay_browser_clock, portbay_browser_error_budget, portbay_browser_fixture_set, portbay_browser_across_viewports, portbay_browser_a11y, portbay_browser_profile_reset

imagegen ​

ToolGroup::Imagegen · 2 tools · opt-in

On-device image generation (the portbay-imagegen diffusion sidecar). Opt-in — left out of [ToolGroup::all] (off even under --toolsets all) and named explicitly (imagegen). Kept opt-in because it is macOS-only, needs a multi-GB model downloaded first, and a diffusion run can burn GPU minutes — not something to expose by default. The prompt and image never leave the machine.

portbay_imagegen_models, portbay_imagegen_generate

stt ​

ToolGroup::Stt · 2 tools · opt-in

On-device speech-to-text: transcribe an existing audio file (the portbay-stt sidecar's transcribe-file op). Opt-in like [ToolGroup::Imagegen] — macOS-only and model-dependent, so it is left out of [ToolGroup::all] and named explicitly (stt). The audio never leaves the machine.

portbay_stt_models, portbay_stt_transcribe

tts ​

ToolGroup::Tts · 1 tool · opt-in

On-device text-to-speech: synthesize speech from text into an audio FILE (the portbay-stt sidecar's tts-synthesize op on macOS, a system piper install on Linux). Opt-in like [ToolGroup::Stt], and deliberately NOT folded into it: transcription reads a file the caller already has and writes nothing, while synthesis produces one, needs a voice pack downloaded first, and can hold the engine for minutes. Enabling one must not enable the other. The text never leaves the machine, and the result is a file handle — audio bytes in a step's output are a payload every downstream step pays for and no model can listen to.

portbay_tts_speak

websearch ​

ToolGroup::Websearch · 3 tools · opt-in

Web search through PortBay's pluggable search providers (DuckDuckGo / SearXNG keyless, Tavily / Brave keyed). Opt-in like [ToolGroup::Imagegen] and [ToolGroup::Stt] — left out of [ToolGroup::all] (off even under --toolsets all) and named explicitly (websearch). Kept opt-in for the same reason the commands::websearch seam is guarded by egress_policy: the query text leaves the machine to a third-party engine, and the Tavily/Brave lanes spend a metered API key. The tool itself is read-only — it fetches and normalises results and writes nothing.

portbay_web_search, portbay_web_search_and_scrape, portbay_extract_page

verify ​

ToolGroup::Verify · 1 tool · opt-in

Read-only run summaries from the Pro visual editor's Tier-2 auto-verify loop (P2.3). Opt-in like [ToolGroup::Browser] — left out of [ToolGroup::all] and named explicitly (verify); only meaningful on a tasks + visual-editor build.

portbay_verify_runs

editor ​

ToolGroup::Editor · 7 tools · opt-in

Read-only inspection of the Pro visual editor's persisted state for a BYO-agent (P2.4): the staged working diff and the visual-edit history ledger. Opt-in like [ToolGroup::Verify] — left out of [ToolGroup::all] and named explicitly (editor); only meaningful on a tasks + visual-editor build. Live-page control (selection, query, screenshot, apply) is deferred — the stdio MCP sidecar cannot reach the app-process LivePreviewState channel; see the P2.4 design note.

portbay_editor_working_diff, portbay_editor_history, portbay_editor_restore_preview, portbay_editor_restore, portbay_editor_apply, portbay_editor_state_preview, portbay_editor_inspect

delivery ​

ToolGroup::Delivery · 5 tools · opt-in

The board-level delivery pipeline: plan a delivery from the Done column, run it, read it, resume it, cancel it.

Opt-in, and on consent rather than cost — left out of [ToolGroup::all] (off even under --toolsets all) and named explicitly (delivery). One call here merges branches, pushes to a remote, invokes a configured deploy and deletes landed branches. An agent must not inherit that authority merely because it can edit a card: one that should be able to ship asks for this toolset, and one that should not, cannot reach it. Only meaningful on a tasks build.

portbay_delivery_prepare, portbay_delivery_status, portbay_delivery_start, portbay_delivery_resume, portbay_delivery_cancel

ssh-ops ​

ToolGroup::SshOps · 10 tools · opt-in

SSH-OPS views of a saved host (capabilities, Docker, systemd services, health, security, exposure, backups, PaaS and Kubernetes reports, one container's redacted inspect, a bounded log tail) and the typed actions an assigned agent runs under its task grant.

Opt-in — left out of [ToolGroup::all] (off even under --toolsets all) and named explicitly (ssh-ops). No view changes a host, but every call opens a session with the stored credentials and runs a probe on someone's server, which is the same "the operator asked for this" gesture as ssh-exec. It is a separate group so an agent can be given the means to inspect and verify a host without the means to run arbitrary commands on it.

The actions an assigned agent needs to finish and verify host work run under the caller's task grant, which no tool here can create or widen, and only in shapes PortBay builds: start/stop/restart a container, restart a systemd service, preview and apply a guided hardening fix, a one-shot pod exec, a Kubernetes debug container, and Kubernetes discovery as root.

portbay_ssh_host_view, portbay_ssh_container_inspect, portbay_ssh_logs_tail, portbay_ssh_kube_exec, portbay_ssh_kube_debug, portbay_ssh_kube_read_as_root, portbay_ssh_container_action, portbay_ssh_service_restart, portbay_ssh_hardening_preview, portbay_ssh_hardening_apply

Was this helpful?
Feedback

PortBay is pre-MVP software. Use the docs as an operating guide, not a stability guarantee.