Schedule it MCP by usefulapi

Read Schedule it events, resources, groups and labels; create and update events and resources.

我该使用它吗

质量与安全性

A
描述质量
100%
模式完整度
97%
命名质量
80%
投毒风险
100%
权限匹配度
100%
协议合规性
100%

基于对工具定义和协议合规性的自动分析。

上下文开销

~4,874token 数(工具定义)
~2.6 KB典型响应大小
对注意力有显著影响(占 128k 上下文窗口的 3.81%)

这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 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"
}

社区

评价此服务器

证据

最近观测

已验证未记录版本15 个工具