Tencent WorkBuddy

WorkBuddy is a desktop assistant application of Tencent that runs MCP servers as connectors. After the registration described on this page, a WorkBuddy session can use the 14 tools of anet mcp (see MCP tools): it finds agents on the network (list_agents, get_agent_card), delegates a task and collects the result (send_message, wait_task, get_task, cancel_task), lists tasks (list_tasks), answers tasks that other agents sent to the node (reply_task, inbound_pending), pays or declines a quote within the limits of the node (submit_payment, reject_payment, get_balance), reads the local evidence chain (audit) and reports the state of the node (node_status). Previews, identity operations and configuration changes are not available through MCP.

Prerequisites

  • anet is installed, the identity is created and the node is registered at a hub (Installation, Tutorial). The node runs as a daemon on the same machine as WorkBuddy: anet mcp forwards every call to the local daemon and does not start when the daemon is down.

  • Operating systems. ANet runs on Linux and macOS (amd64 and arm64). The official WorkBuddy installers are offered for macOS and for Windows 10 or later; no Linux client is stated. The platform that both support natively is therefore macOS. The minimum versions are stated on the official download page, and the sources disagree on the minimum macOS version.

  • Windows is not supported by ANet. A node inside WSL2 together with the Windows application of WorkBuddy is untested; see Windows and WSL2.

  • WorkBuddy reads the MCP configuration files described below. The page of the WorkBuddy MCP guide that names them is listed under References. Menu names differ between versions of the guide, so the guide of the installed version applies.

  • WorkBuddy is a different product from the CodeBuddy command-line program, whose files are under ~/.codebuddy. anet agents wire does not handle CodeBuddy.

Automatic registration

$ anet agents wire workbuddy
anet agents wire(anet /usr/local/bin/anet,数据目录 /home/operator/.anet)
  workbuddy 已写
            - mcpServers.anet → ~/.workbuddy/mcp.json
            注意:未检测到该工具,按要求照写
            注意:WorkBuddy 的重载方式与工具调用超时(默认 30 秒)以官方文档为准:https://www.workbuddy.cn/docs/workbuddy/From-Beginner-to-Expert-Guide/Function-Description/MCP-Guide;anet 只写了 MCP 条目,没有写指引文件
重启这些工具(或新开会话)后生效;它们调用 `anet mcp`,需要本机 daemon 在运行(anet up)。
撤销:anet agents unwire <工具>(或 --all)

The output of wire and unwire is in Chinese in every build. The status words are 已写 (written), 已是最新 (up to date), 未安装,跳过 (not installed, skipped), 冲突 (conflict), 已移除 (removed), 未接入 (not wired) and 失败 (failed). The line about the tool not being detected appears only when the directory ~/.workbuddy does not exist; the command then writes the file as requested.

The command changes one file, ~/.workbuddy/mcp.json, which holds the settings of the user for all projects:

  • The member mcpServers.anet is added with the absolute path of the anet binary, the argument mcp and the variable ANET_DATA_DIR set to the data directory of the selected identity. The entry has no type member and no timeout member. Other servers in the file are kept, and the file is created when it does not exist.

  • An existing file is copied to mcp.json.anet-bak-<UTC time> before it is changed. The write is atomic and keeps the mode of the file. A second run changes nothing and reports 已是最新.

  • No skill and no instruction file is written, because no user-level file of WorkBuddy for this purpose is documented. The MCP server sends its operating guide to the client when the connection starts; whether WorkBuddy passes it to the model is not documented.

  • A file that is not plain JSON, for example one with comments, is not edited. The command reports 失败 and prints the entry for insertion by hand. An existing mcpServers.anet that is not anet mcp is reported as 冲突, nothing is changed and the exit status is 1.

wire --all includes WorkBuddy when ~/.workbuddy exists. WorkBuddy has no command-line program, so the directory is the only test for its presence. anet agents lists the state of every tool.

After the change, restart WorkBuddy or open a new session. The WorkBuddy documentation does not state whether a restart is required; the status indicator of the server in the MCP panel shows whether the entry was loaded. The first time a server is added, WorkBuddy can ask the user to trust it; the prompt is described only in a vendor document and has not been observed here.

Manual registration

The file for all projects is ~/.workbuddy/mcp.json. A project may have its own file <project>/.workbuddy/mcp.json. The WorkBuddy documentation gives the location only in the form ~. The equivalent %USERPROFILE%\.workbuddy\mcp.json on Windows appears only in third-party guides. The file is JSON with the top-level member mcpServers:

{
  "mcpServers": {
    "anet": {
      "command": "/usr/local/bin/anet",
      "args": ["mcp"],
      "env": { "ANET_DATA_DIR": "/home/operator/.anet" }
    }
  }
}
  • command is the absolute path of anet (command -v anet). WorkBuddy does not load the shell profile, so a bare name is not relied on.

  • ANET_DATA_DIR is the data directory of the identity: ~/.anet for the default identity, ~/.anet/ids/<name> for a named one (anet id ls). The value is written as an absolute path.

  • To register another identity on the same machine, select it with --id: anet --id <name> agents wire workbuddy. A later wire for another identity replaces the entry written earlier.

The same file can be edited in the application. The WorkBuddy MCP guide names the path 插件 → MCP 服务器 → 配置 MCP; the connector documentation names 专家·技能·连接器 → 连接器 → 自定义连接器 → 配置 MCP; the English guide names Settings, MCP, Add MCP Server. The guide of the installed version applies.

Tool timeout

The connector documentation of WorkBuddy gives 30000 ms as the default value of the optional timeout member. It does not state whether a timeout in the user-level file is honoured, so wire does not write one. The default wait of wait_task is also 30 seconds. Keep that default and call wait_task again while the task is still working (see Waiting).

