Create a schedule
create_scheduleCreate a recurring (or custom-date) schedule and materialize its upcoming occurrences. Best practice: call preview_schedule_occurrences with the same recurrence settings first and confirm the dates with the user. This tool returns the created schedule AND an inline preview of its next occurrences so you can show what was set up. You can optionally seed the roster with contact_ids at creation. Requires the schedules:write scope. If calendar invites are on for the account, assigned volunteers may get a new, updated or cancelled calendar invite by email (in test mode it goes to the owner instead).
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"description": "<description>",
"job_name": "<job_name>",
"schedule_type": "<schedule_type>"
},
"name": "create_schedule"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| time | No | Wall-clock time of day "HH:mm" (24-hour) in the account timezone, or null for no specific time. | |
| notes | No | Free-text internal notes, or null. | |
| end_date | No | "yyyy-MM-dd" (account timezone) after which occurrences stop, or null for no end date. | |
| group_id | No | Id of an existing volunteer group to attach, or null. Unknown ids are ignored. | |
| job_name | Yes | The role/task volunteers are reminded about. Matched case-insensitively against the account's existing jobs and created if new. | |
| start_date | No | "yyyy-MM-dd" (account timezone) before which no occurrences materialize, or null for no lower bound. For 'biweekly' this also picks which week the 14-day rotation lands on; when omitted, the server uses the first selected weekday after today. Updating an existing biweekly schedule with null keeps its stored date. | |
| contact_ids | No | Optional initial roster (volunteer contact ids) to assign at creation. Ids not owned by this account are silently dropped. To change a roster later, use assign_contacts_to_schedule. | |
| description | Yes | Short label shown on the schedule list and in reminders, e.g. "Sunday greeters". | |
| nth_weekday | No | The weekday that recurs, for schedule_type 'monthly_nth'/'bimonthly_nth'. Defaults to sunday for those types. | |
| start_month | No | Anchor month (1=January … 12=December) the every-other-month cadence steps from, for the 'bimonthly_*' types. Defaults to the account's current month. | |
| custom_dates | No | Explicit list of "yyyy-MM-dd" dates. Required (non-empty) when schedule_type is 'custom'; ignored otherwise. | |
| day_of_month | No | Fixed day of the month for the 'fixed' types. Defaults to 1. Clamped to the last day of shorter months (e.g. 31 in February becomes the 28th/29th). | |
| days_of_week | No | Weekday names this recurs on, e.g. ["tuesday","thursday"]. Required (non-empty) when schedule_type is 'weekly' or 'biweekly'; ignored otherwise. | |
| schedule_type | Yes | Recurrence shape. 'weekly' recurs on one or more days of the week; 'biweekly' is the same weekday mask every 14 days (start_date picks which week; not BiMonthly, which is every other month); 'monthly_fixed'/'bimonthly_fixed' recur on a fixed day of the month; 'monthly_nth'/'bimonthly_nth' recur on the Nth weekday of the month; the 'bimonthly_*' variants also alternate months starting from start_month; 'custom' uses an explicit list of dates. | |
| week_of_month | No | Which occurrence of the weekday in the month (1st–5th), for the Nth-weekday types. Defaults to 1. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| schedule | Yes | ||
| upcoming_occurrences | Yes |