Skip to main content
Glama

Server Details

Check shifts, time clock entries, time-off requests, swaps and availability, and manage shifts.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL
Repository
m190/usefulapi-mcp
GitHub Stars
0

TDQS

A3.9/5.0

Scored across 21 tools

Disambiguation4/5

Most tools target a distinct resource+action (shift CRUD, time-off CRUD, users, schedules, positions, availability, swaps, times), and the descriptions explicitly clarify tricky cases like 'location' meaning schedule. Minor overlap: create_shift accepts a published flag while separate publish_shifts/unpublish_shifts tools also exist, which could briefly confuse a caller about the intended publish path.

Naming Consistency5/5

Every tool follows the same wheniwork_verb_noun snake_case pattern (create_shift, get_shift, list_shifts, update_shift, publish_shifts, list_time_off_requests, etc.). No mixed conventions or vague verbs, and the prefix makes the server origin obvious.

Tool Count4/5

21 tools for a broad scheduling domain covering shifts, time off, users, schedules, positions, availability, swaps, hours and annotations is reasonable, with each tool mapping to a real API operation. It sits at the upper end of the ideal range and could be trimmed slightly, but nothing feels redundant.

Completeness3/5

Shift, time-off and shift-listing lifecycles are well covered (create/get/update/list/publish/unpublish) and time off can be canceled via update, but there is no delete_shift and no create/update for users or positions. Break handling is conspicuously absent despite update_shift's warnings about break arrays, leaving notable dead ends.

Available Tools

21 tools
wheniwork_create_shiftCreate a shiftA
Destructive
Inspect

Create one shift on a schedule — assigned to a user, or open (user_id 0). Created as a draft unless published is true. Undo by editing it or unpublishing. When I Work: POST /2/shifts.

ParametersJSON Schema
NameRequiredDescriptionDefault
colorNoHex colour without #, e.g. cc0000.
notesNoShift notes shown to the employee.
site_idNoJob site for the shift.
user_idNoThe user to assign. 0 (or omitted on create) makes it an open shift.
end_timeYesShift end, date-time with offset.
is_sharedNoFor an open shift: a shared open shift.
publishedNoPublish it immediately (default: draft).
break_timeNoUnpaid break length in hours, e.g. 0.5.
start_timeYesShift start, date-time with offset, e.g. 2026-10-05T08:00:00-05:00.
location_idYesThe schedule (location) the shift belongs to id.
position_idNoPosition for the shift.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The destructiveHint=true annotation only tells the agent this mutates state; the description adds the genuinely useful defaults (draft vs. published, open vs. assigned) and the undo route. It does not disclose permission requirements or what happens on validation failure, but it exceeds the annotation's information.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the primary action, then the variant, then the default state, then remediation. No filler and nothing buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter create tool with no output schema, the description covers creation mode, default state, and undo, but says nothing about the returned object or how to obtain the new shift's id for follow-up edits. Adequate but with a real gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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. The description restates the user_id 0 = open-shift convention and the published default, which the schema already documents, adding little new parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Create one shift on a schedule') and immediately disambiguates the two creation modes: assigned to a user vs. open (user_id 0). It is clearly distinct from update_shift / publish_shifts in intent, though it never names those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives actionable context: the record is a draft unless published is true, and the reversal path is 'editing it or unpublishing' — which points the agent at when to use update_shift / unpublish_shifts. It stops short of an explicit 'use this instead of X when Y' statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wheniwork_create_time_off_requestCreate a time-off requestA
Destructive
Inspect

Create a time-off request for a user (default the calling user). It starts pending; cancel it with wheniwork_update_time_off_request (status 1). Get type ids from wheniwork_list_time_off_types. When I Work: POST /2/requests.

ParametersJSON Schema
NameRequiredDescriptionDefault
paidNoWhether it is paid time off.
hoursNoHours of paid time off to use.
type_idNoTime-off type id (Personal, Sick, Holiday...).
user_idNoWho is taking time off (default the calling user).
end_timeYesEnd of the time off, full date-time.
start_timeYesStart of the time off, full date-time.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only give destructiveHint=true; the description adds crucial lifecycle context that the annotation cannot convey: the request starts pending, and cancellation is done via a separate update call with status 1. This is genuinely helpful behavioral detail. It doesn't cover permissions or idempotency, so not a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the action, then state, then prerequisites and alternative. No filler; every clause has a concrete purpose (routing, lifecycle, endpoint).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no output schema and full schema coverage, the description covers what an agent needs: the call's effect, initial state, cancel path, and type_id source. It omits raw HTTP/return details, but that's acceptable given the endpoint reference and schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all six parameters are already documented in the schema, including defaults and formats. The description adds the type_id sourcing hint (via list_time_off_types), but otherwise restates rather than extends the schema. Baseline 3 applies since the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Create a time-off request') and adds scope ('for a user, default the calling user'). It distinguishes itself from sibling get/list/update tools by naming the exact creation action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes to alternatives: use wheniwork_list_time_off_types to get type ids and wheniwork_update_time_off_request to cancel. States the initial state (pending) and the cancel condition (status 1), leaving no ambiguity about lifecycle.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wheniwork_get_accountGet the accountA
Read-only
Inspect

