Schedule it MCP by usefulapi
Server Details
Read Schedule it events, resources, groups and labels; create and update events and resources.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- Repository
- m190/usefulapi-mcp
- GitHub Stars
- 0
TDQS
Scored across 15 tools
Each tool targets a single resource type (event, group, resource, label, label group) combined with a single action, so the boundaries are clear. The only mild adjacency is list_groups vs list_label_groups, but the descriptions explicitly distinguish resource groups from label categories.
All 15 tools follow the same scheduleit_verb_noun pattern (create_/get_/list_/update_/delete_ + entity), with no mixing of casing or verb styles. The naming maps predictably onto the REST endpoints described.
15 tools is a well-scoped size for a scheduling API with three mutable entities plus two read-only label surfaces. Every tool corresponds to a distinct operation; nothing looks redundant or filler.
Events, resources and groups all have create/get/list/update, and events also have delete, covering the main scheduling lifecycle including bulk-field selection and modified_after filtering. The gaps are the missing delete_group and delete_resource operations (and no single-label get), which are minor but leave dead ends for cleanup workflows.
Available Tools
15 toolsscheduleit_create_eventCreate eventAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Notes. On update an empty string clears them. | |
| title | Yes | Event title. | |
| date_end | No | End, yyyy-mm-dd hh:mm[:ss]. | |
| priority | No | Priority number (Schedule It's priority scale). | |
| completed | No | Percent completed, 0-100. | |
| color_back | No | Background colour, e.g. #FFFFFF. | |
| color_text | No | Text colour, e.g. #66FF66. | |
| date_start | No | Start, yyyy-mm-dd hh:mm[:ss]. | |
| resource_ids | No | Resources (people, rooms, equipment) the event is linked to (the `owner` field). On update this REPLACES the whole list. | |
| custom_fields | No | Custom field values keyed custom1..custom9 (the account's custom field labels are set in Schedule It). An empty string clears a field. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false and openWorldHint=true, so the description earns credit for adding what they don't: the created event becomes visible to all users with schedule access, and Schedule It may fire notifications to linked resources under the account's own settings. Both are real side effects beyond the structured hints. It stops short of describing failure behavior, permission requirements, or what the call returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences plus the endpoint, front-loaded with the WRITE marker and the resource, then side effects, then the pre-call caution. Every clause carries information; nothing is redundant with the title or the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter create tool with a nested custom_fields object, the description supplies the operation's meaning and side effects, and the schema carries the parameter burden. The remaining gap is the return value: with no output schema, the description never says whether the new event (or its id) is returned, which the agent needs to chain into a follow-up get or update.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3 and the schema already documents all ten parameters including the REPLACES-or-clear semantics for resource_ids, notes and custom_fields. The description only gestures at 'title, dates and resources' as the fields to confirm, adding no format or syntax information beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('WRITE: create a new event') and enumerates the domain shapes (booking, shift, job, task), so the agent knows exactly what object is produced. Because every sibling operates on a different resource (group, resource, get/list/update/delete), the create-a-new-event framing is unambiguous without needing to name a sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit pre-call instruction ('Confirm the title, dates and resources with the user first') and states the outcome of a successful call (visible to everyone with schedule access), which tells the agent the stakes of the operation. It doesn't explicitly contrast with scheduleit_update_event or state when-not to use this, so it falls short of the full when/alternatives treatment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scheduleit_create_groupCreate groupBInspect
WRITE: add a new resource group to the Schedule It account. POST /api/groups.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Group name. | |
| position | No | Position of the group in the schedule (positionv). | |
| color_back | No | Group colour, e.g. #66FF66. | |
| max_resources | No | Most resources an event can use from this group (0 = no limit). | |
| min_resources | No | Fewest resources an event needs from this group (0 = no minimum). | |
| hide_from_main | No | Hide the group from the main schedule view. | |
| hide_from_event | No | Hide the group from the event form. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=true, so the description's 'WRITE:' prefix largely restates the mutation behavior. It adds some value by naming the underlying endpoint (POST /api/groups), but says nothing about failure modes such as duplicate names, required permissions, or whether the new group is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two terse fragments that front-load the write intent and the resource, with zero filler. The endpoint reference is mildly redundant for an agent but not wasteful; the only criticism is extreme brevity rather than verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a seven-parameter creation tool with no output schema, the description conveys the core action but omits what the agent gets back, such as the new group's identifier, and offers no guidance on validation or duplicate handling. It is adequate for calling the tool but not for interpreting the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each of the seven properties carries its own description with constraints such as color patterns and 0-means-no-limit semantics, so the schema does the heavy lifting. The description adds no additional parameter meaning, which makes the baseline 3 correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'add' with the resource 'resource group', making the create semantics unambiguous and contrasting implicitly with the sibling update_group. It stops short of naming siblings explicitly, but an agent can readily distinguish it from get_group, list_groups, and update_group.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'WRITE: add a new resource group' phrasing implies this is the creation path, which is useful context, but the description never states when to prefer it over update_group or what prerequisites apply, such as whether the group name must be unique. The usage guidance is inferable rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scheduleit_create_resourceCreate resourceAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Resource name. | |
| No | Email address of the resource (an empty string clears it on update). | ||
| details | No | Detail values keyed data1..data10 (for example data1 = job title; the labels are set in Schedule It). An empty string clears a field. | |
| group_ids | No | Groups the resource belongs to (the `owner` field). On update this REPLACES the whole list. | |
| color_back | No | Resource background colour, e.g. #A9F5A9. | |
| color_text | No | Resource text colour. | |
| color_event_back | No | Background colour of this resource's events. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (not read-only, not idempotent, not destructive, open-world), so the description's job is to add context – and it does: creation may consume a licensed resource/user slot, and details should be confirmed with the user before writing. It does not state what happens if a duplicate name already exists, which is the main remaining behavioral unknown.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences: action and scope first, licensing caveat second, confirmation requirement third, endpoint last. No filler, and the most important constraints are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema is rich and annotated, but with no output schema the description never says what a successful create returns (e.g. the new resource id) or how to reference the resource afterwards, which matters for a non-idempotent create with 7 fields including a nested object. Coverage of inputs and licensing is otherwise adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the nested details object (data1..data10) is fully documented in the schema, so the description owes little. It adds no field-level semantics beyond the schema, which is the baseline-3 case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (add/create) and resource (person, room, equipment) in a named account, plus the underlying endpoint POST /api/resources. An agent can distinguish it from scheduleit_create_event and scheduleit_create_group without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Confirm the details with the user first' line gives a useful pre-call instruction, and the WRITE prefix implies this is the creation path. However, it never names the sibling to use instead for modifying an existing resource (scheduleit_update_resource) or for checking for duplicates (scheduleit_list_resources / scheduleit_get_resource), so the when-not case must be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scheduleit_delete_eventDelete eventADestructiveIdempotentInspect
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}.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Must be true: the user confirmed this event should be permanently deleted. | |
| event_id | Yes | Schedule It event id to delete. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, but the description adds value beyond them by stating the deletion is irreversible ('cannot be undone through the API') and restating the user-confirmation requirement. The leading 'WRITE, DESTRUCTIVE' label merely repeats the annotations, so it earns no extra credit, and no cascade/side-effect details are given.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences with the destructive/irreversible warning front-loaded, followed by the usage gate and endpoint. Nothing is padded and the ordering matches decision priority.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter delete with full schema coverage, rich annotations, and no output schema, the description covers the only things an agent could get wrong: irreversibility, single-target scope, and the need for explicit user intent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — both event_id and the confirm const are fully documented in the schema. The description adds only the implicit 'one event per call' framing, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb + resource ('permanently delete one event or task') with scope ('one'), immediately distinguishing it from the create/get/update/list siblings. The DELETE endpoint path reinforces the exact operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit precondition: 'Only call this when the user clearly asked for this event to be deleted' — a real guardrail against speculative deletion. It doesn't name a sibling alternative (e.g., update_event if the user only wants a change), so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scheduleit_get_eventGet eventARead-onlyInspect
One event or task by id with ALL its fields (title, dates, linked resources, notes, completion, priority, custom fields). GET /api/events/{id}.
| Name | Required | Description | Default |
|---|---|---|---|
| event_id | Yes | Schedule It event id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false. The description adds that all fields come back, including custom fields, and it names the underlying endpoint GET /api/events/{id}. It says nothing, though, about what happens when the id is unknown or unsupported (an error versus an empty result) or about access permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two terse sentences with no filler: the scope plus the returned-field list comes first and the endpoint reference comes last. Every clause adds information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Because there is no output schema, the parenthetical field list usefully tells the agent what to expect from the response. With one required parameter and annotations covering the safety profile, the definition is close to complete; the only real gap is error or not-found behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has a description coverage of 100% with a single well-documented required integer event_id, so the baseline is 3. The description's "by id" adds no format, range or validation detail beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (retrieval), resource (event or task) and retrieval key (by id), and enumerates the fields returned, which clearly separates it from the group/resource getters among its siblings. It never explicitly contrasts itself with scheduleit_list_events, so it just misses the top score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"By id" implies the usage context: call this when you already hold an id that a list or create call returned. There are no explicit when/when-not rules and no mention of the alternative call scheduleit_list_events, so the guidance stays implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scheduleit_get_groupGet groupARead-onlyInspect
One resource group by id with ALL its fields. GET /api/groups/{id}.
| Name | Required | Description | Default |
|---|---|---|---|
| group_id | Yes | Schedule It group id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered by structured data. The description adds one genuinely useful behavioral fact — that the response includes ALL fields, so no follow-up call is needed for a complete record — but says nothing about auth requirements, error behavior for unknown ids, or how it differs from a filtered read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, and the most decision-relevant fact ('ALL its fields') is front-loaded. The trailing 'GET /api/groups/{id}' is mild redundancy against the tool name, though it does help an agent map the tool to the underlying API surface.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read with annotation coverage and no output schema, the description supplies what an agent actually needs: that it returns a complete record for one id. No output schema exists, so the 'ALL its fields' note does the job that a return-value description would otherwise do.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter carries its own description ('Schedule It group id'), so the baseline is 3. The description's 'by id' restates the obvious and adds no format, range, or sourcing guidance (e.g. how to obtain a valid group_id) beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get group' implied by 'One resource group by id') plus scope: a single group, not a collection, with 'ALL its fields'. This contrasts implicitly with the list_groups sibling. It stops short of naming the alternative tool outright, so it lands just below top marks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer it should call this when it has a group id and needs the complete record rather than a list. There is no explicit when-to-use statement, no exclusion (e.g. 'use list_groups to find ids first'), and no note about behavior on a nonexistent id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scheduleit_get_resourceGet resourceARead-onlyInspect
One resource by id with ALL its fields (name, email, groups, details 1-10, colours, skills). GET /api/resources/{id}.
| Name | Required | Description | Default |
|---|---|---|---|
| resource_id | Yes | Schedule It resource id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds genuinely useful behavior: it enumerates the returned field set (name, email, groups, details 1-10, colours, skills), which matters because no output schema exists. It omits error behavior for an unknown id.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the resource and scope, plus the endpoint. No filler or repetition of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read with no output schema, listing the returned fields is the key missing piece and the description supplies it. Only minor gaps remain, such as behavior when the id does not exist.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter and schema description coverage is 100%, so the schema fully documents resource_id. The description's 'by id' adds nothing beyond that, which is the expected baseline for a single fully documented parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: fetch one resource by id with all its fields. The word 'One' implicitly contrasts with the sibling scheduleit_list_resources, though it never names it explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'one resource by id' – an agent can infer this is for looking up a single known resource. There is no explicit statement about when to prefer list_resources or get_event over it, and no prerequisite or not-found guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scheduleit_list_eventsList eventsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Most events to return, 1-1000 (default 100). | |
| title | No | Events whose title contains this text. | |
| fields | No | Comma-separated fields to return, e.g. id,title,date_start,date_end,owner. | |
| date_to | No | Events up to this date (date_range_to). | |
| date_from | No | Events from this date (date_range_from). | |
| event_ids | No | Only these event ids. | |
| tasks_only | No | true = only tasks, false = only events that are not tasks. | |
| no_date_only | No | true = only events with no date, false = only dated ones. | |
| resource_ids | No | Only events linked to these resources (see resource_match). | |
| workspace_id | No | Workspace id (Account Settings > Workspaces). Omit for the main workspace (id 1). | |
| modified_after | No | Only events added or changed after this date (yyyy-mm-dd) or date and time (yyyy-mm-dd hh:mm). | |
| resource_match | No | With resource_ids: any = linked to at least one (default), all = linked to every one, none = linked to none of them. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, destructiveHint=false), and the description adds genuinely non-obvious behavior: default date range, default limit of 100, no paging at all, and that the API returns only a short summary unless fields are named. The semantics of the returned `owner` field are also disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single tight paragraph, front-loaded with purpose then defaults, field selection, paging constraint, and the polling warning. The trailing 'GET /api/events' is the only marginally expendable fragment.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 12 optional parameters and no output schema, the description carries the return-shape burden well by explaining that replies are short summaries and how to expand them. It never touches `workspace_id` scoping or `event_ids` vs filter interplay, but the schema documents both adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema: the distinction between `resource_ids` as a filter and `owner` as the returned resource linkage, and the strategy 'narrow with the filters instead' of paging given the hard `limit` cap. It does not explain `tasks_only` / `no_date_only` semantics further than the schema already does.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ('List scheduled events and tasks') and immediately clarifies the domain vocabulary (bookings, shifts, jobs). It explicitly contrasts itself with the sibling get_event, which returns ALL fields of one event, so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit guidance on defaults ('Without date_from/date_to Schedule It uses its default date range'), on how to broaden the reply ('pass fields'), on the alternative tool for full detail ('get_event returns ALL fields of one event'), and an explicit anti-pattern with a replacement ('Do not call this repeatedly to watch for changes (use modified_after)').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scheduleit_list_groupsList groupsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Groups whose name contains this text. | |
| limit | No | Most groups to return, 1-1000 (default 100). | |
| fields | No | Comma-separated fields to return, e.g. id,name. | |
| group_ids | No | Only these group ids. | |
| workspace_id | No | Workspace id (Account Settings > Workspaces). Omit for the main workspace (id 1). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint true, destructiveHint false, openWorldHint true), so the bar is lower. The description still adds real behavioral context: without `fields` you get only a short summary, and it discloses the underlying endpoint GET /api/groups. Pagination/limit behavior is left to the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences: the resource definition is front-loaded, followed by the most decision-relevant parameter behavior and the endpoint. No sentence is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter listing tool with full schema coverage, annotations, and no output schema, the description gives enough to call it correctly. It hints at the short-summary default, though it could say more about what the summary contains or how filtering combines.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented, establishing a baseline of 3. The description only restates the `fields` parameter pattern that the schema already explains, adding no extra semantics for name, limit, group_ids, or workspace_id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('list resource groups') and parenthetically defines what a group is with concrete examples (Staff, Rooms, Vehicles), which separates it conceptually from labels and resources. It does not explicitly name sibling tools like list_label_groups to disambiguate, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus list_resources, list_labels, or list_label_groups, and no prerequisites or exclusions. The note about passing `fields` is a parameter tip, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scheduleit_list_label_groupsList label groupsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Most label groups to return, 1-1000 (default 100). | |
| fields | No | Comma-separated fields to return, e.g. id,name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds real behavioral value by disclosing that the default response is a truncated 'short summary' and that `fields` is needed for full records, but it omits pagination/limit behavior despite exposing a limit parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short clauses, front-loaded with the purpose and the concept definition before the practical hint. No filler, though the raw endpoint path is of marginal value to an agent versus the rest of the sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, zero-required-parameter list tool with no output schema and full schema coverage, this covers what the agent needs: what the resource is, and that the default result is abbreviated unless `fields` is supplied.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, documenting both `limit` (1-1000, default 100) and `fields` with the pattern and example. The description's `fields` example duplicates the schema; it adds the rationale (summary vs full) but nothing about `limit`.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (list label groups) and adds a clarifying gloss that distinguishes them from labels themselves, which implicitly separates it from the sibling list_labels. It does not explicitly name that sibling, so it stops short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives one actionable usage cue — pass `fields` when the short summary is insufficient — but says nothing about when to choose this tool over scheduleit_list_labels or scheduleit_get_group, and offers no prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scheduleit_list_labelsList labelsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Most labels to return, 1-1000 (default 100). | |
| fields | No | Comma-separated fields to return, e.g. id,name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds only that the default response is a 'short summary' and the underlying endpoint; it says nothing about pagination behavior or result ordering beyond what the schema states.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with the core purpose front-loaded, followed by the optional-detail hint. The trailing 'GET /api/labels' is mild implementation trivia but takes little space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, non-destructive, two-optional-parameter list tool with full schema coverage and clear annotations, the description supplies everything needed to select and call it; no output schema means return-value explanation is not required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented, and the baseline is 3. The description adds marginal value by explaining that passing `fields` yields more than the default short summary, but the `limit` parameter and the field-name pattern are left entirely to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List the labels that can be put on events') and adds concrete examples (Confirmed, Urgent). It does not explicitly distinguish itself from the sibling scheduleit_list_label_groups, so a reader must infer that this returns labels rather than label groupings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the phrase 'labels that can be put on events,' suggesting it is a lookup performed before tagging events. No explicit when-not or named alternative (e.g. list_label_groups) is given, leaving the agent to infer the choice between the two.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scheduleit_list_resourcesList resourcesARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Resources whose name contains this text. | |
| limit | No | Most resources to return, 1-1000 (default 100). | |
| fields | No | Comma-separated fields to return, e.g. id,name,email. | |
| group_ids | No | Only resources in these groups. | |
| resource_ids | No | Only these resource ids. | |
| workspace_id | No | Workspace id (Account Settings > Workspaces). Omit for the main workspace (id 1). | |
| modified_after | No | Only resources added or changed after this date (yyyy-mm-dd) or date and time (yyyy-mm-dd hh:mm). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the bar is lower; the description still adds real behavior beyond them: responses are summarized unless `fields` is supplied, there is no pagination, and the reply is silently capped at `limit` (default 100). It does not mention auth or rate-limit behavior, but the truncation semantics are exactly the kind of trait that prevents misuse.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and definition, then immediately the highest-value caveat (summary unless `fields`). Dense parentheticals pack a lot into few words, though the parenthetical about groups/`owner` is syntactically awkward and interrupts the flow.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description carries the return-value burden and does so: short summary by default, fuller shape via `fields`, at most `limit` records, no paging. Combined with the annotations covering safety, an agent has everything needed to call this correctly on the first try.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds meaning beyond the schema: a concrete `fields` example (id,name,email,data1), the `limit` default of 100, and the non-obvious fact that `owner`/groups are group ids rather than resource owners. It says nothing about `workspace_id`, `modified_after`, `name`, or `resource_ids`, which is why it falls short of 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List resources') and immediately defines what a resource is (people, rooms, equipment, vehicles). It explicitly distinguishes itself from the sibling get_resource, which returns ALL fields of one, so an agent can route between list vs. get without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete routing advice — pass `fields` for more than the short summary, use get_resource for the full record of one — plus a note that there is no paging and that `limit` caps the reply. It does not state explicit exclusions against other list siblings (list_events, list_groups), but the resource-vs-group relationship is clarified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scheduleit_update_eventUpdate eventADestructiveIdempotentInspect
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}.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Notes. On update an empty string clears them. | |
| title | No | Event title. | |
| date_end | No | End, yyyy-mm-dd hh:mm[:ss]. | |
| event_id | Yes | Schedule It event id. | |
| priority | No | Priority number (Schedule It's priority scale). | |
| completed | No | Percent completed, 0-100. | |
| color_back | No | Background colour, e.g. #FFFFFF. | |
| color_text | No | Text colour, e.g. #66FF66. | |
| date_start | No | Start, yyyy-mm-dd hh:mm[:ss]. | |
| resource_ids | No | Resources (people, rooms, equipment) the event is linked to (the `owner` field). On update this REPLACES the whole list. | |
| custom_fields | No | Custom field values keyed custom1..custom9 (the account's custom field labels are set in Schedule It). An empty string clears a field. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (destructiveHint=true, idempotentHint=true, openWorldHint=true), and the description adds genuinely new behavioral detail: resource_ids replaces the entire list rather than appending, empty string clears notes/custom fields, and date/resource changes may trigger notifications. It does not contradict the destructive hint, but it also does not reconcile the partial-update framing with the destructive flag or mention failure behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense paragraph, front-loaded with the WRITE marker and partial-update rule, followed by replacement/clearing rules and then side effects. Every clause conveys a distinct constraint; nothing is repeated or padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists and this is an 11-parameter mutation with nested objects, yet the description covers the critical semantics an agent needs to call it safely. Remaining gaps are error/validation behavior for invalid resource ids and confirmation of the return shape, which are modest for a partial-update endpoint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description earns a bump by foregrounding the non-obvious mutation semantics (list replacement, empty-string clearing) that are the easiest things to get wrong. It adds little beyond what the schema descriptions already state, and none of the 11 parameters' valid ranges are discussed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with an explicit verb+resource pair ("change fields of an existing event") and immediately qualifies scope as partial-update semantics, which cleanly separates it from scheduleit_create_event and scheduleit_delete_event. An agent can select this tool without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear context for use: fields not passed remain unchanged, and empty strings are the explicit clearing mechanism. It stops short of naming alternatives (e.g. get_event to inspect before updating) or stating preconditions, so no exclusions are offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scheduleit_update_groupUpdate groupADestructiveIdempotentInspect
WRITE: change fields of an existing resource group; only the fields you pass are changed. POST /api/groups/{id}.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Group name. | |
| group_id | Yes | Schedule It group id. | |
| position | No | Position of the group in the schedule (positionv). | |
| color_back | No | Group colour, e.g. #66FF66. | |
| max_resources | No | Most resources an event can use from this group (0 = no limit). | |
| min_resources | No | Fewest resources an event needs from this group (0 = no minimum). | |
| hide_from_main | No | Hide the group from the main schedule view. | |
| hide_from_event | No | Hide the group from the event form. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, destructive=true, idempotent=true, and openWorld=true, so the safety profile is covered. The description adds a genuinely non-obvious trait: this is a partial update where omitted fields are left untouched, despite the underlying POST verb. It does not say what a bad group_id does or what the response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with the mutation warning front-loaded as "WRITE:" and the endpoint appended. No filler, nothing restated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter partial-update tool with full schema documentation and no output schema, the definition covers what the agent needs to invoke it correctly. Minor gap: no mention of authorization requirements or failure behavior for an invalid group_id.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and every field is documented with constraints, so the baseline is 3. The sentence "only the fields you pass are changed" adds real semantic value about the seven optional parameters — it tells the agent that omitting a field means "leave as-is," which the schema cannot express.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"change fields of an existing resource group" gives a specific verb and resource, and the "existing" qualifier separates it from scheduleit_create_group. It does not name any sibling or alternative explicitly, so it stops short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the agent can infer "use this to modify a group that already exists, use create_group otherwise." There is no explicit when-to-use versus update_event/update_resource guidance, no prerequisites, and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scheduleit_update_resourceUpdate resourceADestructiveIdempotentInspect
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}.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Resource name. | |
| No | Email address of the resource (an empty string clears it on update). | ||
| details | No | Detail values keyed data1..data10 (for example data1 = job title; the labels are set in Schedule It). An empty string clears a field. | |
| group_ids | No | Groups the resource belongs to (the `owner` field). On update this REPLACES the whole list. | |
| color_back | No | Resource background colour, e.g. #A9F5A9. | |
| color_text | No | Resource text colour. | |
| resource_id | Yes | Schedule It resource id. | |
| color_event_back | No | Background colour of this resource's events. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real semantics beyond the annotations: selective field updates, list replacement for group_ids, and empty-string clearing of email/details. Annotations already flag destructiveHint and idempotentHint, so the description doesn't need to restate risk, but it could note that replacement of group_ids is the destructive path rather than leaving the agent to infer it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact clauses with zero filler, front-loaded with the "WRITE:" marker that signals mutation first. Every clause carries distinct operational meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the mutation model, clearing semantics and list-replacement hazard for an 8-parameter tool with a nested details object and no output schema. It leaves out error behavior (e.g. what happens with an unknown resource_id) and return shape, which the agent must assume.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema itself already documents the group_ids REPLACES behavior and the empty-string clearing rule, so the description mostly restates structured data. It adds a little emphasis on partial-update semantics but no new per-parameter detail (e.g. color pattern, details key range).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Leads with an explicit operation class ("WRITE: change fields of an existing resource") naming both verb and resource, and the word "existing" cleanly separates it from the sibling create_resource. The endpoint reference (POST /api/resources/{id}) reinforces the target so an agent can distinguish it from update_event and update_group without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States the operative condition clearly: only the fields you pass are changed, so partial updates are safe. It does not name alternatives or exclusions (e.g. use create_resource for new resources, delete_event for removal), so routing still requires inference from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
15 tool updates
- First observed
scheduleit_create_event - First observed
scheduleit_create_group - First observed
scheduleit_create_resource - First observed
scheduleit_delete_event - First observed
scheduleit_get_event - First observed
scheduleit_get_group - First observed
scheduleit_get_resource - First observed
scheduleit_list_events - First observed
scheduleit_list_groups - First observed
scheduleit_list_label_groups - First observed
scheduleit_list_labels - First observed
scheduleit_list_resources - First observed
scheduleit_update_event - First observed
scheduleit_update_group - First observed
scheduleit_update_resource
Related MCP Connectors
Read AddEvent calendars, events, RSVPs and subscribers; create and update calendars and events.
Read and search Teamup Calendar events and sub-calendars; create, update, delete and undo events.
Read tasks, habits, events and scheduling links; create and update Reclaim tasks and habits.
Read appointments, types, calendars and availability; create, cancel or reschedule bookings.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables AI agents to discover bookable time slots, book and cancel meetings, list events, and enable or disable scheduling links. Also supports managing webhooks and exposes write/destructive operations with MCP annotations so clients can confirm before acting.1250 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables managing a Google calendar as a set of non-overlapping events representing one person's time.MIT
- AlicenseNot gradedqualityDmaintenanceEnables MCP clients to manage Google Calendar events, including CRUD operations, recurring events, free/busy queries, and push notifications via webhooks.ISC
- AlicenseAqualityCmaintenanceEnables reading, creating and editing events in selected Nextcloud calendars over CalDAV, with credentials kept in a desktop keyring wallet rather than project files. Supports calendar listing, bounded event queries, structured event details, non-recurring event creation, and revision-checked patching of titles, descriptions, locations and times.5AGPL 3.0
Glama MCP Gateway
Add one secure layer between your agents and this server.