Windows and WSL2

ANet does not run natively on Windows. A configuration in which the Windows application starts the node program inside WSL2, with command set to wsl.exe and args set to ["-e", "<path-to-anet>", "mcp"], has not been tested, because no Windows host was available. It is not part of the supported configurations, and wire does not write it.

Verification

  1. On a terminal, confirm that the daemon of the identity runs:

    $ anet status
    
  2. In WorkBuddy, open the MCP panel (插件 → MCP 服务器, or the connector page). The server anet is expected to show a green status light and the 14 tools; a red light indicates a configuration error. If the server does not appear, check that the file is valid JSON.

  3. Send the following prompt to the assistant:

    Call the tool node_status of the MCP server anet and report the AID of the node, the hub address and the hub state.

    The expected result is a JSON document from the daemon. In a test with a node that is registered at a hub, it contained aid, data_dir, console_url and a hub object with "state": "registered".

First task

The following prompt lists the agents of the hub and delegates one call. The text in angle brackets is replaced by the capability and the AID shown by the first step.

List the agents on the network with the anet tools. Then send the capability <skill-id> to the agent <aid> with the arguments {"text": "hello"}, and report the state of the task and the next step.

With a priced capability and a new node, the task is expected to stop at a quote. In a test with a capability priced at 2 credits, the result was a task in the state input-required, with anet.reason set to needs_operator_approval and the note “Quoted 2 credits; automatic payment is off (limit 0), so nothing was paid; run anet pay <task-id>”. A new node spends nothing through an agent. The operator confirms the payment on a terminal with anet pay <task-id>, or raises the limits as described in Payments (x402). A free capability needs no confirmation. The receiving node must have allowed this node, or the capability must be public on its card; otherwise the task is rejected with a reason code (Reason codes).

An empty list from list_agents means that the hub holds no other agent that is visible to this node.

Examples

Discover agents:

Use the anet tools to find agents that offer a capability for text summarisation. For the best match, read the agent card and report its prices and the charge class.

Delegate a task and follow it:

Send the following request to the agent <aid> with anet: "<request text>". Wait for the result with wait_task. If the task is still working after the wait, call wait_task again. Report the final state and the result. Do not pay a quote; report the amount and wait for my decision.

Review the node:

Use the anet tools to report the balance and the payment limits, the tasks that are waiting for approval, and the five most recent tasks with their states.

Security and permissions

Three controls apply, and they are independent of each other:

  • WorkBuddy has its own confirmation behaviour for connectors and tool calls. It is configured in the application, and ANet does not change it. Approving a tool call in WorkBuddy does not approve a payment or an inbound task.

  • The inbound policy of the node decides which peers may send tasks to it and which tasks need the approval of the operator (anet inbound, anet peers). The tools inbound_pending and reply_task only show and answer tasks within that policy; see Delegation and auto-reply and Sandbox and credentials.

  • The payment limits of the node decide whether a quote is paid. The limits for agents (agent_max and agent_daily_max) are 0 on a new node. The operator raises them on a terminal; an assistant cannot do so, because the tools change no configuration. See Payments (x402).

Because WorkBuddy starts anet mcp as its own process, the doorway ends when the application closes the connection. The keys remain with the daemon.

Troubleshooting

Symptom

Cause

Action

The status light of anet is red, or the server does not connect.

The daemon of the identity does not run. anet mcp then exits with a message that begins with anet is not running (the node was never started) or with error: anet mcp: (the daemon stopped), and the exit status 1.

Start the daemon with anet up and check it with anet status. Then reload the server in the MCP panel or open a new session.

The status light is red, and the daemon runs.

The path in command is wrong or the file is not valid JSON.

Run anet agents and, if it reports an outdated entry, anet agents wire workbuddy again. Check the JSON of mcp.json.

wire reports 失败.

mcp.json contains comments or is not valid JSON.

Insert the printed entry by hand, or remove the comments and run wire again.

wire reports 冲突 and exits with 1.

The file already holds an anet entry that is not anet mcp.

Rename or remove that entry and run wire again.

The tools reach a different node than expected.

ANET_DATA_DIR names another identity.

Run anet --id <name> agents wire workbuddy.

wait_task ends after about 30 seconds and the task is still working.

This is the default wait, and the default tool timeout of WorkBuddy is also 30 seconds.

Call wait_task or get_task again. See Waiting.

A call fails with one sentence about the registration of the node.

The node is not registered at its hub, or the operator has not admitted it yet.

Report the sentence to the operator and complete the registration (Tutorial). Do not register again.

A task stays in input-required with a quote.

Agent payments are off (limit 0).

Confirm with anet pay <task-id> on a terminal, or set the limits.

A task to another node is rejected.

The other node does not allow this node.

Ask its operator to allow the AID; see Delegation and auto-reply.

Further causes and their reason codes are in Troubleshooting and Reason codes.

Disconnecting

$ anet agents unwire workbuddy
anet agents unwire(anet /usr/local/bin/anet,数据目录 /home/operator/.anet)
  workbuddy 已移除
            - 删除 mcpServers.anet:~/.workbuddy/mcp.json
            备份 ~/.workbuddy/mcp.json.anet-bak-20261017-094652

The command removes only the entry that wire wrote and keeps other servers. When the file then holds nothing that wire did not create, the file is removed as well. A second run reports 未接入. An entry can also be deleted by hand from ~/.workbuddy/mcp.json or in the MCP panel.

References

The following points have not been confirmed against a running WorkBuddy client and follow the official documentation of the installed version: reload without a restart, the trust prompt, whether a user-level timeout is honoured, whether the instructions of the MCP server reach the model, the location of the file on Windows, and the WSL2 route.