Fetch the When I Work account (workplace) the token acts on — company name, plan and settings; for a parent account also its child accounts. A cheap way to confirm the credentials work. When I Work: GET /2/account.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so safety is covered. The description adds real value beyond that: it clarifies token scoping ('the token acts on'), describes the returned payload including parent/child account behavior, and notes the call is cheap — all useful for an agent deciding whether to invoke it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single tight sentence with the core purpose front-loaded, followed by the return contents and a usage note. The trailing 'When I Work: GET /2/account' mapping is compact and informative rather than wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no parameters, the description carries the full burden and discharges it: it explains what is returned, how parent accounts behave, and why an agent might call it. Nothing needed to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so per the baseline a 4 applies; there is nothing for the description to compensate for. The schema coverage is 100% but empty, and the description correctly implies no inputs are needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Fetch) and resource (the When I Work account/workplace), and enumerates what it returns: company name, plan, settings, and child accounts for a parent account. This is clearly distinguishable from the sibling tools, which all operate on shifts, users, time-off, or lists.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a concrete use case ('A cheap way to confirm the credentials work') and implicitly scopes the call to the token's account. It does not name alternatives or when-not to use it, but the context is clear enough to guide selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wheniwork_get_shiftGet one shiftA
Read-only
Inspect

Fetch one shift by id, including its breaks and publish state. When I Work: GET /2/shifts/{id}.

ParametersJSON Schema
NameRequiredDescriptionDefault
shift_idYesThe shift id.
include_repeating_shifts_toNoAlso expand the shift's repeating series up to this date. Date-time, e.g. 2026-10-05T08:00:00-05:00 (When I Work's own examples also use RFC 2822, e.g. "Mon, 05 Oct 2026 08:00:00 -0500").

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint=true), and the description adds real behavioral value by disclosing what the response contains (breaks and publish state) and the REST mapping. It stops short of noting auth requirements or error behavior, so it is not a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the core action and benefit, with the endpoint mapping trailing. No filler words and nothing redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-resource read tool with 100% schema coverage and annotations carrying the safety profile, this is nearly complete; calling out breaks and publish state partially compensates for the absent output schema. Only missing pieces are auth/error expectations, which are minor here.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% – both shift_id and include_repeating_shifts_to are already well documented, including date-time formats. The description adds no parameter-level meaning beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Fetch one shift by id') and even names the underlying endpoint (GET /2/shifts/{id}). The word 'one' plus the id requirement cleanly separates it from wheniwork_list_shifts without needing the sibling's schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by 'by id' – an agent can infer this is the single-record lookup versus list_shifts – but there is no explicit when-to-use/when-not guidance or mention of the alternative tools. Minimum viable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wheniwork_get_time_off_requestGet one time-off requestA
Read-only
Inspect

Fetch one time-off request by id, with its message thread and users. When I Work: GET /2/requests/{request_id}.

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idYesThe time-off request id.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so safety is covered. The description adds non-obvious return context — that the response embeds the message thread and associated users — which is genuinely useful for an agent deciding whether one call suffices.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One compact sentence plus a short endpoint reference; the key behavior (fetch one by id, includes thread and users) is front-loaded with zero filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With one fully documented parameter, no output schema, and readOnlyHint covering safety, the description is nearly sufficient on its own; the mention of the embedded message thread and users compensates for the missing output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single request_id parameter is fully documented there, so the baseline is 3. The description only restates that lookup is by id and adds no format or constraint detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Fetch) and resource (one time-off request) with the retrieval key (by id), which cleanly separates it from the sibling wheniwork_list_time_off_requests. It also names the upstream endpoint, leaving no ambiguity about what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'one ... by id' phrasing implies this is the single-record lookup versus the list tool, but no explicit when-to-use or when-not-to-use guidance is given. Usage must be inferred from the singular/plural naming and the required id.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wheniwork_get_userGet one userA
Read-only
Inspect

Fetch one user by id — name, email, role, positions, schedules, wage. When I Work: GET /2/users/{id}.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYesThe user id.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so safety is covered; the description adds real value by enumerating the returned fields and naming the underlying endpoint (GET /2/users/{id}), which compensates for the absent output schema. It does not mention error behavior for a missing id, keeping it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight clauses, zero filler, with the core action front-loaded and the endpoint reference last. Every element earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read tool with no output schema, listing the returned fields plus the API endpoint gives the agent enough to invoke and interpret the call. Only the not-found/error behavior is left unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single user_id parameter, so the schema already documents it fully. The description's 'by id' adds no syntax, format, or constraint detail beyond what the schema provides, matching the baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Fetch one user by id') and enumerates the returned fields (name, email, role, positions, schedules, wage), which cleanly separates it from the sibling list_users. An agent can identify the operation 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'by id' phrasing implies you already have a user_id, which implicitly excludes the list/eligible-users siblings, but the description never explicitly names when to use this versus wheniwork_list_users or wheniwork_list_eligible_users_for_shift. Usage is inferable but not stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wheniwork_list_annotationsList schedule annotationsA
Read-only
Inspect

