Deputy MCP by usefulapi
Server Details
See rosters, timesheets, leave and staff in Deputy, and create shifts, leave and memos.
- Status
- Healthy
- Uptime
- 51.3% over 21 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- Repository
- m190/usefulapi-mcp
- GitHub Stars
- 0
TDQS
Scored across 21 tools
Most tools target distinct resource+action pairs (e.g., get_shift vs list_shifts vs update_shift vs publish_shifts). The generic deputy_query_resource overlaps with specialized list_* tools and deputy_describe_resource, so an agent may occasionally hesitate between generic and dedicated query paths.
All names use snake_case with a consistent deputy_ prefix and verb-first structure (list_, get_, create_, update_, etc.). Minor deviations exist: add_unavailability vs create_*, list_leave (singular) vs list_shifts (plural), and leave_request suffix, but the pattern remains readable.
21 tools is above the typical 3-15 sweet spot for MCP tool sets and falls in the 16-25 'heavy' range. The breadth of Deputy's domain partly justifies it, but generic query_resource duplicates several list_* conveniences, making the set feel larger than necessary.
Core read and write paths cover shifts, timesheets, unavailability, and creation of leave/memo, plus broad query access. However, leave approval/decline/update, delete operations for shifts/timesheets/leave/memo, and create/update for employees/locations/areas are missing, leaving notable lifecycle gaps.
Available Tools
21 toolsdeputy_approve_timesheetApprove a timesheetADestructiveInspect
Approve one timesheet's times as a supervisor. Approved timesheets flow toward payroll export, so check it first with deputy_get_timesheet. Deputy: POST /api/v1/supervise/timesheet/approve.
| Name | Required | Description | Default |
|---|---|---|---|
| timesheet_id | Yes | The timesheet id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes beyond the destructiveHint=true annotation by disclosing the downstream consequence: approved timesheets flow toward payroll export, which tells the agent approval has real side effects. The supervisor framing also hints at authorization context, though it does not state reversibility or error 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?
Three short sentences, front-loaded with the action and its consequence, then the prerequisite, then the API endpoint. The endpoint reference is somewhat redundant but compact and does not bloat the definition.
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 mutation with no output schema, the description covers what happens (approval), the consequence (payroll export), and the pre-check it should follow. Only reversibility/error handling is absent, which is minor here.
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?
Only one parameter, and schema description coverage is 100%, so the schema fully documents timesheet_id. The description adds no format, source, or lookup guidance beyond the schema, so a baseline 3 is appropriate.
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 (Approve) plus resource (timesheet's times) and actor scope (as a supervisor). This clearly separates it from read/inspection siblings like deputy_get_timesheet, though it does not explicitly differentiate itself from deputy_update_timesheet.
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 an explicit prerequisite ('check it first with deputy_get_timesheet') and names the sibling to use beforehand, which is strong when-to-use guidance. It stops short of stating when NOT to use it or naming a sibling that competes for the same intent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deputy_create_leave_requestCreate a leave requestADestructiveInspect
Add a leave request for an employee. By default it waits for manager approval (status 0); pass status 1 only when your system is the source of truth and the leave is already approved. Deputy tracks leave in hours, so give exact start and end times. Find leave type ids with deputy_query_resource on LeaveRules. Deputy: POST /api/v1/resource/Leave.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | 0 awaiting approval (default), 1 already approved. | |
| comment | Yes | The employee's note to the manager. | |
| end_date | Yes | Last day, YYYY-MM-DD. | |
| end_time | Yes | Leave end: a unix timestamp in seconds, or an ISO 8601 datetime (include an offset for local times). | |
| start_date | Yes | First day, YYYY-MM-DD. | |
| start_time | Yes | Leave start: a unix timestamp in seconds, or an ISO 8601 datetime (include an offset for local times). | |
| employee_id | Yes | The employee id. | |
| location_id | Yes | Location (Company id) the leave is recorded against. | |
| leave_rule_id | Yes | Leave type (LeaveRules id), e.g. annual leave. | |
| approval_comment | No | Manager's comment, when status is 1. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare destructiveHint=true, so the description usefully adds the approval-workflow semantics (default status 0 waits for manager approval), the fact that leave is tracked in hours requiring exact start/end times, and the API route. It does not cover failure behavior or what happens to overlapping/duplicate leave, but it adds real context beyond the annotations.
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, front-loaded with the action and the default behavior, then the exception, then unit/time guidance, then the id lookup and endpoint. No filler or repetition.
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 mutation with no output schema, the description covers the critical gotchas: approval status semantics and the hours/exact-times requirement. It leaves the required comment field and any validation/failure behavior unexplained, so it is strong but not fully complete.
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, but the description adds meaning beyond the schema: it explains the default/conditional semantics of status and tells the agent how to obtain a valid leave_rule_id via deputy_query_resource on LeaveRules. It does not clarify why comment is required or the approval_comment interaction.
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 ('Add a leave request for an employee') and immediately scopes the default behavior. It is clearly distinguishable from deputy_list_leave and the other create_* siblings, and it even names the underlying Deputy endpoint.
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 conditional guidance for status ('pass status 1 only when your system is the source of truth and the leave is already approved') and routes the agent to deputy_query_resource on LeaveRules for the leave type id. It does not state when to prefer a sibling (e.g. deputy_list_leave) or any precondition on the required comment field, so it falls just short of fully explicit when/when-not coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deputy_create_memoPost a memoADestructiveInspect
Post a memo to a location's news feed, optionally requiring staff to confirm they read it, or targeted to specific locations or users. Visible to staff immediately. Deputy: PUT /api/v1/supervise/memo.
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | The memo text. | |
| user_ids | No | Only these USER ids (not employee ids) receive it. | |
| location_id | Yes | Location (Company id) to post to. | |
| location_ids | No | Also show at these locations. | |
| require_confirm | No | Ask staff to confirm they have read it. Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only supply destructiveHint=true, so the description carries most of the behavioral burden. It adds useful context beyond annotations: 'Visible to staff immediately' discloses the side effect timing and the confirm-read option has a stated default. However, it says nothing about authoring permissions, whether memos can be edited/deleted afterwards, or rate 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?
It is a single packed sentence with the core action front-loaded, followed by a terse endpoint reference. The trailing 'Deputy: PUT /api/v1/...' adds little for an agent but does not bloat the text.
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 5-parameter mutation tool with no output schema and thin annotations, the description covers the key behaviors (visibility timing, targeting, confirmation). It is reasonably complete, though it omits return information and permission requirements.
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 all five parameters are already documented in the schema. The description mirrors the targeting concepts (specific locations or users, confirm read) but adds no syntax, format, or edge-case detail beyond what the schema provides. Baseline 3 is appropriate.
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 states a specific verb and resource ('Post a memo to a location's news feed') with clear scope, plus the targetable dimensions. No sibling tool competes with it, and an agent can distinguish it from the shift/leave/timesheet tools immediately.
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 explains the targeting options and the confirm-read flag, but gives no when-to-use guidance or alternatives context, nor any prerequisites (e.g., what permissions are needed to post a memo). Usage is only inferable from the parameter mention.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deputy_create_shiftCreate a shiftADestructiveInspect
Add a shift to the roster, assigned to an employee or left open. Created as a DRAFT unless publish is true (publishing can notify the employee). Deputy returns an empty 200 on success — use deputy_list_shifts to find the new shift's id. Deputy: POST /api/v1/supervise/roster.
| Name | Required | Description | Default |
|---|---|---|---|
| open | No | Show the shift as open for employees to claim. | |
| area_id | Yes | Area (OperationalUnit id) the shift is for. | |
| comment | No | Comment shown on the shift. | |
| publish | No | Publish now. Publishing can notify the employee. Default false (draft). | |
| end_time | Yes | Shift end: a unix timestamp in seconds, or an ISO 8601 datetime (include an offset for local times). | |
| confirmed | No | Mark the shift as confirmed. | |
| start_time | Yes | Shift start: a unix timestamp in seconds, or an ISO 8601 datetime (include an offset for local times). | |
| employee_id | No | Employee to put on the shift. Omit (and set open: true) for an unfilled shift. | |
| force_overwrite | No | Overwrite a clashing shift for the same employee. Default false. | |
| mealbreak_minutes | No | Unpaid meal break length in minutes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantive behavior beyond the destructiveHint annotation: default DRAFT state, that publishing can notify the employee, and that success returns an empty 200 body. These side-effect disclosures are exactly what a create tool needs, though it never explains why destructiveHint is true (e.g. force_overwrite clobbering).
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: what it does, the default/notification behavior, and the empty-response workaround plus endpoint. No filler, front-loaded with the action.
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?
There is no output schema, and the description compensates by explaining the empty 200 response and the follow-up call needed to obtain the id — the single most important gap for a create tool. Combined with the annotation and full schema coverage, nothing essential is missing.
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 all ten parameters are documented in the schema; the description only restates the publish/open semantics already present in the parameter descriptions. Baseline 3 is appropriate since the schema carries the parameter burden.
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 (Add) plus resource (a shift to the roster) with scope details: assigned to an employee or left open. The name/create intent is unmistakable and clearly separable from deputy_update_shift and deputy_publish_shifts.
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?
Explains the draft-vs-publish decision point and tells the agent to use deputy_list_shifts afterward to recover the new shift id, which is real workflow guidance. It does not explicitly contrast with siblings like deputy_update_shift or deputy_publish_shifts, 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.
deputy_describe_resourceDescribe a Deputy resourceARead-onlyInspect
Return a Resource API object's field list, field types and joinable associations — what deputy_query_resource can filter, sort and join on. Deputy: GET /api/v1/resource/{Object}/INFO.
| Name | Required | Description | Default |
|---|---|---|---|
| object | Yes | Resource API object. Deputy names: Company = location, OperationalUnit = area, Roster = shift, LeaveRules = leave types, TimesheetPayReturn = approved pay lines. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already covers the safety profile, so the bar is lower. The description adds real substance: it discloses the three parts of the return payload (field list, field types, joinable associations) despite there being no output schema, and names the underlying HTTP route. No auth or rate-limit caveats, but for a simple INFO call that is a minor omission.
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 clauses with zero redundancy: the capability statement comes first, the API route second as reference detail. Every word earns its place and the reader gets the essential concept in the first clause.
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 one-parameter, read-only metadata lookup with no output schema, the description supplies the return shape (fields, types, joins) and the sibling relationship, which is everything an agent needs to decide to call it and to interpret the result. Nothing material is missing.
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 enum parameter is richly documented in the schema, including the Deputy naming aliases (Company = location, Roster = shift, etc.), so the schema does the heavy lifting. The description only references the parameter indirectly via the '{Object}' path placeholder; baseline 3 is appropriate.
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 precise verb and resource (return a Resource API object's field list, field types, joinable associations) and explicitly ties itself to the sibling deputy_query_resource by naming what that tool can filter/sort/join on. The endpoint reference (GET /api/v1/resource/{Object}/INFO) pins down the exact operation, so the agent can distinguish this metadata tool from the query tool 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?
The 'what deputy_query_resource can filter, sort and join on' clause tells the agent the downstream purpose, implying this is a discovery step before querying. It routes to the sibling by name, but it never states the explicit trigger ('call this before deputy_query_resource when you don't know the fields') or any when-not condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deputy_get_employeeGet one employeeARead-onlyInspect
Fetch one employee's details as a supervisor sees them — contact, locations, role and employment. Deputy: GET /api/v1/supervise/employee/{id}.
| Name | Required | Description | Default |
|---|---|---|---|
| employee_id | Yes | The employee id. |
TDQS
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 genuinely useful context beyond that: the response is filtered to the supervisor's visibility of the employee, which tells the agent that field presence and values can differ by caller privileges. It omits behavior for an unknown id, but the supervisor-scoping disclosure is real added value.
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 sentences, zero filler: the capability statement comes first and the raw endpoint mapping follows as a compact parenthetical. Every clause carries information an agent can use.
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 no output schema, the description compensates reasonably by listing the categories of data returned, so an agent knows what it gets without a response schema. Missing only edge-case behavior (nonexistent id, permission-denied response), which is a minor gap for a read tool whose annotations already signal safety.
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% with a single integer employee_id, so the schema carries the parameter burden and the description contributes nothing about the id (format, source, whether it must be a Deputy-internal id). Nothing here exceeds 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?
Specific verb (fetch) plus resource (one employee's details) with scope qualifier 'as a supervisor sees them,' and an enumeration of the returned facets (contact, locations, role, employment). The word 'one' cleanly separates it from the sibling deputy_list_employees and from deputy_get_employee_unavailability.
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 employee' versus the sibling list tool, and the supervisor-view framing hints at when this variant applies. However, no alternative is named explicitly and no precondition (e.g. needing a known employee_id) is stated, so the agent must infer the selection logic.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deputy_get_shiftGet one shiftARead-onlyInspect
Fetch one shift (Roster record) by id. Deputy: GET /api/v1/resource/Roster/{id}.
| Name | Required | Description | Default |
|---|---|---|---|
| shift_id | Yes | The shift (Roster) id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and the description corroborates the read-only GET endpoint, so no contradiction. It adds the useful Roster-resource mapping but says nothing about error behavior for a missing id, permissions, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and resource, with the API endpoint as supporting detail. Zero 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 single-parameter read tool with no output schema, the description covers what is fetched and by what key. It could add a note on what the return contains or on not-found handling, but nothing essential to invoking it is missing.
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?
Only one parameter and schema description coverage is 100%, so the schema already documents shift_id as the Roster id. The description's parenthetical '(Roster record)' adds the domain mapping but no new constraint or format detail, matching the baseline for fully covered schemas.
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 (Fetch) and resource (one shift, mapped to the Deputy Roster record) with the lookup key (id). It implicitly separates itself from deputy_list_shifts by scope, but never names the sibling, so it falls short of the top mark.
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: fetch a single shift when you already have its id. There is no statement of when to prefer this over deputy_list_shifts or deputy_query_resource, and no exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deputy_get_timesheetGet one timesheetARead-onlyInspect
Fetch one timesheet's full details, including breaks and approval state. Deputy: GET /api/v1/supervise/timesheet/{id}/details.
| Name | Required | Description | Default |
|---|---|---|---|
| timesheet_id | Yes | The timesheet id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already covers the safety profile, so the bar is lower, and the description adds real value by disclosing that the payload contains breaks and approval state — meaningful context given there is no output schema. It also cites the underlying endpoint, aiding traceability. No pagination or error behavior is mentioned, but that is not expected for a single-record 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, front-loaded with the action and payload, followed by an endpoint reference. Nothing is redundant and nothing needs re-reading.
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 annotations covering safety and no output schema, this is nearly sufficient: it says what is returned (breaks, approval state) and where it comes from. A brief note on how this differs from the list/update tools would close the remaining gap.
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?
With one parameter at 100% schema description coverage, the schema already documents timesheet_id; the description adds no format, range, or sourcing guidance beyond the '{id}' placeholder in the endpoint string. This is the baseline 3 case where structured fields do the heavy lifting.
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 (fetch) and resource (one timesheet) with a scope qualifier ('one') that implicitly distinguishes it from deputy_list_timesheets. However, it never names the sibling tools it must be told apart from, so 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the agent is expected to infer that this is the right call when it has a specific timesheet_id and needs the detailed record. There is no explicit when-to-use, no exclusion of the list/update/approve siblings, and no stated prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deputy_list_areasList areasARead-onlyInspect
List areas (Deputy OperationalUnits — the rosterable sections of a location, e.g. Kitchen, Front of house). Shifts and timesheets belong to an area. Optionally only one location's areas. Deputy: GET /api/v1/resource/OperationalUnit, or POST .../OperationalUnit/QUERY when filtered.
| Name | Required | Description | Default |
|---|---|---|---|
| max | No | Page size, 1-500 (Deputy's cap). Default 100. | |
| start | No | Pagination offset (0-based). Pass the previous page's next_start. | |
| active | No | Only active (true) or inactive (false) areas. | |
| location_id | No | Only areas of this location (Company id). |
TDQS
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 is not carrying the safety burden. It adds useful domain context that shifts and timesheets belong to an area, but does not disclose pagination behavior, default limits, or result shape beyond what the annotations and schema imply.
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?
Short and front-loaded: the resource and its meaning come first, then scope and filtering. The trailing endpoint paths (GET/POST .../OperationalUnit) are the one expendable element for an agent-facing definition, but overall there is little waste.
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 no-required-parameter, non-destructive list tool with 100% schema coverage and no output schema, the description supplies everything an agent needs: what an area is, how it relates to shifts/timesheets, and that results can be scoped to one location. Nothing essential is missing.
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 all four parameters (max, start, active, location_id) are already documented, including the cap and offset semantics. The description only loosely echoes the location filter ('Optionally only one location's areas') and adds no format or edge-case detail beyond the schema; baseline 3 is appropriate.
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?
Uses a specific verb (List) on a specific resource and immediately disambiguates the Deputy term 'OperationalUnit' with the domain gloss 'the rosterable sections of a location, e.g. Kitchen, Front of house'. It also states the relationship to shifts/timesheets and the filtering capability, so an agent can distinguish it from siblings like deputy_list_locations or deputy_query_resource 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?
'Optionally only one location's areas' implies when the location_id filter applies, but there is no explicit when-to-use/when-not-to-use guidance relative to siblings such as deputy_list_locations or deputy_describe_resource. The mention of the underlying GET vs POST QUERY endpoints is implementation detail, not invocation guidance for the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deputy_list_employeesList employeesARead-onlyInspect
Search employees by name, location or active status. Returns Id, DisplayName, Company (main location), Active, StartDate, Role and more. Deputy: POST /api/v1/resource/Employee/QUERY.
| Name | Required | Description | Default |
|---|---|---|---|
| max | No | Page size, 1-500 (Deputy's cap). Default 100. | |
| start | No | Pagination offset (0-based). Pass the previous page's next_start. | |
| active | No | true = current staff only; false = terminated/inactive only. | |
| location_id | No | Only employees whose main location is this Company id. | |
| name_contains | No | Only employees whose DisplayName contains this text. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds genuinely useful context by enumerating the returned fields (Id, DisplayName, Company, Active, StartDate) and citing the underlying Deputy QUERY endpoint, though it says nothing about rate limits or pagination semantics beyond what the schema carries.
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 front-loaded sentences with no filler; the API-endpoint note is arguably cosmetic but still earns its place as Deputy-specific context. Nothing else is wasted.
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 no output schema, the description shoulders the burden of explaining return values and does so with a concrete field list plus 'and more'. Combined with a fully documented schema and a readOnly annotation, this is nearly complete; only pagination expectations are left implicit.
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 documents caps, offset semantics and each filter precisely. The description's phrase 'by name, location or active status' maps loosely onto three parameters but adds no syntax or format detail beyond the schema, 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?
States a specific verb (search/list) and resource (employees) plus the filterable dimensions (name, location, active status). An agent can distinguish it from the singular sibling deputy_get_employee 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?
The filter list implies when the tool is useful (bulk retrieval with filtering), but it never states when to prefer it over deputy_get_employee or deputy_query_resource, nor any prerequisites. Usage is inferred rather than guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deputy_list_leaveList leave requestsARead-onlyInspect
Search leave requests by employee, location, status and time window. Status: 0 awaiting approval, 1 approved, 2 declined, 3 cancelled, 4 date approved without pay, 5 pay approved without date. Start/End are unix; LeaveRule is the leave type id. Deputy: POST /api/v1/resource/Leave/QUERY.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Only leave starting at or before this time: a unix timestamp in seconds, or an ISO 8601 date/datetime (include an offset for local times). | |
| max | No | Page size, 1-500 (Deputy's cap). Default 100. | |
| from | No | Only leave starting at or after this time: a unix timestamp in seconds, or an ISO 8601 date/datetime (include an offset for local times). | |
| start | No | Pagination offset (0-based). Pass the previous page's next_start. | |
| status | No | Only this status (0-5, see description). | |
| employee_id | No | Only this employee's leave. | |
| location_id | No | Only leave against this location (Company id). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already declares the safety profile, so the description only needs to add beyond that. It contributes pagination context (offset semantics, page-size cap) and the status-code table, but discloses nothing about permissions, result ordering, or caps on result volume.
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, followed by the filter/status reference and the endpoint. Every clause is dense but earns its place; no 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?
Covers the searchable dimensions, status enumeration, time-unit semantics, and pagination handoff. No output schema exists, so return shape is unexplained, and the mismatch between the description's 'LeaveRule'/'Start'/'End' naming and the schema's parameters is a minor completeness gap.
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%, but the schema's status parameter only says '0-5, see description' — the actual code-to-meaning mapping exists solely in the description, so the description carries real semantic weight there. It also clarifies Start/End as unix and LeaveRule as the leave-type id, though it uses the name 'LeaveRule' which does not match the schema's employee_id/location_id/from/to names.
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?
Starts with a specific verb+resource ('Search leave requests') and enumerates the four filter dimensions (employee, location, status, time window). An agent can distinguish it from deputy_create_leave_request 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?
The filter list implies when this tool is useful (querying existing leave), but there is no explicit when-to-use statement, no prerequisites, and no named alternative such as deputy_query_resource or deputy_create_leave_request. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deputy_list_locationsList locationsARead-onlyInspect
List the install's locations (workplaces). Deputy calls a location a Company; its Id is what other tools take as location_id. Deputy: GET /api/v1/resource/Company.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already covers the safety profile, and the description adds value by disclosing the backing endpoint (GET /api/v1/resource/Company) and the Company/location naming convention. It does not describe return contents, so with annotations carrying the safety burden this is adequate but not rich.
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 with no waste, front-loaded with the action and resource. Each sentence earns its place by adding terminology mapping and endpoint provenance.
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 zero-parameter read tool with readOnlyHint and no output schema, the description is close to complete: it identifies the resource, maps Deputy's odd naming, and explains the returned Id's role. It could optionally note whether the list is paginated or filtered, but nothing required 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4 and there is nothing for the description to compensate for. The note about the Id field being consumed as location_id elsewhere usefully explains what downstream tools expect, though it is return semantics rather than parameter semantics.
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 install's locations) and immediately disambiguates the terminology mapping (Deputy calls a location a Company). It also discloses the underlying endpoint, which lets an agent distinguish it from siblings like deputy_list_areas or deputy_list_employees 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?
Usage is implied rather than stated: the note that the returned Id is what other tools take as location_id signals this is a lookup to resolve location IDs before calling other tools. There is no explicit when-to-use/when-not or named alternative, so it lands at minimum-viable implied guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deputy_list_shiftsList shiftsARead-onlyInspect
Search the roster (scheduled shifts) by time window, employee, area, and published/open state. Each record has StartTime/EndTime (unix), StartTimeLocalized, Employee (0 or null when open), OperationalUnit (area), Published, Open, Cost and _DPMetaData with names. Deputy: POST /api/v1/resource/Roster/QUERY.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Only shifts starting at or before this time: a unix timestamp in seconds, or an ISO 8601 date/datetime (include an offset for local times). | |
| max | No | Page size, 1-500 (Deputy's cap). Default 100. | |
| from | No | Only shifts starting at or after this time: a unix timestamp in seconds, or an ISO 8601 date/datetime (include an offset for local times). | |
| open | No | true = open (unfilled) shifts only. | |
| start | No | Pagination offset (0-based). Pass the previous page's next_start. | |
| area_id | No | Only shifts in this area (OperationalUnit id). | |
| published | No | true = published only; false = drafts only. | |
| employee_id | No | Only this employee's shifts. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, and the description goes beyond that by disclosing the returned record shape (StartTime/EndTime unix, StartTimeLocalized, Employee as 0 or null when open, OperationalUnit, Published, Open, Cost, _DPMetaData) and the underlying API endpoint. No output schema exists, so this return-shape disclosure is genuinely load-bearing. It does not add permission or rate-limit detail, and the 'POST .../QUERY' endpoint note is an implementation detail rather than a behavioral trait, but the safety profile plus return structure is well covered.
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 sentences, zero waste. The search scope and filter axes are front-loaded in sentence one; the return-field inventory and API reference follow. Nothing is padding, especially since the field list substitutes for a missing output 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?
With 8 all-optional parameters and no output schema, the description does the heavy lifting on return values and filter axes, which is exactly what an agent needs to construct a query. It stops short of describing pagination/limit behavior (max cap, next_start chaining) beyond what the schema states, so it is strong but not fully complete.
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 baseline is 3. The description's filter enumeration (time window, employee, area, published/open) maps onto from/to, employee_id, area_id, published, and open, and '(0 or null when open)' clarifies the Employee value convention, but it adds no format or syntax detail beyond what the schema already states for each 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 ('Search the roster (scheduled shifts)') plus the four filter dimensions. An agent can distinguish it from deputy_get_shift (single shift), deputy_create_shift, and deputy_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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the filter-oriented phrasing, and the Deputy endpoint (Roster/QUERY) hints at a query operation, but there is no explicit when-to-use guidance and no named alternative such as 'use deputy_get_shift for a single shift by id'. Adequate but leaves routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deputy_list_timesheetsList timesheetsARead-onlyInspect
Search timesheets (actual worked time) by time window, employee, area and approval state. Each record has StartTime/EndTime (unix; EndTime null while in progress), TotalTime (hours), Cost, TimeApproved, PayRuleApproved, IsInProgress, IsLeave, Roster (linked shift) and Exported. Deputy: POST /api/v1/resource/Timesheet/QUERY.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Only timesheets starting at or before this time: a unix timestamp in seconds, or an ISO 8601 date/datetime (include an offset for local times). | |
| max | No | Page size, 1-500 (Deputy's cap). Default 100. | |
| from | No | Only timesheets starting at or after this time: a unix timestamp in seconds, or an ISO 8601 date/datetime (include an offset for local times). | |
| start | No | Pagination offset (0-based). Pass the previous page's next_start. | |
| area_id | No | Only timesheets in this area (OperationalUnit id). | |
| employee_id | No | Only this employee's timesheets. | |
| in_progress | No | true = only people currently on the clock. | |
| pay_approved | No | Filter on PayRuleApproved (approved for payroll export). | |
| time_approved | No | Filter on TimeApproved (supervisor approved the times). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true already covering the safety profile, the description adds real behavioral context: EndTime is null while a shift is in progress, IsInProgress/IsLeave/TimeApproved/PayRuleApproved semantics, and the underlying query endpoint. It stops short of noting pagination flow or rate limits, so it is solid rather than exhaustive.
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 sentences, front-loaded with the search scope, with the field enumeration efficiently packed into one parenthesis because there is no output schema. The trailing endpoint string is minor implementation detail, but the rest earns its 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?
Nine parameters, all schema-documented, and a read-only annotation; the field list in the description compensates for the absent output schema by telling the agent what each returned record contains. Nothing needed to invoke this correctly is missing.
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 normalized baseline is 3. The description restates the filter axes already documented in the schema (from/to, employee_id, area_id, approval booleans) and adds no format or precedence detail beyond it.
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 ('Search timesheets') plus the exact filter axes (time window, employee, area, approval state), and the parenthetical '(actual worked time)' separates it from shift or leave data in the sibling set. An agent can distinguish this from deputy_get_timesheet and deputy_list_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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The filter list implies when this tool applies (multi-record search over a window), but the description never states when NOT to use it or names the alternatives, e.g. deputy_get_timesheet for a single record or deputy_list_shifts for rostered rather than worked time. Usage must be inferred from the sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deputy_publish_shiftsPublish shiftsADestructiveInspect
Publish draft shifts so employees see them, choosing how they are notified: 1 SMS and email, 2 SMS, 3 email, 4 no notification, 5 confirmation required. Only the listed shift ids are published. Deputy: POST /api/v1/supervise/roster/publish.
| Name | Required | Description | Default |
|---|---|---|---|
| shift_ids | Yes | Roster ids to publish. | |
| notify_mode | Yes | 1 SMS+email, 2 SMS, 3 email, 4 none, 5 confirmation required. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With destructiveHint=true already declared, the description adds real value by disclosing the employee-facing side effects (visibility, SMS/email notification, confirmation-required mode) that annotations don't convey. It stops short of stating permission requirements or whether publishing can be undone.
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?
Effect and notification options are front-loaded in one dense sentence, with the scope limit following immediately. The trailing REST endpoint is extraneous for an agent but cheap and non-disruptive.
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 two-parameter tool with no output schema, the description covers what it does, its scope, and its notification behaviors adequately. Missing only edge-case behavior (invalid/already-published ids, reversibility) for full marks.
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 the description's enumeration of notify_mode values is essentially a restatement of the schema's own description, so no new semantic depth is added. The note that only listed ids are published is a mild constraint clarification, but the 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?
States a specific verb (publish) and resource (draft shifts) plus the consequence (employees see them), which cleanly separates it from sibling mutations like deputy_create_shift and deputy_update_shift. The endpoint detail reinforces the 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?
It implies the tool applies to draft shifts and scopes the effect with 'Only the listed shift ids are published', which is useful context. However, it never says when to prefer this over updating/creating shifts, nor whether publishing is reversible or what happens to already-published ids.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deputy_query_resourceQuery any Deputy resourceARead-onlyInspect
Run a Resource API search on any business object (leave types, pay rules, public holidays, memos, events, shift templates, pay lines, availability, sales data, …). search is Deputy's clause map, e.g. {"s1":{"field":"Employee","data":12,"type":"eq"}}; operators: eq ne gt lt ge le is 'is not' in 'not in' starts contains. Use deputy_describe_resource to see an object's fields and joins. Read-only. Deputy: POST /api/v1/resource/{Object}/QUERY.
| Name | Required | Description | Default |
|---|---|---|---|
| max | No | Page size, 1-500 (Deputy's cap). Default 100. | |
| join | No | Related objects to expand inline, e.g. ["TimesheetObject"] on TimesheetPayReturn. | |
| sort | No | Field → asc/desc, e.g. {"Id":"desc"}. | |
| start | No | Pagination offset (0-based). Pass the previous page's next_start. | |
| object | Yes | Resource API object. Deputy names: Company = location, OperationalUnit = area, Roster = shift, LeaveRules = leave types, TimesheetPayReturn = approved pay lines. | |
| search | No | Clauses keyed by any id (s1, s2, …). All must match. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description redundantly repeats 'Read-only.' It does add the underlying call (POST /api/v1/resource/{Object}/QUERY), which usefully reconciles a write-looking HTTP verb with read-only semantics. However, it says nothing about rate limits, result envelope, or pagination behavior, so it adds only a little beyond the annotation.
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-loads the purpose and object examples, then the search syntax, then a routing hint. Dense but readable; the inline operator enumeration and the raw endpoint string are the only slightly expendable material, and the endpoint does carry some informational value.
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 6-param, deeply nested, no-output-schema tool, the description covers what can be queried, how clauses are shaped, and how to discover unknown fields. The remaining gap is the response shape and pagination contract (next_start), which is only hinted at inside the schema rather than explained.
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 already documents max/start/sort/join/object/search, including the clause structure and operator enum. The description's clause-map example and operator list largely restate what the schema provides, so it does not meaningfully extend param semantics. 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?
Opens with a specific verb and resource ('Run a Resource API search on any business object') and enumerates the object families covered (leave types, pay rules, shift templates, pay lines, availability, sales data). The 'any business object' scope implicitly carves it out from the narrow sibling list_* tools, so an agent can place it 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?
Gives clear workflow context by routing field/join discovery to deputy_describe_resource, which is the natural prerequisite for building a valid query. It stops short of naming when to prefer this generic query over the specific deputy_list_employees / deputy_list_shifts siblings, so there are no explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deputy_update_shiftUpdate a shiftADestructiveInspect
Change an existing shift's times, area, employee, break or comment. Send the full intended shift (same fields as create) — Deputy's update is the add call with the shift id. Deputy: POST /api/v1/supervise/roster with intRosterId.
| Name | Required | Description | Default |
|---|---|---|---|
| open | No | Show the shift as open for employees to claim. | |
| area_id | Yes | Area (OperationalUnit id) the shift is for. | |
| comment | No | Comment shown on the shift. | |
| publish | No | Publish now. Publishing can notify the employee. Default false (draft). | |
| end_time | Yes | Shift end: a unix timestamp in seconds, or an ISO 8601 datetime (include an offset for local times). | |
| shift_id | Yes | The shift (Roster) id. | |
| confirmed | No | Mark the shift as confirmed. | |
| start_time | Yes | Shift start: a unix timestamp in seconds, or an ISO 8601 datetime (include an offset for local times). | |
| employee_id | No | Employee to put on the shift. Omit (and set open: true) for an unfilled shift. | |
| force_overwrite | No | Overwrite a clashing shift for the same employee. Default false. | |
| mealbreak_minutes | No | Unpaid meal break length in minutes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only supply destructiveHint=true; the description adds real value by revealing that Deputy's update is the add call with the shift id, which explains why the full payload is required and implies omitted fields are overwritten. It still does not spell out consequences for unspecified fields or that publish can notify the employee (that fact lives in 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?
Three short sentences, with the purpose and the payload requirement front-loaded. The trailing endpoint note ('Deputy: POST /api/v1/supervise/roster with intRosterId') is largely implementation detail that does not help tool selection, keeping it out of 5 territory.
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 11-parameter mutation tool with no output schema and only a destructiveHint annotation, the description covers purpose, required-field expectations and replace semantics, which is most of what an agent needs. It could still be explicit that unspecified fields are reset and note any permission requirements.
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 schema already documents all 11 parameters with formats, defaults and ranges. The description only restates the field categories (times, area, employee, break, comment) and adds no syntax or constraint detail beyond the schema, which is the expected baseline.
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 ('Change an existing shift') and enumerates the mutable fields (times, area, employee, break, comment). The word 'existing' implicitly separates it from deputy_create_shift, but no sibling is named explicitly, 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?
Gives actionable usage context: 'Send the full intended shift (same fields as create)' tells the agent this is a replace-style payload, not a partial patch. No explicit when-not-to-use or sibling routing (e.g., publish_shifts), so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deputy_update_timesheetUpdate a timesheetADestructiveInspect
Correct an existing timesheet's start/end time, area, meal break or supervisor comment. Times cannot be in the future. Deputy: POST /api/v1/supervise/timesheet/update.
| Name | Required | Description | Default |
|---|---|---|---|
| area_id | Yes | Area (OperationalUnit id) the time was worked in. | |
| comment | No | Comment attached to the timesheet. | |
| end_time | Yes | Timesheet end: a unix timestamp in seconds, or an ISO 8601 datetime (include an offset for local times). | |
| start_time | Yes | Timesheet start: a unix timestamp in seconds, or an ISO 8601 datetime (include an offset for local times). | |
| timesheet_id | Yes | The timesheet id. | |
| mealbreak_minutes | No | Total unscheduled meal break, minutes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The destructiveHint annotation already signals a mutating operation, so the bar is lower. The description adds a useful validity constraint (no future times) and the underlying endpoint, but does not say whether omitted optional fields are preserved or cleared, what permissions are required, or how errors surface.
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 sentences, front-loaded with the action and correctable fields. The trailing 'Deputy: POST /api/v1/supervise/timesheet/update' is marginally redundant with sibling conventions but is short and harmless.
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 destructive 6-parameter mutation with no output schema and no readOnly/safety annotations beyond destructiveHint, the description covers the action and one constraint but omits partial-vs-full update semantics, permission requirements, and result behavior. Adequate but with clear gaps.
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 all six parameters are already documented with types, ranges and formats (unix seconds or ISO 8601). The description's mention of meal break and comment mirrors the schema without adding format or default semantics, so the 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?
States a specific verb+resource ('Correct an existing timesheet') and enumerates the exact fields it can change (start/end time, area, meal break, supervisor comment), which cleanly separates it from siblings like deputy_approve_timesheet and deputy_update_shift. An agent can select it 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?
'Correct an existing timesheet' implies the usage context, and 'Times cannot be in the future' is a real invocation constraint. However, there is no explicit when/when-not guidance or pointer to alternatives (e.g. approve_timesheet, get_timesheet), so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deputy_whoamiWho am IARead-onlyInspect
Return the Deputy user the token belongs to — name, employee id, company and permissions. A cheap way to confirm DEPUTY_INSTALL and the token are right. Deputy: GET /api/v1/me.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already covers safety, so credit goes to what the description adds: the identity/scope of the lookup (token-derived), the returned field set, and the cost signal ('cheap'). With no output schema, disclosing the return contents is genuinely useful information the agent cannot get elsewhere.
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 plus an API endpoint citation, with the purpose front-loaded before the when-to-use rationale. Nothing is padded and every clause carries 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?
For a zero-parameter tool with no output schema, the description supplies the returned field list and the reason to call it, which covers the practical gaps. The only shortfall is the absence of any error/auth-failure behavior guidance, which is minor given the simplicity.
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 tool takes zero parameters, so the baseline is 4. The description correctly implies no input is needed since the token is the implicit subject, and nothing is left ambiguous about what to supply.
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 ('Return the Deputy user the token belongs to') and enumerates what comes back (name, employee id, company, permissions). This clearly separates it from siblings like deputy_get_employee, which take an employee identifier rather than resolving the token owner.
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?
'A cheap way to confirm DEPUTY_INSTALL and the token are right' gives an explicit use context, so the agent knows when this diagnostic identity check is warranted. It does not name an alternative or state exclusions, which keeps it short of a 5.
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.
21 tool updates
- Changed
deputy_add_unavailability1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
deputy_approve_timesheet1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
deputy_create_leave_request1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
deputy_create_memo1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
deputy_create_shift1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
deputy_describe_resource1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
deputy_get_employee1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
deputy_get_employee_unavailability1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
deputy_get_shift1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
deputy_get_timesheet1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
deputy_list_areas1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
deputy_list_employees1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
deputy_list_leave1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
deputy_list_locations1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
deputy_list_shifts1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
deputy_list_timesheets1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
deputy_publish_shifts1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
deputy_query_resource1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
deputy_update_shift1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
deputy_update_timesheet1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
deputy_whoami1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
21 tool updates
- First observed
deputy_add_unavailability - First observed
deputy_approve_timesheet - First observed
deputy_create_leave_request - First observed
deputy_create_memo - First observed
deputy_create_shift - First observed
deputy_describe_resource - First observed
deputy_get_employee - First observed
deputy_get_employee_unavailability - First observed
deputy_get_shift - First observed
deputy_get_timesheet - First observed
deputy_list_areas - First observed
deputy_list_employees - First observed
deputy_list_leave - First observed
deputy_list_locations - First observed
deputy_list_shifts - First observed
deputy_list_timesheets - First observed
deputy_publish_shifts - First observed
deputy_query_resource - First observed
deputy_update_shift - First observed
deputy_update_timesheet - First observed
deputy_whoami
Related MCP Connectors
Check shifts, time clock entries, time-off requests, swaps and availability, and manage shifts.
Read Shiftbase rosters, timesheets, absences and availability; schedule shifts and review absences.
Read Connecteam users, shifts, time clock, jobs, time off, tasks and forms; create shifts and tasks.
Read Breathe HR employees, absences, sickness and leave; create and review leave requests.
Related MCP Servers
- AlicenseAqualityCmaintenanceA read-only MCP server that transforms Deputy workforce records into operational workflows, enabling AI assistants to answer questions about coverage gaps, overtime risk, timesheet exceptions, availability conflicts, and staffing summaries.517 npmMIT
- AlicenseAqualityBmaintenanceAn MCP server for Deputy that provides read and write access to rosters, timesheets, and shifts. It runs locally and privately, communicating directly with your own Deputy install.4MIT
- AlicenseNot gradedqualityDmaintenanceIntegrates Tanda Workforce API with AI assistants to manage employee schedules, timesheets, leave requests, clock in/out operations, and workforce analytics through natural language with OAuth2 authentication.2MIT
- AlicenseAqualityDmaintenanceManages employee leave with Claude Desktop via natural language. Enables checking balances, applying, approving, and reviewing leave requests through a Supabase-backed MCP server.10MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.