Schedule it MCP by usefulapi
Read Schedule it events, resources, groups and labels; create and update events and resources.
我該用這個嗎
品質與安全性
根據工具定義與協定合規性的自動化分析。
上下文成本
這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。
安裝
一鍵安裝
將以下內容加入你的 `claude_desktop_config.json` 檔案:
{
"mcpServers": {
"schedule-it": {
"url": "https://schedule-it.usefulapi.io/mcp"
}
}
}遠端端點
https://schedule-it.usefulapi.io/mcpstreamable-http它能做什麼
工具清單
工具(15)
🟢scheduleit_list_events(fields, date_from, date_to, title, resource_ids, ...)
List scheduled events and tasks (bookings, shifts, jobs). Without date_from/date_to Schedule It uses its default date range. Schedule It returns only a short summary of each event unless you name the fields you want: pass `fields` such as id,title,date_start,date_end,owner,notes,completed,priority,custom1 (get_event returns ALL fields of one event). `owner` holds the ids of the resources (people, rooms, equipment) the event is linked to. There is no paging: the reply holds up to `limit` events (default 100), so narrow with the filters instead. Do not call this repeatedly to watch for changes (use modified_after to fetch only what changed). GET /api/events.
輸入結構描述
{
"type": "object",
"properties": {
"fields": {
"description": "Comma-separated fields to return, e.g. id,title,date_start,date_end,owner.",
"type": "string",
"maxLength": 500,
"pattern": "^[A-Za-z0-9_]+(,[A-Za-z0-9_]+)*$"
},
"date_from": {
"description": "Events from this date (date_range_from).",
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
},
"date_to": {
"description": "Events up to this date (date_range_to).",
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
},
"title": {
"description": "Events whose title contains this text.",
"type": "string",
"minLength": 1,
"maxLength": 250
},
"resource_ids": {
"description": "Only events linked to these resources (see resource_match).",
"minItems": 1,
"maxItems": 200,
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"resource_match": {
"description": "With resource_ids: any = linked to at least one (default), all = linked to every one, none = linked to none of them.",
"type": "string",
"enum": [
"any",
"all",
"none"
]
},
"event_ids": {
"description": "Only these event ids.",
"minItems": 1,
"maxItems": 200,
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"tasks_only": {
"description": "true = only tasks, false = only events that are not tasks.",
"type": "boolean"
},
"no_date_only": {
"description": "true = only events with no date, false = only dated ones.",
"type": "boolean"
},
"modified_after": {
"description": "Only events added or changed after this date (yyyy-mm-dd) or date and time (yyyy-mm-dd hh:mm).",
"type": "string"
},
"workspace_id": {
"description": "Workspace id (Account Settings > Workspaces). Omit for the main workspace (id 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"limit": {
"description": "Most events to return, 1-1000 (default 100).",
"type": "integer",
"minimum": 1,
"maximum": 1000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢scheduleit_get_event(event_id)
One event or task by id with ALL its fields (title, dates, linked resources, notes, completion, priority, custom fields). GET /api/events/{id}.
輸入結構描述
{
"type": "object",
"properties": {
"event_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Schedule It event id."
}
},
"required": [
"event_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡scheduleit_create_event(title, resource_ids, date_start, date_end, notes, ...)
WRITE: create a new event (booking, shift, job or task) in the Schedule It account, optionally linked to resources. It becomes visible to everyone with access to the schedule, and Schedule It may notify the linked resources according to the account's own notification settings. Confirm the title, dates and resources with the user first. POST /api/events.
輸入結構描述
{
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 1,
"maxLength": 250,
"description": "Event title."
},
"resource_ids": {
"description": "Resources (people, rooms, equipment) the event is linked to (the `owner` field). On update this REPLACES the whole list.",
"minItems": 1,
"maxItems": 200,
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"date_start": {
"description": "Start, yyyy-mm-dd hh:mm[:ss].",
"type": "string"
},
"date_end": {
"description": "End, yyyy-mm-dd hh:mm[:ss].",
"type": "string"
},
"notes": {
"description": "Notes. On update an empty string clears them.",
"type": "string",
"maxLength": 20000
},
"custom_fields": {
"description": "Custom field values keyed custom1..custom9 (the account's custom field labels are set in Schedule It). An empty string clears a field.",
"type": "object",
"propertyNames": {
"type": "string",
"enum": [
"custom1",
"custom2",
"custom3",
"custom4",
"custom5",
"custom6",
"custom7",
"custom8",
"custom9"
]
},
"additionalProperties": {
"type": "string",
"maxLength": 2000
}
},
"completed": {
"description": "Percent completed, 0-100.",
"type": "integer",
"minimum": 0,
"maximum": 100
},
"priority": {
"description": "Priority number (Schedule It's priority scale).",
"type": "integer",
"minimum": 0,
"maximum": 100
},
"color_back": {
"description": "Background colour, e.g. #FFFFFF.",
"type": "string",
"pattern": "^#[0-9A-Fa-f]{6}$"
},
"color_text": {
"description": "Text colour, e.g. #66FF66.",
"type": "string",
"pattern": "^#[0-9A-Fa-f]{6}$"
}
},
"required": [
"title"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴scheduleit_update_event(event_id, title, resource_ids, date_start, date_end, ...)
WRITE: change fields of an existing event; only the fields you pass are changed, the rest stay as they are. Passing resource_ids replaces the whole list of linked resources; an empty string clears notes or a custom field. Changing dates or resources may notify people per the account's notification settings. POST /api/events/{id}.
輸入結構描述
{
"type": "object",
"properties": {
"event_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Schedule It event id."
},
"title": {
"description": "Event title.",
"type": "string",
"minLength": 1,
"maxLength": 250
},
"resource_ids": {
"description": "Resources (people, rooms, equipment) the event is linked to (the `owner` field). On update this REPLACES the whole list.",
"minItems": 1,
"maxItems": 200,
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"date_start": {
"description": "Start, yyyy-mm-dd hh:mm[:ss].",
"type": "string"
},
"date_end": {
"description": "End, yyyy-mm-dd hh:mm[:ss].",
"type": "string"
},
"notes": {
"description": "Notes. On update an empty string clears them.",
"type": "string",
"maxLength": 20000
},
"custom_fields": {
"description": "Custom field values keyed custom1..custom9 (the account's custom field labels are set in Schedule It). An empty string clears a field.",
"type": "object",
"propertyNames": {
"type": "string",
"enum": [
"custom1",
"custom2",
"custom3",
"custom4",
"custom5",
"custom6",
"custom7",
"custom8",
"custom9"
]
},
"additionalProperties": {
"type": "string",
"maxLength": 2000
}
},
"completed": {
"description": "Percent completed, 0-100.",
"type": "integer",
"minimum": 0,
"maximum": 100
},
"priority": {
"description": "Priority number (Schedule It's priority scale).",
"type": "integer",
"minimum": 0,
"maximum": 100
},
"color_back": {
"description": "Background colour, e.g. #FFFFFF.",
"type": "string",
"pattern": "^#[0-9A-Fa-f]{6}$"
},
"color_text": {
"description": "Text colour, e.g. #66FF66.",
"type": "string",
"pattern": "^#[0-9A-Fa-f]{6}$"
}
},
"required": [
"event_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴scheduleit_delete_event(event_id, confirm)
WRITE, DESTRUCTIVE: permanently delete one event or task. It cannot be undone through the API. Only call this when the user clearly asked for this event to be deleted. DELETE /api/events/{id}.
輸入結構描述
{
"type": "object",
"properties": {
"event_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Schedule It event id to delete."
},
"confirm": {
"type": "boolean",
"const": true,
"description": "Must be true: the user confirmed this event should be permanently deleted."
}
},
"required": [
"event_id",
"confirm"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢scheduleit_list_resources(fields, name, group_ids, resource_ids, modified_after, ...)
List resources: the people, rooms, equipment or vehicles that events are scheduled against. Schedule It returns only a short summary unless you pass `fields` (for example id,name,email,data1; get_resource returns ALL fields of one). Resources belong to groups (`owner` = group ids). There is no paging; the reply holds up to `limit` resources (default 100). GET /api/resources.
輸入結構描述
{
"type": "object",
"properties": {
"fields": {
"description": "Comma-separated fields to return, e.g. id,name,email.",
"type": "string",
"maxLength": 500,
"pattern": "^[A-Za-z0-9_]+(,[A-Za-z0-9_]+)*$"
},
"name": {
"description": "Resources whose name contains this text.",
"type": "string",
"minLength": 1,
"maxLength": 250
},
"group_ids": {
"description": "Only resources in these groups.",
"minItems": 1,
"maxItems": 200,
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"resource_ids": {
"description": "Only these resource ids.",
"minItems": 1,
"maxItems": 200,
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"modified_after": {
"description": "Only resources added or changed after this date (yyyy-mm-dd) or date and time (yyyy-mm-dd hh:mm).",
"type": "string"
},
"workspace_id": {
"description": "Workspace id (Account Settings > Workspaces). Omit for the main workspace (id 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"limit": {
"description": "Most resources to return, 1-1000 (default 100).",
"type": "integer",
"minimum": 1,
"maximum": 1000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢scheduleit_get_resource(resource_id)
One resource by id with ALL its fields (name, email, groups, details 1-10, colours, skills). GET /api/resources/{id}.
輸入結構描述
{
"type": "object",
"properties": {
"resource_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Schedule It resource id."
}
},
"required": [
"resource_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡scheduleit_create_resource(name, group_ids, email, details, color_back, ...)
WRITE: add a new resource (a person, room, piece of equipment) to the Schedule It account. It may count toward the account's licensed resources or users. Confirm the details with the user first. POST /api/resources.
輸入結構描述
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 250,
"description": "Resource name."
},
"group_ids": {
"description": "Groups the resource belongs to (the `owner` field). On update this REPLACES the whole list.",
"minItems": 1,
"maxItems": 200,
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"email": {
"description": "Email address of the resource (an empty string clears it on update).",
"type": "string",
"maxLength": 250
},
"details": {
"description": "Detail values keyed data1..data10 (for example data1 = job title; the labels are set in Schedule It). An empty string clears a field.",
"type": "object",
"propertyNames": {
"type": "string",
"enum": [
"data1",
"data2",
"data3",
"data4",
"data5",
"data6",
"data7",
"data8",
"data9",
"data10"
]
},
"additionalProperties": {
"type": "string",
"maxLength": 2000
}
},
"color_back": {
"description": "Resource background colour, e.g. #A9F5A9.",
"type": "string",
"pattern": "^#[0-9A-Fa-f]{6}$"
},
"color_text": {
"description": "Resource text colour.",
"type": "string",
"pattern": "^#[0-9A-Fa-f]{6}$"
},
"color_event_back": {
"description": "Background colour of this resource's events.",
"type": "string",
"pattern": "^#[0-9A-Fa-f]{6}$"
}
},
"required": [
"name"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴scheduleit_update_resource(resource_id, name, group_ids, email, details, ...)
WRITE: change fields of an existing resource; only the fields you pass are changed. Passing group_ids replaces the whole list of groups; an empty string clears email or a detail field. POST /api/resources/{id}.
輸入結構描述
{
"type": "object",
"properties": {
"resource_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Schedule It resource id."
},
"name": {
"description": "Resource name.",
"type": "string",
"minLength": 1,
"maxLength": 250
},
"group_ids": {
"description": "Groups the resource belongs to (the `owner` field). On update this REPLACES the whole list.",
"minItems": 1,
"maxItems": 200,
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"email": {
"description": "Email address of the resource (an empty string clears it on update).",
"type": "string",
"maxLength": 250
},
"details": {
"description": "Detail values keyed data1..data10 (for example data1 = job title; the labels are set in Schedule It). An empty string clears a field.",
"type": "object",
"propertyNames": {
"type": "string",
"enum": [
"data1",
"data2",
"data3",
"data4",
"data5",
"data6",
"data7",
"data8",
"data9",
"data10"
]
},
"additionalProperties": {
"type": "string",
"maxLength": 2000
}
},
"color_back": {
"description": "Resource background colour, e.g. #A9F5A9.",
"type": "string",
"pattern": "^#[0-9A-Fa-f]{6}$"
},
"color_text": {
"description": "Resource text colour.",
"type": "string",
"pattern": "^#[0-9A-Fa-f]{6}$"
},
"color_event_back": {
"description": "Background colour of this resource's events.",
"type": "string",
"pattern": "^#[0-9A-Fa-f]{6}$"
}
},
"required": [
"resource_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢scheduleit_list_groups(fields, name, group_ids, workspace_id, limit)
List resource groups (the categories resources are organised in, e.g. Staff, Rooms, Vehicles). Pass `fields` (e.g. id,name) for more than the short summary. GET /api/groups.
輸入結構描述
{
"type": "object",
"properties": {
"fields": {
"description": "Comma-separated fields to return, e.g. id,name.",
"type": "string",
"maxLength": 500,
"pattern": "^[A-Za-z0-9_]+(,[A-Za-z0-9_]+)*$"
},
"name": {
"description": "Groups whose name contains this text.",
"type": "string",
"minLength": 1,
"maxLength": 250
},
"group_ids": {
"description": "Only these group ids.",
"minItems": 1,
"maxItems": 200,
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"workspace_id": {
"description": "Workspace id (Account Settings > Workspaces). Omit for the main workspace (id 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"limit": {
"description": "Most groups to return, 1-1000 (default 100).",
"type": "integer",
"minimum": 1,
"maximum": 1000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢scheduleit_get_group(group_id)
One resource group by id with ALL its fields. GET /api/groups/{id}.
輸入結構描述
{
"type": "object",
"properties": {
"group_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Schedule It group id."
}
},
"required": [
"group_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡scheduleit_create_group(name, color_back, position, min_resources, max_resources, ...)
WRITE: add a new resource group to the Schedule It account. POST /api/groups.
輸入結構描述
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 250,
"description": "Group name."
},
"color_back": {
"description": "Group colour, e.g. #66FF66.",
"type": "string",
"pattern": "^#[0-9A-Fa-f]{6}$"
},
"position": {
"description": "Position of the group in the schedule (positionv).",
"type": "integer",
"minimum": 0,
"maximum": 100000
},
"min_resources": {
"description": "Fewest resources an event needs from this group (0 = no minimum).",
"type": "integer",
"minimum": 0,
"maximum": 100000
},
"max_resources": {
"description": "Most resources an event can use from this group (0 = no limit).",
"type": "integer",
"minimum": 0,
"maximum": 100000
},
"hide_from_main": {
"description": "Hide the group from the main schedule view.",
"type": "boolean"
},
"hide_from_event": {
"description": "Hide the group from the event form.",
"type": "boolean"
}
},
"required": [
"name"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴scheduleit_update_group(group_id, name, color_back, position, min_resources, ...)
WRITE: change fields of an existing resource group; only the fields you pass are changed. POST /api/groups/{id}.
輸入結構描述
{
"type": "object",
"properties": {
"group_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Schedule It group id."
},
"name": {
"description": "Group name.",
"type": "string",
"minLength": 1,
"maxLength": 250
},
"color_back": {
"description": "Group colour, e.g. #66FF66.",
"type": "string",
"pattern": "^#[0-9A-Fa-f]{6}$"
},
"position": {
"description": "Position of the group in the schedule (positionv).",
"type": "integer",
"minimum": 0,
"maximum": 100000
},
"min_resources": {
"description": "Fewest resources an event needs from this group (0 = no minimum).",
"type": "integer",
"minimum": 0,
"maximum": 100000
},
"max_resources": {
"description": "Most resources an event can use from this group (0 = no limit).",
"type": "integer",
"minimum": 0,
"maximum": 100000
},
"hide_from_main": {
"description": "Hide the group from the main schedule view.",
"type": "boolean"
},
"hide_from_event": {
"description": "Hide the group from the event form.",
"type": "boolean"
}
},
"required": [
"group_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢scheduleit_list_labels(fields, limit)
List the labels that can be put on events (for example Confirmed, Urgent). Pass `fields` (e.g. id,name) for more than the short summary. GET /api/labels.
輸入結構描述
{
"type": "object",
"properties": {
"fields": {
"description": "Comma-separated fields to return, e.g. id,name.",
"type": "string",
"maxLength": 500,
"pattern": "^[A-Za-z0-9_]+(,[A-Za-z0-9_]+)*$"
},
"limit": {
"description": "Most labels to return, 1-1000 (default 100).",
"type": "integer",
"minimum": 1,
"maximum": 1000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢scheduleit_list_label_groups(fields, limit)
List label groups (the categories that labels are organised in). Pass `fields` (e.g. id,name) for more than the short summary. GET /api/labelgroups.
輸入結構描述
{
"type": "object",
"properties": {
"fields": {
"description": "Comma-separated fields to return, e.g. id,name.",
"type": "string",
"maxLength": 500,
"pattern": "^[A-Za-z0-9_]+(,[A-Za-z0-9_]+)*$"
},
"limit": {
"description": "Most label groups to return, 1-1000 (default 100).",
"type": "integer",
"minimum": 1,
"maximum": 1000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}社群
證據