List schedule annotations — announcements, business-closed days and blackout dates when time off is not allowed. Defaults to today through one year out. When I Work: GET /2/annotations.

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNoEnd of the range (default one year after start). Date-time, e.g. 2026-10-05T08:00:00-05:00 (When I Work's own examples also use RFC 2822, e.g. "Mon, 05 Oct 2026 08:00:00 -0500").
start_dateNoStart of the range (default the start of today). Date-time, e.g. 2026-10-05T08:00:00-05:00 (When I Work's own examples also use RFC 2822, e.g. "Mon, 05 Oct 2026 08:00:00 -0500").
no_time_offNoOnly annotations that block time off.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true already signals a safe read, and the description adds genuine context on top: the default window (start of today through one year out) and the semantic meaning of the annotation types, including that blackout days block time off. It does not cover pagination, max result size, or auth requirements, which keeps it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences plus an endpoint reference; the resource definition and its default window are both front-loaded with zero filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool with no output schema, the description tells the agent what entities come back, their meaning, and the default range, so it is nearly self-sufficient. It omits pagination/volume expectations and any auth or rate-limit note, which are the only remaining gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents date formats and the no_time_off flag; baseline is 3. The description's 'today through one year out' reinforces the default range for start_date/end_date and its mention of time-off blocking loosely maps to no_time_off, but adds no format or syntax detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (schedule annotations), then unpacks what that resource contains: announcements, business-closed days, and blackout dates. No sibling tool covers this resource, so an agent can route to it unambiguously 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description supplies a useful behavioral default ('today through one year out') but never states when to reach for this tool versus siblings like list_time_off_requests or get_shift, nor any exclusion. Usage is only implied by the resource being listed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wheniwork_list_availabilityList availabilityA
Read-only
Inspect

List availability events — when people said they can or cannot work, including recurring patterns that fall in the window. Defaults to the caller, from now to two weeks out. When I Work: GET /2/availabilityevents.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoEnd of the window (default two weeks from now). Date-time, e.g. 2026-10-05T08:00:00-05:00 (When I Work's own examples also use RFC 2822, e.g. "Mon, 05 Oct 2026 08:00:00 -0500").
startNoStart of the window (default now). Date-time, e.g. 2026-10-05T08:00:00-05:00 (When I Work's own examples also use RFC 2822, e.g. "Mon, 05 Oct 2026 08:00:00 -0500").
user_idNoWhose availability (default the calling user).
include_allNoEveryone's availability, not just one user's — managers only.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true already establishes the safe-read profile, so the description is free to add the non-obvious traits: availability events represent can/cannot-work declarations and may include recurring patterns materialized into the window. It doesn't cover pagination or result size limits, but it meaningfully exceeds the annotation baseline.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with purpose and scope before defaults, plus the underlying endpoint for traceability. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, four-optional-parameter list tool with no output schema, the description covers purpose, default scoping, and the recurring-pattern nuance. Return shape and pagination behavior are unspecified, but the annotations and schema carry most of the remaining burden.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so start/end, user_id and include_all are already documented in detail, including date formats and the manager restriction. The description restates the caller/two-week defaults but adds no format or scoping detail the schema lacks — baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List availability events') and then defines the resource in domain terms — 'when people said they can or cannot work' — which disambiguates it from shift and time-off listing tools. It stops short of naming a sibling explicitly, so an agent must still infer the boundary versus wheniwork_list_time_off_requests.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete usage context: defaults to the caller and a now-to-two-weeks window, and the include_all parameter is flagged manager-only. There is no explicit when-not guidance or named alternative tool, so it's clear context without exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wheniwork_list_eligible_users_for_shiftList users eligible for an open shiftA
Read-only
Inspect

Find who could take an open shift — either an existing shift (shift_id) or a hypothetical one (start, end, position_id and location_id all required). When I Work: GET /2/shifts/eligible.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoEnd of the potential shift (required without shift_id). Date-time, e.g. 2026-10-05T08:00:00-05:00 (When I Work's own examples also use RFC 2822, e.g. "Mon, 05 Oct 2026 08:00:00 -0500").
startNoStart of the potential shift (required without shift_id). Date-time, e.g. 2026-10-05T08:00:00-05:00 (When I Work's own examples also use RFC 2822, e.g. "Mon, 05 Oct 2026 08:00:00 -0500").
shift_idNoAn existing shift's id.
is_sharedNoWhether it is a shared open shift.
location_idNoSchedule of the potential shift (required without shift_id).
position_idNoPosition of the potential shift (required without shift_id).
include_objectsNoInclude the users' schedules and positions in the output.

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true already establishes this is a safe read, and the description adds the underlying endpoint (GET /2/shifts/eligible) and the dual-mode behavior. It does not disclose anything about result ordering, pagination, or how eligibility is computed, which would be useful for an agent interpreting the output.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences with zero filler; the core action is front-loaded and the mode branches follow immediately. The API reference is tacked on and costs nothing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only lookup with no output schema, annotations covering safety, and full schema coverage, the description supplies the one thing structured fields omit: the choose-a-mode logic with conditional requirements. Only richer behavioral detail (ordering, cap on results) is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 supplies a conditional-requiredness rule that the schema does not express (the schema lists zero required parameters). Stating that start, end, position_id and location_id are all required without shift_id prevents a malformed call.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Find who could take an open shift') and immediately clarifies the two modes: an existing shift via shift_id or a hypothetical one via start/end/position_id/location_id. This distinguishes it from siblings like list_shifts and list_availability, which serve different questions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly explains the two invocation modes and what each requires ('either an existing shift (shift_id) or a hypothetical one'). It gives clear context for choosing a mode but does not explicitly contrast against alternative sibling tools such as list_availability.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wheniwork_list_locationsList schedules (locations)A
Read-only
Inspect

List the schedules in the account. The API calls a schedule a "location"; its id is the location_id every shift belongs to. When I Work: GET /2/locations.

ParametersJSON Schema
NameRequiredDescriptionDefault
only_unconfirmedNoOnly schedules whose address is unconfirmed.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already establishes this is a safe, non-mutating read, so the description's burden is lighter. It adds the underlying endpoint (GET /2/locations) and terminology context, but says nothing about pagination, result size, or filtering behavior beyond the optional flag.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, no filler, with the core purpose front-loaded and the terminology clarification placed immediately after. Every sentence carries information an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-optional-param read tool with annotations covering safety, the definition is nearly sufficient; the terminology mapping is the key missing piece from the schema and it is supplied. It stops short of describing what a returned schedule record contains, though with no output schema that is a minor omission.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is only one optional parameter and schema description coverage is 100%, so the schema fully documents only_unconfirmed. The description adds no additional parameter meaning, which is the expected baseline when the schema does the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List the schedules in the account') and then resolves a genuine naming ambiguity by explaining that the API calls a schedule a 'location' and that its id is the location_id every shift belongs to. That mapping is exactly what lets an agent distinguish this tool from siblings like wheniwork_list_shifts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: the note that location_id is 'the location_id every shift belongs to' hints this tool is the way to resolve that id before shift operations, but there is no explicit 'use this when / use X instead' guidance and no mention of alternatives such as wheniwork_list_shifts.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wheniwork_list_positionsList positionsB
Read-only
Inspect

List the positions (job roles such as Cashier or Dishwasher) in the account. When I Work: GET /2/positions.

ParametersJSON Schema
NameRequiredDescriptionDefault
show_deletedNoInclude deleted positions.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true, so the safety profile is already covered. The description adds domain context by defining what a 'position' is and naming the backing endpoint (GET /2/positions), but says nothing about pagination, result ordering, or response shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, zero waste, with the core purpose front-loaded and the endpoint reference trailing as supplementary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only listing tool with one fully documented optional parameter and no output schema, the description covers what the tool returns conceptually and what the filter does at a high level. Minor gaps around pagination and result ordering keep it from a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single optional parameter with 100% schema description coverage, so the schema already explains 'show_deleted'. The description adds no parameter detail, which is acceptable given the schema does the work, but it is not additive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (positions), and even glosses the resource as 'job roles such as Cashier or Dishwasher', which disambiguates it from sibling resources like locations, users, or shifts. It does not explicitly name a sibling, but the resource is distinctive enough that an agent can route correctly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives, or any stated prerequisites. 'In the account' implies account-scope listing, but nothing tells the agent when positions are the right resource to fetch versus another list tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wheniwork_list_shiftsList shiftsA
Read-only
Inspect

List scheduled shifts in a time window — who works when, where and in which position — optionally including open shifts and unpublished drafts. Answers "who is on on Friday?" and "what open shifts are left?". When I Work: GET /2/shifts.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoEnd of the window. Date-time, e.g. 2026-10-05T08:00:00-05:00 (When I Work's own examples also use RFC 2822, e.g. "Mon, 05 Oct 2026 08:00:00 -0500").
limitNoMaximum number of results.
startNoStart of the window. Date-time, e.g. 2026-10-05T08:00:00-05:00 (When I Work's own examples also use RFC 2822, e.g. "Mon, 05 Oct 2026 08:00:00 -0500").
deletedNoAlso return deleted_ids: shifts deleted in the window.
user_idNoOnly this user's shifts.
location_idNoOne or more schedule (location) ids.
unpublishedNoInclude unpublished (draft) shifts — supervisor or above.
include_openNoInclude open (unassigned) shifts from the user's schedules.
all_locationsNoInclude shifts from all schedules.
include_swapsNoInclude swap requests attached to the shifts.
include_allopenNoInclude open shifts across all schedules — manager or admin.
include_onlyopenNoReturn only open shifts.
include_repeating_shifts_toNoAlso expand repeating shift series up to this date. Date-time, e.g. 2026-10-05T08:00:00-05:00 (When I Work's own examples also use RFC 2822, e.g. "Mon, 05 Oct 2026 08:00:00 -0500").

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true already tells the agent this is a safe read. The description adds that open shifts and draft/unpublished shifts are opt-in inclusions, but the actual permission requirements for those flags live in the schema descriptions rather than here. Useful but not rich behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences: what is returned first, optional scope second, with the API endpoint as a trailing aside. No filler and the core capability is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a wide read-only list tool with no output schema and 13 fully documented params, the description covers purpose, scope, and intent mapping adequately. It omits pagination/limit behavior and time-window defaulting, which an agent calling with 13 optional params would benefit from knowing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every one of the 13 parameters is already documented with format, bounds, and permission notes. The description only gestures at 'open shifts and unpublished drafts' without adding syntax or default behavior beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (list scheduled shifts) plus the returned fields (who works when, where, position) and the optional scope expansions (open shifts, unpublished drafts). This cleanly separates it from the singular sibling wheniwork_get_shift.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete trigger questions ('who is on on Friday?', 'what open shifts are left?') that map user intent to this tool. It does not explicitly name when to prefer a sibling like wheniwork_get_shift or wheniwork_list_shift_swaps instead, so it stops short of full when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wheniwork_list_shift_swapsList shift swaps and dropsA
Read-only
Inspect

List shift requests: swaps, drops and alerts, with the shifts and users involved. Status: 0 pending, 1 approved, 2 declined, 3 completed, 4 canceled, 5 expired. Type: 1 swap, 2 drop, 3 alert. start and end must be given together. When I Work: GET /2/swaps.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoEnd of the shift window (give with start). Date-time, e.g. 2026-10-05T08:00:00-05:00 (When I Work's own examples also use RFC 2822, e.g. "Mon, 05 Oct 2026 08:00:00 -0500").
pageNoPage of results to load (the response says whether there are `more`).
typeNoOne or more types.
limitNoMaximum number of results.
startNoStart of the shift window (give with end). Date-time, e.g. 2026-10-05T08:00:00-05:00 (When I Work's own examples also use RFC 2822, e.g. "Mon, 05 Oct 2026 08:00:00 -0500").
statusNoOne or more statuses.
user_idNoOne or more user ids.
shift_idNoOne or more shift ids.
open_onlyNoOnly open swaps.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true already tells the agent this is a safe read, so the description's burden is lighter. It usefully discloses the start/end pairing constraint and the upstream endpoint (GET /2/swaps), but says nothing about result ordering, pagination behavior beyond what the schema notes, or the shape of the returned records beyond 'shifts and users involved'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose, then the code tables and the start/end constraint in tight sentences. Dense but every sentence carries information; the only mild cost is that the enumeration lists read as a run-on rather than structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter, zero-required list tool with no output schema, the description covers what is listed, the filter vocabularies, and the one cross-parameter constraint. What remains thin — default time window behavior and pagination/result-shape detail — is either in the schema or minor for a read-only listing call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 real meaning the schema lacks: it decodes the integer status values (0 pending through 5 expired) and type values (1 swap, 2 drop, 3 alert), which the schema only labels generically as 'One or more statuses/types'. It also reinforces the start/end coupling constraint.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (list shift requests) and immediately narrows scope to the three record kinds — swaps, drops, alerts — plus the related shifts and users. This clearly separates it from siblings like wheniwork_list_shifts and wheniwork_list_time_off_requests without the agent needing to open a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: an agent can infer that this is the tool for swap/drop/alert records, and the status/type enumerations hint at filtering. There is no explicit when-to-use versus wheniwork_list_shifts or wheniwork_get_shift, and no stated prerequisites (e.g. required permissions or whether a window is mandatory in practice).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wheniwork_list_time_off_requestsList time-off requestsA
Read-only
Inspect

List time-off requests in a date range, with the requesting users. Status: 0 pending, 1 canceled, 2 accepted, 3 expired, 4 denied. When I Work: GET /2/requests.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoEnd date, yyyy-mm-dd.
pageNoPage of results to load (the response says whether there are `more`).
typeNoOnly this request type.
limitNoMaximum number of results.
startNoStart date, yyyy-mm-dd.
max_idNoOnly requests created before this request id.
sortbyNo'created' sorts newest first; anything else sorts by status then last update.
statusNoOnly requests with this status.
user_idNoOne or more user ids.
since_idNoOnly requests created after this request id.
location_idNoOnly requests for this schedule.
include_deleted_usersNoInclude requests made by deleted users.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already establishes that this is a safe read, and the description adds valuable domain context that structured fields lack: the status code mapping (0 pending, 1 canceled, 2 accepted, 3 expired, 4 denied) and the underlying API endpoint. It does not describe pagination or return-shape behavior, but the schema covers 'page' and 'more'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, front-loaded with the primary purpose, then the enum-like semantics and endpoint reference. Every clause carries information; no padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter, no-required read tool with full schema coverage and a readOnly annotation, the definition covers purpose, status semantics, and the API mapping. It could mention that omitting filters returns all requests and note pagination behavior, but the schema handles the individual parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline would be 3, but the description supplies the status-code semantics that the schema omits (status is a bare integer 0-4 with no enum). That meaningfully compensates for a real enum gap in the input schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('List time-off requests in a date range, with the requesting users'), making the plural/list nature clear versus the singular sibling wheniwork_get_time_off_request. It stops short of explicitly naming that sibling, so differentiation is inferred rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a scope ('in a date range') but no when-to-use guidance, exclusions, or routing to alternatives such as wheniwork_get_time_off_request for a single request or wheniwork_list_time_off_types. The agent must infer the selection criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wheniwork_list_time_off_typesList time-off typesA
Read-only
Inspect

List the time-off types (e.g. Personal, Sick, Holiday) and whether each allows paid time. Their ids are the type_id for a new request. When I Work: GET /2/requesttypes.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true already covers safety, and the description adds genuinely useful behavior: this is a catalog read whose returned ids feed a subsequent create call. It does not mention pagination or ordering, but no output schema exists, so the return-content description carries real weight.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences plus the endpoint reference. The scoping fact (what is listed) comes first, and the downstream use case follows immediately, with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters and no output schema, the description supplies the essential return shape (type names and whether paid) and the reason to call it. Missing only minor detail such as ordering or pagination, which is a small gap for a simple catalog tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline for a parameterless tool is 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (time-off types), and goes further by naming what each entry contains (e.g. Personal, Sick, Holiday, paid flag). This distinguishes it cleanly from siblings like wheniwork_list_time_off_requests, which list requests rather than the type catalog.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains the downstream purpose explicitly: 'Their ids are the type_id for a new request,' which tells the agent to call this before wheniwork_create_time_off_request. It does not state exclusions or when not to use it, so it falls short of a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wheniwork_list_timesList clocked times (timesheets)A
Read-only
Inspect

List clocked time entries — actual hours worked, clock-in/out times, length and approval state. Use only_open to see who is clocked in right now. When I Work: GET /2/times.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoEnd of the window. Date-time, e.g. 2026-10-05T08:00:00-05:00 (When I Work's own examples also use RFC 2822, e.g. "Mon, 05 Oct 2026 08:00:00 -0500").
startNoStart of the window. Date-time, e.g. 2026-10-05T08:00:00-05:00 (When I Work's own examples also use RFC 2822, e.g. "Mon, 05 Oct 2026 08:00:00 -0500").
user_idNoOne or more user ids.
only_openNoOnly times with no end yet (people currently clocked in).
updated_atNoOnly times updated since this timestamp. Date-time, e.g. 2026-10-05T08:00:00-05:00 (When I Work's own examples also use RFC 2822, e.g. "Mon, 05 Oct 2026 08:00:00 -0500").

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true already establishes this is a safe read, and the description usefully adds the shape of the returned data (hours, approval state). However, it says nothing about pagination, result limits, or default time-window behavior — meaningful gaps for a timesheet list endpoint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences plus the upstream endpoint reference; the returned-data summary is front-loaded and every clause carries information. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does well to summarize the returned fields, and the annotations cover the safety profile. It falls short only on pagination/limit and default-window behavior that an agent would need for a list endpoint.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all five parameters including only_open are already documented in the schema. The description only echoes only_open's meaning and adds no syntax, format, or interaction detail beyond that baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List clocked time entries') and immediately enumerates what the resource contains — hours worked, clock-in/out, length, approval state. This is clearly distinguishable from sibling listing tools such as wheniwork_list_shifts (scheduled) and wheniwork_list_users.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Use only_open to see who is clocked in right now' line gives an in-tool usage cue, but it is effectively a restatement of the parameter rather than guidance on when to choose this tool over an alternative. No when-not conditions or sibling routing are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wheniwork_list_usersList usersA
Read-only
Inspect

List the employees, supervisors, managers and admins in the account, optionally limited to some schedules or searched by name/email. Role codes: 1 admin, 2 manager, 3 employee, 5 supervisor. When I Work: GET /2/users.

ParametersJSON Schema
NameRequiredDescriptionDefault
searchNoSearch first name, last name or email.
location_idNoOne or more schedule (location) ids.
only_deletedNoOnly deleted/archived users (supervisor or above).
only_pendingNoOnly pending users.
show_deletedNoInclude deleted users (supervisor or above).
show_pendingNoInclude users who have not accepted their invite (default true).

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the safe-read profile is covered. The description adds the underlying endpoint (GET /2/users) and the role-code legend (1 admin, 2 manager, 3 employee, 5 supervisor), which is genuinely useful disclosure, but says nothing about pagination, result limits, or sort order.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly packed sentences plus a short endpoint note, with the resource and its filters front-loaded. Nothing is redundant, though the API-endpoint tail is marginally lower value than the rest.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool with no output schema and fully documented parameters, this is close to complete: it names the entity, the filterable dimensions, and the role-code vocabulary needed to interpret results. Missing pagination/sorting behavior is the only notable gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all six parameters are already documented with meaning (search, location_id, only_deleted, only_pending, show_deleted, show_pending), which sets the baseline at 3. The description restates the schedule-limit and search behavior but adds no format or interaction detail beyond the schema; the role codes clarify returned values rather than parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List the employees, supervisors, managers and admins in the account') plus the optional narrowing dimensions (schedules, name/email search). It implicitly separates itself from single-user reads like wheniwork_get_user, but never names a sibling such as wheniwork_list_eligible_users_for_shift, so the differentiation is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage through 'optionally limited to some schedules or searched by name/email', giving the agent a sense of when the filters apply. However, it offers no explicit when-to-use vs when-not guidance and never points to an alternative tool, so the routing burden stays with the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wheniwork_publish_shiftsPublish shiftsA
Destructive
Inspect

Publish draft shifts so employees can see them. Publishing does not itself send notifications. Undo with wheniwork_unpublish_shifts. When I Work: POST /2/shifts/publish.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesThe shift ids to publish.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only supply destructiveHint=true; the description adds genuinely new behavior — that publishing changes employee visibility, that no notifications are sent, and that the change is reversible via unpublish. That reversibility context is exactly what the destructive annotation alone cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the effect and immediately followed by the notification caveat and undo route. No filler or restatement of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter mutation with no output schema, the definition covers effect, side-effect (no notifications), and reversal, which is most of what an agent needs. The batch size ceiling (1000 ids) is left to the schema and could have been surfaced.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single required parameter already documented at 100% schema coverage ('The shift ids to publish'), and the description adds no format, ordering, or batching guidance beyond it. Baseline 3 applies when the schema carries the semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Publish draft shifts') plus the resulting state change ('so employees can see them'), which separates it cleanly from wheniwork_create_shift and wheniwork_update_shift.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Makes the precondition clear (shifts must be in draft) and names the inverse operation wheniwork_unpublish_shifts as the undo path. It does not spell out when an agent should choose this over scheduling via create_shift, so it falls short of a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wheniwork_unpublish_shiftsUnpublish shiftsA
Destructive
Inspect

Return published shifts to draft, hiding them from employees. Undo with wheniwork_publish_shifts. When I Work: POST /2/shifts/unpublish.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesThe shift ids to unpublish.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, so the safety profile is known. The description adds real context beyond that: what destruction means here (shifts revert to draft, become hidden from employees) and that it is reversible via wheniwork_publish_shifts, which is valuable for a destructive-flagged op.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences with zero filler: effect first, undo route second, endpoint third. Front-loaded and every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter mutation with no output schema, the description covers the effect, reversibility, and the underlying API operation. Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a single, well-described 'ids' array (including min/max items), so the schema carries the parameter burden. The description adds nothing about id format, batch limits, or partial-failure behavior, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Return published shifts to draft') plus the observable effect ('hiding them from employees'). It also explicitly names the inverse tool, so an agent can distinguish it from wheniwork_publish_shifts 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clearly conveys the context of use (reverting published shifts to draft) and names the counterpart tool as the undo path. It stops short of explicit when-not-to-use guidance or prerequisites, but the routing signal is present.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wheniwork_update_shiftUpdate a shiftA
Destructive
Inspect

Change a shift — reassign it, move it, change position or notes. When I Work requires start_time, end_time and location_id on every update, so fetch the shift first and pass them back. This tool never sends a breaks array; When I Work documents that breaks omitted from an update's breaks list are removed, so re-check the shift's breaks afterwards. When I Work: PUT /2/shifts/{id}.

ParametersJSON Schema
NameRequiredDescriptionDefault
colorNoHex colour without #, e.g. cc0000.
notesNoShift notes shown to the employee.
site_idNoJob site for the shift.
user_idNoThe user to assign. 0 (or omitted on create) makes it an open shift.
end_timeYesShift end (required by the API even if unchanged).
shift_idYesThe shift id.
is_sharedNoFor an open shift: a shared open shift.
publishedNoPublish it immediately (default: draft).
break_timeNoUnpaid break length in hours, e.g. 0.5.
start_timeYesShift start (required by the API even if unchanged).
location_idYesThe schedule (location) id.
position_idNoPosition for the shift.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare destructiveHint=true, but the description discloses the key destructive mechanism: this never sends a breaks array, and omitted breaks are removed by the API, so the agent should re-check breaks afterward. That is exactly the non-obvious mutation consequence an agent needs, and it is consistent with the destructive hint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded action first, then prerequisites and the destructive caveat, then the endpoint reference. No filler; each sentence carries distinct, actionable information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-param destructive mutation with no output schema, the description covers the prerequisite (fetch first), the destructive side effect (breaks removal), the required fields, and the underlying endpoint. An agent has everything needed to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all 12 parameters and even notes the required-even-if-unchanged semantics. The description adds workflow meaning by tying the required trio (start_time, end_time, location_id) to the fetch-first pattern the agent must follow.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (change) and resource (a shift) and enumerates the concrete operations — reassign, move, change position or notes. An agent can distinguish this from get_shift, create_shift, and publish_shifts 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs the agent to fetch the shift first (get_shift) and pass back the required fields, which is real when-and-how guidance. It stops short of naming sibling alternatives like create_shift or publish_shifts for competing outcomes, so it is clear context rather than full routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wheniwork_update_time_off_requestApprove, deny or change a time-off requestA
Destructive
Inspect

Change a time-off request: set its status (0 pending, 1 canceled, 2 accepted/approved, 3 expired, 4 denied) and/or its dates or hours. Reversible — set the status back. start_time and end_time must be given together. When I Work: PUT /2/requests/{request_id}.

ParametersJSON Schema
NameRequiredDescriptionDefault
hoursNoHours of paid time off to use.
statusNoNew status.
end_timeNoNew end, full date-time (give with start_time).
request_idYesThe time-off request id.
start_timeNoNew start, full date-time (give with end_time).

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only supply destructiveHint=true; the description adds real behavioral context on top: mutation is reversible by setting status back, the paired start/end constraint is disclosed, and the status codes are decoded. It does not mention permission/authorization requirements or what happens to fields not supplied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences: action, status semantics, constraint, then API endpoint. The critical mutation-and-status information is front-loaded and no sentence is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no output schema and thin annotations, the description covers reversibility, field coupling, status codes, and the endpoint well enough to call it correctly. Missing only auth/permission expectations and behavior for partial updates, which are minor given the schema's clarity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 the schema lacks: the status field is only described as 'New status' in the schema, whereas the description decodes all five values (0 pending, 1 canceled, 2 accepted/approved, 3 expired, 4 denied). The start_time/end_time pairing is also restated usefully.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb+resource (change a time-off request) and enumerates the specific mutable fields (status, dates, hours). The sibling set contains create/get/list time-off variants, and the word 'change' plus the status-mutation framing clearly separates this from wheniwork_create_time_off_request and wheniwork_get_time_off_request.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The title and description together establish the use case well: approving, denying, canceling, or editing an existing request. It gives the conditional constraint ('start_time and end_time must be given together') but never names an alternative tool or states when-not to use it (e.g., use create_time_off_request for new requests).

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.

  1. 21 tool updates
    • First observedwheniwork_create_shift
    • First observedwheniwork_create_time_off_request
    • First observedwheniwork_get_account
    • First observedwheniwork_get_shift
    • First observedwheniwork_get_time_off_request
    • First observedwheniwork_get_user
    • First observedwheniwork_list_annotations
    • First observedwheniwork_list_availability
    • First observedwheniwork_list_eligible_users_for_shift
    • First observedwheniwork_list_locations
    • First observedwheniwork_list_positions
    • First observedwheniwork_list_shift_swaps
    • First observedwheniwork_list_shifts
    • First observedwheniwork_list_time_off_requests
    • First observedwheniwork_list_time_off_types
    • First observedwheniwork_list_times
    • First observedwheniwork_list_users
    • First observedwheniwork_publish_shifts
    • First observedwheniwork_unpublish_shifts
    • First observedwheniwork_update_shift
    • First observedwheniwork_update_time_off_request

Related MCP Connectors

Related MCP Servers

  • F
    license
    B
    quality
    C
    maintenance
    Enables interaction with the Sling scheduling and workforce management platform, allowing users to manage shifts, users, calendars, and reports through natural language.
    16
    2
    -
  • F
    license
    B
    quality
    C
    maintenance
    Enables managing employee leave requests including checking balance, applying for leave, and viewing history.
    3
    -
  • F
    license
    B
    quality
    C
    maintenance
    Enables managing employee records, leave balances, and leave requests through MCP tools and resources, including submitting and approving leave, checking balances, and adding employees.
    6
    1
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.