All docs

Capability packs

Document version: 1.3

Source docs/en/site/mech-capability-pack.md

Document version: 1.3 Status: Matches current backend (capability, workspace_capabilities API, conversation tool gating) Voice: For product, operations, and admins — what workspace “assistant capability packs” are and how they map to assistant tools. Implementation names: Implementation mapping.

Related:


1. Up front

An assistant capability pack is a switch workspace admins turn on for members: tool-class capabilities the assistant may call in Messages. It is not equal to one tool function: one pack may map to several tools, or only extend how existing tools behave.

Cadau uses three layers:

LayerUser languageDuty
Capability packAssistant capability packTurn on, validity window, audit and billing grain
Tool(not user-visible)Function-call primitives exposed to the model
Implementation(not user-visible)Built-in module / MCP plugin / business adapter

Hard rules:

  • New capabilities prefer hanging on existing tools; add a new tool only when the governance boundary is independent.
  • Pipeline capabilities (vision, knowledge-document injection, skill recall, memory retrieval) do not enter capability packs by default, unless they need a separate turn-on or a compliance gate.

2. Existing capability packs

2.1 basic_documents — basic document tools

DimensionConvention
User valueMembers can have the assistant read/organize Markdown, plain text, and similar, and export downloadable files
DefaultNew workspaces on by default
Mapped toolsfile_read + file_write
Mapped implementationBuilt-in agentfile + attachmenttext (text types)
Write formats.md .txt .csv .json; one file ≤ 512 KiB
Off / expiredTools do not appear in the schema; the assistant should explain the limit

2.2 office_documents — office document tools

DimensionConvention
User valueThe assistant can read PDF, Word, Excel, PPT attachments, create or edit .docx/.xlsx/.pptx, and generate laid-out .pdf
DefaultOff by default
Mapped toolsNo new tool name (extends file_read); office_document (read/write Office; build_pdf generates PDF)
Mapped implementationRead: attachmenttext + OfficeCLI view (Excel pages by row so whole-sheet JSON is not cut in half); write/edit: OfficeCLI (create/merge/set/add and similar); PDF generate: built-in gopdf (build_pdf, not via OfficeCLI)
Prerequisitebasic_documents must be in force at the same time
Platform switchAGENT_OFFICECLI_TOOL_ENABLED; the server must have OfficeCLI installed (MINDLINK_OFFICECLI or PATH)
When offfile_read returns a clear error for office extensions; office_document does not appear in the schema

Turning off basic document tools automatically cascades office document read off.

2.3 http_integration — network requests

DimensionConvention
User valueThe assistant can call business APIs as skill notes describe
DefaultOff by default
Mapped toolshttp_request
Mapped implementationBuilt-in agenthttp (site policy, SSRF protection)
Dual gateWorkspace capability pack and server AGENT_HTTP_TOOL_ENABLED
Site policyWorkspace allowlist / platform filed list / public internet (needs platform permission)
Member overrideAdmins may set network scope per member (inherit or tighten)
CollaborationWorkspace skills, permissions.tools: [http_request]

Do not split a tool per business API; business path and auth are described in the skill operations body.

2.4 code_execution — script execution

DimensionConvention
User valueThe assistant can run Python under skill scripts/; when built-in tools are not enough, after admin allow, install libraries, write code, and deposit a skill for reuse
DefaultOff by default
Mapped toolsrun_script, skill_script_write
Mapped implementationBuilt-in agentscript (sandbox, timeout, outputs registered as uploads)
Prerequisitebasic_documents must be in force at the same time; editing existing Office attachments should also have office_documents on
Member policyworkspace_members.script_policy_json: inherit / forbid / grant separately (skill slug, temp scripts, and similar)
Platform switchAGENT_SCRIPT_TOOL_ENABLED / agent_script_tool.enabled
CollaborationWorkspace skills, permissions.tools: [run_script] or body ## 脚本执行
Install librariesLibraries the platform already allows can install directly. Others: the assistant must say “library name / what it can do / which current problem it solves”: the admin allows on the spot, or a member applies to an admin. After approve, write into this workspace’s allowlist. In-script pip install is forbidden. Do not generate .xlsx / .docx / .pptx / .pdf with Python (use office_document).
ReuseAfter a successful run, deposit a workspace skill (scripts/ + dependencies); later similar conversations prefer running the existing script

2.5 data_integration — data connections (data integration)

