wecom_mcpis an MCP tool; all operations are completed by calling this tool.
⚠️ Prerequisites: Before the first call to
wecom_mcp, you must follow thewecom-preflightskill to perform the prerequisite check to ensure the tool has been added to the whitelist.
Use the wecom_mcp tool to perform write operations on Enterprise WeChat to-do items, supporting four operations: create to-do, update to-do, delete to-do, and change user status.
Behavior Policy
Retry Policy: When encountering "returned HTTP error" or "HTTP request failed", actively retry, up to three times.
Operations
1. Create To-Do
Create a new to-do item, and you can specify the content, assignees, and reminder time:
Use the wecom_mcp tool to call wecom_mcp call todo create_todo '<json格式的入参>'
Parameter description:
You need to follow the format requirements in "Notes":
| Parameter | Type | Required | Description |
|---|---|---|---|
content |
string | ✅ | To-do content |
follower_list |
object | ❌ | Assignee list, see Note 7 for the format |
remind_time |
string | ❌ | Reminder time, format:YYYY-MM-DD HH:mm:ss |
Example call:
Use the wecom_mcp tool to call wecom_mcp call todo create_todo '{"content": "<待办的内容>", "remind_time": "2025-06-01 09:00:00"}'
Return format:
{
"errcode": 0,
"errmsg": "ok",
"todo_id": "TODO_ID"
}
2. Update To-Do
Modify the content, assignees, status, or reminder time of an existing to-do item:
Use the wecom_mcp tool to call wecom_mcp call todo update_todo '<json格式的入参>'
Parameter description:
You need to follow the format requirements in "Notes":
| Parameter | Type | Required | Description |
|---|---|---|---|
todo_id |
string | ✅ | To-do ID |
content |
string | ❌ | New to-do content |
follower_list |
object | ❌ | New assignee list (full replacement, not addition), see Note 7 for the format. To add assignees, first query the existing assignees, merge them, and submit them together |
todo_status |
number | ❌ | New to-do status:0-Completed,1-In progress. To delete, use delete_todo |
remind_time |
string | ❌ | New reminder time |
Example call:
Use the wecom_mcp tool to call wecom_mcp call todo update_todo '{"todo_id": "TODO_ID", "content": "<待办的内容>", "remind_time": "2025-07-01 09:00:00"}'
Return format:
{
"errcode": 0,
"errmsg": "ok"
}
3. Delete To-Do
Delete the specified to-do item:
Use the wecom_mcp tool to call wecom_mcp call todo delete_todo '<json格式的入参>'
Parameter description:
You need to follow the format requirements in "Notes":
| Parameter | Type | Required | Description |
|---|---|---|---|
todo_id |
string | ✅ | To-do ID |
Example call:
Use the wecom_mcp tool to call wecom_mcp call todo delete_todo '{"todo_id": "TODO_ID"}'
Return format:
{
"errcode": 0,
"errmsg": "ok"
}
The delete operation is irreversible; confirm with the user before executing. Note:
delete_todoandupdate_todosettodo_status=2Same effect, prefer to usedelete_todo。
4. Change user to-do status
Change the current user's status in a to-do (rejected/accepted/completed):
Use wecom_mcp tool call wecom_mcp call todo change_todo_user_status '<json格式的入参>'
Parameter description:
Must follow the format requirements in "Notes":
| Parameter | Type | Required | Description |
|---|---|---|---|
todo_id |
string | ✅ | To-do ID |
user_status |
number | ✅ | User status:0-Rejected,1-Accepted,2-Completed |
Call example:
Use wecom_mcp tool call wecom_mcp call todo change_todo_user_status '{"todo_id": "TODO_ID", "user_status": 2}'
Return format:
{
"errcode": 0,
"errmsg": "ok"
}
Typical workflow
Create a to-do and assign it to a colleague
User asks: "Help me create a to-do and have Zhang San complete the requirements document by next Monday"
- Step 1: Query Zhang San's userid through the wecom-contact-lookup skill, filter the members whose name is "Zhang San" in the returned results, and obtain their userid
- Step 2: Create the to-do and assign it, use
wecom_mcptool callwecom_mcp call todo create_todo '{"content": "<待办的内容>", "follower_list": {"followers": [{"follower_id": "zhangsan", "follower_status": 1}]}, "remind_time": "2025-03-24 09:00:00"}'
follower_idmust come from thewecom-contact-lookupinterface return of theget_userlistskill'suserid, and guessing on your own is prohibited. If the search results contain multiple people with the same name, display the candidate list for the user to confirm.
Mark a to-do as completed
Two scenarios need to be distinguished:Mark the to-do itself as completed(change todo_status) andmark my participation status as completed(change user_status)。
Scenario A: Mark the to-do itself as completed
User asks: "Mark the to-do 'Complete Q2 planning document' as completed" / "Close this to-do"
- Step 1: Obtain the to-do list through wecom-get-todo-list, and find the todo_id of the target to-do. Use
wecom_mcptool callwecom_mcp call todo get_todo_list '{}' - Step 2: Obtain the details through wecom-get-todo-detail, and confirm it is the target to-do. Use
wecom_mcptool callwecom_mcp call todo get_todo_detail '{"todo_id_list": ["TODO_ID"]}' - Step 3: After confirmation, change the to-do status to completed. Use
wecom_mcptool callwecom_mcp call todo update_todo '{"todo_id": "TODO_ID", "todo_status": 0}'
Scenario B: Mark my participation status as completed
User asks: "I have already completed this to-do" / "Mark my part as completed"
- Step 1: Obtain the to-do list through wecom-get-todo-list, and find the todo_id of the target to-do. Use
wecom_mcptool callwecom_mcp call todo get_todo_list '{}' - Step 2: Obtain the details through wecom-get-todo-detail, and confirm it is the target to-do. Use
wecom_mcptool callwecom_mcp call todo get_todo_detail '{"todo_id_list": ["TODO_ID"]}' - Step 3: After confirmation, change the current user's participation status to completed. Use
wecom_mcptool callwecom_mcp call todo change_todo_user_status '{"todo_id": "TODO_ID", "user_status": 2}'
How to determine user intent: If the user says "mark as completed" and the to-do was created by themselves and has no other assignees, it usually refers to Scenario A (mark the to-do itself as completed). If the to-do has multiple participants, the user may only want to mark their own part as completed (Scenario B). When uncertain, confirm with the user.
What the user provides is a to-do content description rather than an ID, so you need to first search through wecom-get-todo-list and wecom-get-todo-detail and then match. When multiple similar to-dos are matched, list the candidates for the user to confirm.
Update the to-do content or reminder time
User asks: "Change the to-do reminder time for that requirements document to next Friday"
- Step 1: Find the target to-do. Use
wecom_mcptool to callwecom_mcp call todo get_todo_list '{}', then usewecom_mcptool to callwecom_mcp call todo get_todo_detail '{"todo_id_list": ["TODO_ID_1", "TODO_ID_2"]}' - Step 2: Update after confirming the target. Use
wecom_mcptool to callwecom_mcp call todo update_todo '{"todo_id": "TODO_ID", "remind_time": "2025-03-28 09:00:00"}'
Delete to-do
User asks: "Delete the 'Code Review' to-do"
- Step 1: Find the target to-do. Use
wecom_mcptool to callwecom_mcp call todo get_todo_list '{}', then usewecom_mcptool to callwecom_mcp call todo get_todo_detail '{"todo_id_list": ["TODO_ID"]}' - Step 2: Delete after confirming with the user. Use
wecom_mcptool to callwecom_mcp call todo delete_todo '{"todo_id": "TODO_ID"}'
Before deleting, you must confirm with the user. Example confirmation wording: "Confirm deletion of the to-do 'Code Review'? Deletion cannot be undone."
Notes
-
todo_id source rules
todo_idmust come fromwecom-get-todo-listthe returned results; speculating or constructing it yourself is prohibited- Users usually provide a to-do content description rather than an ID; you should first query the list via wecom-get-todo-list and then match
- If multiple similar to-dos are matched, display the candidate list for the user to confirm
-
follower_id source rules
follower_idis the userid, and must be obtained throughuserid, which must be obtained via thewecom-contact-lookupskill'sget_userlistinterface- Guessing the userid based on the user's name is prohibited
- If the search results contain multiple people with the same name, display the candidate list for the user to choose
-
Time format
- All time parameters use the
YYYY-MM-DD HH:mm:ssformat - When the user says relative times such as "tomorrow" or "next Monday", calculate the specific date based on the current date
- All time parameters use the
-
Meaning of status values
- To-do status (
todo_status):0-Completed,1-In progress,2-Deleted - User status (
user_status):0-Rejected,1-Accepted,2-Completed - Assignee status (
follower_status):0-Rejected,1-Accepted,2-Completed
- To-do status (
-
Destructive operation confirmation
- Before deleting a to-do (
delete_todo), you must confirm with the user - Before changing the status to "Rejected" (
user_status=0), it is recommended to confirm with the user
- Before deleting a to-do (
-
Error handling
- If
errcodeis not0, it indicates the API call failed; inform the user of the error message inerrmsgerror message in
- If
-
follower_list format (when used as an input parameter)
"follower_list": { // 分派人列表 "followers": [ // 注意里面还有一层是 "followers",它的value才是真正的列表数组 { "follower_id": "FOLLOWER_ID", // 分派人id "follower_status": 1 // 分派人状态:0-拒绝, 1-接受, 2-已完成 } ] }follower_idis the userid, which must be obtained by queryingwecom-contact-lookup; speculating or constructing it yourself is prohibited.
Related skills
- Get to-do list:
wecom-get-todo-list— Query the to-do summary list and get todo_id - Get to-do details:
wecom-get-todo-detail— Get the full content based on todo_id - Contact lookup:
wecom-contact-lookup'sget_userlist— Get the member userid, used forfollower_id