---
title: "Schedule skill"
description: "Query, create, modify, and cancel WeCom calendar events, manage attendees, and check multi-user availability."
---
The `wecomcli-schedule` skill gives the AI full control over your WeCom calendar. It can list upcoming events, retrieve their details, create new events with reminders and attendees, modify existing events, cancel them, and check the availability of multiple people to find a common free slot.
Schedule queries are limited to the current day ± 30 days. All time parameters use `YYYY-MM-DD HH:mm:ss` format. Return values use Unix timestamps (seconds) and are converted to readable format before being shown to you.
## Available operations
### get_schedule_list_by_range
Returns the list of schedule IDs within a time range.
```bash
wecom-cli schedule get_schedule_list_by_range '{"start_time": "2026-03-17 00:00:00", "end_time": "2026-03-17 23:59:59"}'
```
Returns `schedule_id_list`. Only supports the current day ± 30 days.
### get_schedule_detail
Returns full details for one or more schedules by ID. Supports 1–50 IDs per request.
```bash
wecom-cli schedule get_schedule_detail '{"schedule_id_list": ["SCHEDULE_ID_1", "SCHEDULE_ID_2"]}'
```
Key fields in the response: title (`summary`), start/end times, location, description, attendees, and reminder settings.
### create_schedule
Creates a new calendar event.
```bash
wecom-cli schedule create_schedule '{"schedule": {"start_time": "2026-03-18 14:00:00", "end_time": "2026-03-18 15:00:00", "summary": "Requirements review", "attendees": [{"userid": "USER_ID"}], "reminders": {"is_remind": 1, "remind_before_event_secs": 900, "timezone": 8}}}'
```
**Key parameters inside the `schedule` object:**
| Parameter | Type | Description |
|-----------|------|-------------|
| `summary` | string | Event title. |
| `start_time` | string | Start time in `YYYY-MM-DD HH:mm:ss`. |
| `end_time` | string | End time in `YYYY-MM-DD HH:mm:ss`. |
| `location` | string | Optional location. |
| `description` | string | Optional description. |
| `attendees` | array | List of `{"userid": "..."}` objects. Obtained via `wecomcli-contact`. |
| `reminders.is_remind` | integer | `1` to enable reminders. |
| `reminders.remind_before_event_secs` | integer | Seconds before the event to send a reminder. Default: `900` (15 minutes). |
| `reminders.is_whole_day` | integer | `1` for an all-day event. |
### update_schedule
Modifies an existing event. Only the fields you pass are changed — all other fields remain unchanged.
```bash
wecom-cli schedule update_schedule '{"schedule": {"schedule_id": "SCHEDULE_ID", "summary": "Updated title"}}'
```
### cancel_schedule
Cancels a scheduled event.
```bash
wecom-cli schedule cancel_schedule '{"schedule_id": "SCHEDULE_ID"}'
```
### add_schedule_attendees
Adds one or more attendees to an event.
```bash
wecom-cli schedule add_schedule_attendees '{"schedule_id": "SCHEDULE_ID", "attendees": [{"userid": "USER_ID"}]}'
```
### del_schedule_attendees
Removes one or more attendees from an event.
```bash
wecom-cli schedule del_schedule_attendees '{"schedule_id": "SCHEDULE_ID", "attendees": [{"userid": "USER_ID"}]}'
```
### check_availability
Queries the busy/free status of 1–10 users within a time range.
```bash
wecom-cli schedule check_availability '{"check_user_list": ["USER_ID_1", "USER_ID_2"], "start_time": "2026-03-18 09:00:00", "end_time": "2026-03-18 18:00:00"}'
```
Returns each user's list of busy time slots. The AI then computes the shared free slots across all queried users.
## Typical workflows
### Querying your schedule
The AI translates natural language like "today", "this week", or "next Monday through Friday" into exact `YYYY-MM-DD HH:mm:ss` timestamps.
```bash
wecom-cli schedule get_schedule_list_by_range '{"start_time": "2026-03-17 00:00:00", "end_time": "2026-03-17 23:59:59"}'
```
```bash
wecom-cli schedule get_schedule_detail '{"schedule_id_list": ["SCHEDULE_ID_1", "SCHEDULE_ID_2"]}'
```
Unix timestamps in the response are converted to readable format before display.
If you asked to find events matching a keyword (such as "project review"), the AI matches against the `summary` field. If nothing is found in the initial range, it expands the search up to the ± 30-day limit.
### Creating an event
The AI extracts the title, start/end time, location, and attendees from what you said.
```bash
wecom-cli contact get_userlist '{}'
```
If multiple people share a name, the AI shows you the candidates and waits for your choice.
The AI shows you the title, time, location, and attendees and waits for your confirmation before proceeding.
```bash
wecom-cli schedule create_schedule '{"schedule": {"start_time": "2026-03-18 14:00:00", "end_time": "2026-03-18 15:00:00", "summary": "Requirements review", "attendees": [{"userid": "zhangsan"}, {"userid": "lisi"}], "reminders": {"is_remind": 1, "remind_before_event_secs": 900, "timezone": 8}}}'
```
If you did not specify a reminder, the AI defaults to 15 minutes (`remind_before_event_secs: 900`). For all-day events, it sets `is_whole_day: 1` with start/end at `00:00:00` and `23:59:59`.
### Modifying an event
The AI calls `get_schedule_list_by_range` and then `get_schedule_detail` to find the target event by time or title keyword. If multiple events match, it shows you a list and asks you to confirm which one.
The AI tells you what it is about to change and asks for confirmation.
```bash
wecom-cli schedule update_schedule '{"schedule": {"schedule_id": "SCHEDULE_ID", "summary": "Tech strategy review"}}'
```
Only the fields you want to change are included — everything else stays the same.
### Cancelling an event
The AI finds the `schedule_id` by querying the schedule list and matching the title or time.
The AI shows the title and time of the event it is about to cancel and waits for your confirmation.
```bash
wecom-cli schedule cancel_schedule '{"schedule_id": "SCHEDULE_ID"}'
```
### Managing attendees
```bash
wecom-cli contact get_userlist '{}'
```
The AI finds the target event using `get_schedule_list_by_range` and `get_schedule_detail`.
To add:
```bash
wecom-cli schedule add_schedule_attendees '{"schedule_id": "SCHEDULE_ID", "attendees": [{"userid": "wangwu"}]}'
```
To remove:
```bash
wecom-cli schedule del_schedule_attendees '{"schedule_id": "SCHEDULE_ID", "attendees": [{"userid": "lisi"}]}'
```
### Finding a free slot for a group
```bash
wecom-cli contact get_userlist '{}'
```
```bash
wecom-cli schedule check_availability '{"check_user_list": ["zhangsan", "lisi"], "start_time": "2026-03-18 09:00:00", "end_time": "2026-03-18 18:00:00"}'
```
The AI overlays each person's busy periods and identifies windows when everyone is free. It recommends one or more free slots to you.
Once you confirm a slot, the AI calls `create_schedule` to book the event with all attendees added automatically.
## Key constraints
- `userid` values for attendees must always come from `wecomcli-contact`. The AI never guesses IDs.
- Internal user IDs are never shown to you — the AI always resolves them to names first.
- Destructive actions (cancel, remove attendee) require your confirmation before the AI proceeds.
- `check_availability` supports a maximum of 10 users per query.