DimensionConvention
User valueMembers look up MySQL, PostgreSQL, SQL Server and similar business DBs already authorized in the workspace; admins configure connections, predefined queries, and controlled mutations
DefaultOff by default
Mapped toolsdata_source_invoke (read-only + controlled mutation share one tool name)
Mapped implementationBuilt-in datasource + store (encrypted connections, data resources, member grants, mutation approval)
Read-only actionsping, schema.tables, schema.columns, table.preview, query.list, query.run
Mutation actionsmutation.list, mutation.submit, mutation.approve / mutation.reject
SQL constraintsNo ad-hoc SQL; read-only uses predefined queries or table preview; writes use mutation definitions
Table preview rowsDefault 200 rows, hard cap 500 per call (mindlink.jsondata_source_tool.default_preview_max_rows / absolute_preview_max_rows)
Member policyData resources + who can use: tick readable tables/queries and CUD rights per member
Dual gateWorkspace capability pack and server AGENT_DATA_SOURCE_TOOL_ENABLED / data_source_tool.enabled
Host allowlistPlatform data_source_tool.allow_hosts (empty means no limit in development)
CollaborationWorkspace skills, permissions.tools: [data_source_invoke]; after saving a connection, generate a skill to sync query notes
Binary/photosImage BLOBs in query results land as attachments, returning upload_id / download_url; conversation shows mindlink://upload/{id}, can embed in Office
Off / expiredTool does not appear in the schema; the assistant should explain the limit

Admin sub-features (user-side entry is the whole Data connections page, same shell as the knowledge base): Data connections, Data resources, Who can use, Mutation definitions, Mutation approval.

2.6 data_visualization — data charts

DimensionConvention
User valueThe assistant generates bar/line/pie PNG charts in conversation, downloadable or embeddable in Office
DefaultOff by default
Mapped toolschart
Mapped implementationBuilt-in agentchart (matplotlib render → register as upload)
Prerequisitebasic_documents must be in force at the same time (DataVisualizationActive)
Platform switchNo separate platform section; depends on workspace turn-on and a Python/matplotlib runtime (Docker image already includes Python 3)
CollaborationWorkspace skills, permissions.tools: [chart]; embedding in PPT/Word uses office_document + image_upload_id
Numbers vs chartsWhen the workspace also has data integration on: business-report numbers must come from data_source_invoke; user-attached images default to layout/leader-line reference only; copying numbers off the screenshot is forbidden (except the user clearly asks to “digitize from the screenshot”)
When offchart does not appear in the schema

Turning off basic document tools automatically cascades data charts off.

2.7 wecom_integration — WeCom

DimensionConvention
User valueService notices and scheduled tasks can push to personal WeCom; the assistant can operate contacts, app messages, to-dos, calendar, meetings, docs, smart sheets, WeDrive, mail, and read-only query approvals and leave
DefaultOff by default
Mapped toolswecom_list_methods, wecom_invoke
Mapped implementationBuilt-in wecom (self-built app CorpID + AgentID + Secret, stored encrypted)
Dual gateWorkspace capability pack and server AGENT_WECOM_TOOL_ENABLED / agent_wecom_tool.enabled
PushIn-site notices also send an app card; after a scheduled auto-run succeeds, an extra summary may be pushed (task switch notify_wecom, on by default when the member is bound)
Not doneConversation archive (colleague DMs), submitting approvals on someone’s behalf, changing leave balances, DingTalk/Feishu/email channels, changing the WeCom “app admin” console
Approvals/leaveIn WeCom App admin → Approvals detail, tap “Apps that can call APIs” → “Settings” to authorize this app (do not tap the API next to the title); query window at most 31 days
Off / expiredTools do not appear in the schema; conversation does not treat WeCom as an optional push channel

3. Capability-pack relations

flowchart LR
  subgraph packs [Workspace capability packs]
    B[basic_documents]
    O[office_documents]
    H[http_integration]
    CE[code_execution]
    DI[data_integration]
    DV[data_visualization]
    WC[wecom_integration]
  end
  subgraph tools [Model tools]
    FR[file_read]
    FW[file_write]
    OD[office_document]
    HTTP[http_request]
    RS[run_script]
    DS[data_source_invoke]
    CH[chart]
    W1[wecom_list_methods]
    W2[wecom_invoke]
  end
  B --> FR
  B --> FW
  O --> FR
  O --> OD
  H --> HTTP
  CE --> RS
  B --> CE
  DI --> DS
  B --> DV
  DV --> CH
  WC --> W1
  WC --> W2
Capability packPrerequisite
basic_documentsNone
office_documentsbasic_documents (in force together)
http_integrationNone (strongly related to skills/site config)
code_executionbasic_documents (in force together)
data_integrationNone (strongly related to data-connection / data-resource config)
data_visualizationbasic_documents (in force together)
wecom_integrationNone (must configure self-built app credentials and bind members to push/operate)

4. Baseline capabilities that are not capability packs

User agents in Messages have these by default (except help-assistant mode):

CapabilityTypeNote
Structured memoryToolmemory_search / memory_get
MemosToolmemo_save / memo_search and similar; not auto-injected; called only when the user clearly wants to look up/save
Multimodal visionPipelineMessage image_url injection, not a function call
Knowledge basePipelineRetrieve and inject by agent/workspace config
Workspace skill recallPipelineInject operations material after match
Conversation-deposited skillsPipeline + APITriggered by user wording; product lives in the Skills center

Capability packs mainly cover behavior that may go outbound or needs a separate compliance approval.


5. MCP and plugin access rules

SceneSuggestion
Replace an HTTP backendAdapt MCP to the same http_request schema; the workspace still uses http_integration
Replace Office parseHang on the file_read implementation chain; the workspace still uses office_documents
New business APIPrefer skill + http_request, no new tool
Must add a new toolAlso add a capability pack, audit, and permissions.tools declaration
Platform plugin modules (§4.2.4)Usually app-desktop iframe business apps (see 平台插件SDK.md ); need not 1:1 with conversation-tool capability packs. Pure conversation API capabilities do not register platform_plugins; follow this table “new business API → skill + http_request

6. Phase-2 candidates (pre-registered)

Candidate IDUser languageSuggested mappingWhy turn on separately
wiki_knowledgeStructured knowledge basewiki_search + wiki_getSeparate from free memory, needs provenance
enterprise_searchEnterprise searchReuse http_request or a dedicated search toolSplit only when schema differs a lot from HTTP

7. Admin UI convention

ItemCopy
Section titleAssistant capability packs
Admin noteTurn on assistant tool capabilities for this workspace; set validity and network sites
Member noteSee what is on; apply when off or expired
Technical master switchesAGENT_HTTP_TOOL_ENABLED, AGENT_DATA_SOURCE_TOOL_ENABLED, AGENT_SCRIPT_TOOL_ENABLED, AGENT_WECOM_TOOL_ENABLED, and similar live in admin docs, not on members’ first screen

8. Implementation mapping

User conceptImplementation
Capability-pack JSONworkspaces.capabilities_json
Parse and dependenciescapability.ParseWorkspace, ValidateWorkspaceDependencies, NormalizeWorkspaceDependencies
Office runtimeWorkspace.OfficeDocumentsActive
Tool gatingchat.gofileToolContext, dataSourceToolContext, workspaceCapsForAgent; agenttool.RunAgentToolLoop
Member script policyscript_policy_json, ResolveEffectiveScriptPolicy, GET/PATCH .../script-policy
Duty grantsworkspace_duties / workspace_duty_pack_grants; once a sensitive pack has duty grants, ordinary members without a grant no longer get it by default (admins excepted; personal “disable” still wins)
Data connections and grantsworkspace_data_sources, workspace_data_datasets, workspace_member_data_source_grants; datasource.Invoke, store.ResolveUserDataSourceAccess
Controlled mutationsworkspace_data_mutations, data_mutation_requests; datasource.PreviewMutation / ExecuteMutation
Data chartsagentchart.Render; gate wsCaps.DataVisualizationActive
WeComwecom.Invoke / wecom.AfterNotificationInserted; gate wecom_integration + AGENT_WECOM_TOOL_ENABLED
Admin APIGET/PATCH /api/v1/workspaces/:id/capabilities; .../data-sources, data-resource and mutation REST
Capability applicationsworkspace_capability_request handler
Front endWorkspaceCapabilitiesPanel.tsx, WorkspaceDataIntegrationWorkspace.tsx, DataIntegrationPanel.tsx, capabilityPackDefs.ts

9. Decision checklist when extending a pack

  1. Does an admin need to turn it on separately? No → pipeline capability.
  2. Can it reuse an existing tool? Yes → extend the implementation only.
  3. Is it high-risk / outbound? Yes → independent capability pack + audit.
  4. Is it only one business API? Yes → skill + http_request.
  5. After MCP is connected, does the user-visible tool name stay the same? Prefer yes.