TimeTac MCP by usefulapi
Server Details
Read hours, absences and projects; start timers, add entries, approve leave in TimeTac.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- Repository
- m190/usefulapi-mcp
- GitHub Stars
- 0
TDQS
Scored across 16 tools
Reads and writes are cleanly split and each tool targets a distinct resource (users, teams, departments, projects, tasks, absences, time trackings). The only mild overlap is between timetac_create_time_tracking (finished entry) and timetac_start_time_tracking (running timer), but the descriptions make the distinction explicit. Similarly list_time_trackings vs current_time_trackings is clarified by wording.
Every tool uses the timetac_ prefix with consistent snake_case verb_noun patterns: list_* for reads, create_*/approve_*/reject_*/start_*/stop_* for writes. The convention is predictable and readable throughout.
16 tools is slightly above the ideal band but each one maps to a concrete API operation and a real workflow step. Nothing feels like filler; the read/write split justifies the number.
The read surface is thorough (users, teams, departments, projects, tasks, absences, absence types, time entries) and the absence approval lifecycle is covered. However, there is no way to update or delete a time entry or cancel/withdraw an absence request, which are common correction workflows and will cause dead ends for agents.
Available Tools
16 toolstimetac_approve_absenceApprove absenceADestructiveInspect
WRITE: approve an open absence request. The employee is notified by TimeTac. TimeTac API: PUT absences/approve.
| Name | Required | Description | Default |
|---|---|---|---|
| comment | No | Optional comment shown to the employee. | |
| absence_id | Yes | The absence request id (from timetac_list_absences). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only carry destructiveHint=true, so the description adds meaningful behavior: it is a WRITE, the employee is notified by TimeTac, and the underlying call is PUT absences/approve. The user-visible side effect (notification) is genuinely useful context not in any structured field. It stops short of saying whether the action is reversible or what happens if the request is already decided.
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 operation type and verb, with no wasted wording. The endpoint line is compact and informative rather than 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 two-parameter write tool with no output schema, the description covers the action, the side effect, and the transport detail, which is enough to invoke it correctly. A statement about state preconditions (request must still be open) 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?
Schema coverage is 100% and both parameters already document their meaning and constraints, including that absence_id comes from timetac_list_absences. The description adds nothing about the parameters, 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 and resource ('approve an open absence request') and leads with a 'WRITE:' marker. The verb distinguishes it from timetac_reject_absence and timetac_list_absences, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The qualifier 'open' implies the request must be pending, and the schema points to timetac_list_absences as the source of the id. There is no explicit when-not guidance, no mention of timetac_reject_absence as the alternative decision path, and no stated precondition/error behavior for non-open requests.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
timetac_create_absenceRequest absenceADestructiveInspect
WRITE: create an absence or leave request for a user. Each call creates a new request, so do not repeat it. type_id is the category (1 holiday, 2 overtime reduction, 3 other paid leave); subtype_id picks the leave type from timetac_list_absence_types. TimeTac API: POST absences/create.
| Name | Required | Description | Default |
|---|---|---|---|
| to_date | Yes | ||
| type_id | Yes | Absence category: 1 = holiday, 2 = overtime reduction, 3 = other paid leave. | |
| user_id | Yes | ||
| duration | No | Requested duration, in the unit of duration_unit. | |
| from_date | Yes | ||
| subtype_id | No | Specific leave type inside the category (for example which other paid leave). See timetac_list_absence_types. | |
| duration_unit | No | d = days, hs = hours. | |
| request_comment | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real behavior beyond annotations: the call is non-idempotent and each invocation produces a new record, and the underlying endpoint is named. It does not explain that the created request is likely pending approval or what state/identifier comes back, and the destructiveHint=true annotation is left unaddressed.
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?
Compact and front-loaded: write semantics, idempotency warning, category mapping, then the endpoint. The trailing API endpoint note earns little for an agent but costs only a few tokens.
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?
Given 8 parameters, no output schema, and a thin annotation set, the description covers the key decision points an agent needs to issue the write safely. Missing pieces are the post-create outcome (returned ID, pending status) and the meaning of the destructiveHint flag.
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 only 50%; the description reinforces type_id and usefully points subtype_id at timetac_list_absence_types. However, duration, duration_unit, request_comment, and the semantics of from_date/to_date (range vs single day, half-days) are left entirely to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('create an absence or leave request for a user') and leads with a WRITE marker that separates it from the read/approve/reject siblings. Sibling differentiation is implied by intent rather than stated by name.
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 a practical usage rule ('Each call creates a new request, so do not repeat it') and routes subtype lookup to timetac_list_absence_types. No explicit exclusion or prerequisite (e.g. that requests land in a pending state needing timetac_approve_absence) is stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
timetac_create_time_trackingAdd time entryBDestructiveInspect
WRITE: add a finished time entry for a user. Each call creates a new entry, so do not repeat it. TimeTac API: POST timeTrackings/create.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | ||
| task_id | Yes | The task to book the time on. | |
| user_id | Yes | ||
| end_time | Yes | ||
| start_time | Yes | ||
| end_time_timezone | Yes | IANA time zone, for example Europe/Vienna. | |
| start_time_timezone | Yes | IANA time zone, for example Europe/Vienna. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare destructiveHint=true; the description adds real signal by flagging this as a WRITE that is non-idempotent (a new entry per call, duplicates likely on retry). That is meaningful beyond the annotation. It still omits what is returned (entry id?) and whether any validation like end>start is enforced server-side.
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 WRITE marker and the duplicate-entry warning. The trailing endpoint string is mostly provenance metadata rather than agent-facing guidance, which is the only mild 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 7-parameter, 6-required mutation with no output schema and low param description coverage, the definition covers the essential create semantics but leaves gaps: return value, required field formats not in the schema, and no note on duplicate/overlap handling beyond 'do not repeat it'.
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 only 43% — user_id, notes, start_time and end_time carry no descriptions, only types and a datetime regex. The description says nothing about parameters; 'for a user' and 'finished' only faintly gesture at user_id and the start/end pair, so the coverage gap is not compensated.
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 ('add a finished time entry for a user') and the qualifier 'finished' implicitly separates it from timetac_start_time_tracking / timetac_stop_time_tracking, which handle running timers. It also names the underlying endpoint. It does not explicitly name the sibling it replaces, keeping it just below 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?
'Each call creates a new entry, so do not repeat it' gives a useful caution about retries, but there is no explicit statement of when to choose this over timetac_start_time_tracking, timetac_stop_time_trackings, or the list tools, and no prerequisites (permissions, whether the task/user must already exist).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
timetac_current_time_trackingsRunning timersARead-onlyInspect
List the timers that run right now (who is clocked in, on which task). TimeTac API: GET timeTrackings/current.
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | No | Only the running timer of this user id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already establishes the safety profile, and the description adds genuinely new context: the returned fields (who is clocked in, on which task) and the underlying endpoint GET timeTrackings/current. Missing only volume/pagination expectations, which keeps it off 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the purpose and its payoff before the endpoint reference. The endpoint mention is mildly implementation-facing rather than agent-facing, a small tax on an otherwise tight 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 zero-required-parameter read tool with full schema coverage and no output schema, the description covers what it returns and when it applies. Nothing an agent needs in order to call it correctly is absent.
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 single parameter user_id has 100% schema description coverage ("Only the running timer of this user id"), so the schema already carries the semantics. The description adds nothing about the parameter – baseline 3 applies when the schema does 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?
"List the timers that run right now" gives a specific verb and resource, and the parenthetical ("who is clocked in, on which task") clarifies the payload. The "right now" temporal scope implicitly separates it from timetac_list_time_trackings, though no sibling is named outright.
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 by the phrase "run right now" – an agent can infer this is the live-timer query as opposed to historical listings, but there is no explicit statement of when to prefer it over timetac_list_time_trackings or timetac_get_user, and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
timetac_get_userGet userARead-onlyInspect
Get one employee by user id. Only work-related fields are returned (no credentials, payroll, address or birth data). TimeTac API: GET users/read?id=.
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | The TimeTac user id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already covers the safety profile, so the description's added value is the field-scope disclosure: 'Only work-related fields are returned (no credentials, payroll, address or birth data)'. That is genuinely useful context for an agent assembling a privacy-sensitive answer that annotations 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, zero filler, with the retrieval scope front-loaded before the field-exclusion note and the API detail last.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by stating what fields come back and which are withheld. For a one-parameter read this is nearly complete; only error/not-found behavior is unaddressed.
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 single parameter is documented as 'The TimeTac user id.' with type and bounds. The description adds only the underlying API path (users/read?id=), which does not enrich the semantics of the parameter for an agent. Baseline 3 applies when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Get one employee by user id'. The word 'one' implicitly contrasts with the listing sibling timetac_list_users, though that sibling is never named, so the distinction is inferable rather than explicit.
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 by the required 'user id' argument. There is no statement of when to prefer this over timetac_list_users, nor any note about behavior when the id does not exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
timetac_list_absencesList absencesBRead-onlyInspect
List absence and leave requests (holiday, sick leave and others) with dates, duration and approval status. from_date/to_date keep requests that overlap the range, on the returned page only. TimeTac API: GET absences/read.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return (API default 100). | |
| since | No | Only rows modified since this date-time, for example 2026-10-01 00:00:00. Dates older than 3 months return everything. | |
| offset | No | Skip this many rows (paging). | |
| status | No | Only this status code (0 = open; see the TimeTac docs for the others). | |
| to_date | No | Keep requests that start on or before this date. | |
| type_id | No | Only this absence category: 1 = holiday, 2 = overtime reduction, 3 = other paid leave. | |
| user_id | No | Only requests of this user id. | |
| from_date | No | Keep requests that end on or after this date. | |
| subtype_id | No | Only this leave type inside the category (see timetac_list_absence_types). |
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's added burden is low. It does contribute real value by disclosing the overlap semantics of the date range and the non-obvious caveat that filtering applies 'on the returned page only'. It says nothing about permissions, defaults beyond the schema, or result 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 tight sentences: the purpose and returned fields come first, then the filtering caveat and endpoint. No filler and nothing a reader must hunt for.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with fully documented parameters and no output schema, the description covers what the rows contain (dates, duration, approval status) and the range-filter behavior. It stops short on paging expectations, which matter with limit/offset across a 500-row ceiling.
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 nine parameters are already documented in structured form, which sets the baseline at 3. The description only synthesizes the from_date/to_date pair into overlap semantics and adds the page-scoping caveat; it adds nothing about status, since, type_id or subtype_id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List absence and leave requests') and enumerates what the rows carry (dates, duration, approval status), plus the backing endpoint GET absences/read. It is clearly distinct from create/approve/reject siblings, though it never names timetac_list_absence_types or any other sibling to sharpen the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use/when-not statement and no alternative tool is mentioned, even though siblings like timetac_list_absence_types or timetac_create_absence could plausibly be confused with it. The only conditional information given is how the date filters behave, which is parameter semantics rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
timetac_list_absence_typesList absence typesARead-onlyInspect
List the absence types of the account (holiday, sick leave, special leave) with their ids. TimeTac API: GET absenceTypes/read.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return (API default 100). | |
| offset | No | Skip this many rows (paging). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so safety is covered structurally. The description adds that results are scoped to the account and include ids, but says nothing about ordering, completeness of the returned set, or pagination behavior beyond what the schema documents.
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 with the resource and scope front-loaded, then the examples, then the endpoint. Nothing is redundant.
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-required-parameter read-only list tool with full schema coverage and readOnlyHint present, the definition covers what an agent needs. It would be complete at 5 if it noted the result is a reference list intended to supply ids to the absence-creation sibling.
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 both limit and offset documented in the schema itself. The description adds no paging or filtering semantics on top, 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 and resource ('List the absence types of the account') and enumerates concrete examples (holiday, sick leave, special leave) plus the returned ids. This is clearly distinguishable from sibling tools like timetac_list_absences, which lists actual absence records rather than their type definitions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is a lookup to resolve absence type ids before calling timetac_create_absence, but the description never says so. No exclusions or explicit alternative routing are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
timetac_list_departmentsList departmentsBRead-onlyInspect
List departments with ids and parent departments. TimeTac API: GET departments/read.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return (API default 100). | |
| offset | No | Skip this many rows (paging). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and the description is consistent with that, adding the upstream endpoint (GET departments/read) and the shape of the returned data. However, it says nothing about pagination behavior, total counts, or whether the hierarchy is returned flat, which matters for a 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with zero filler: the first states what is returned, the second pins the API mapping. Nothing can be removed without losing 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 simple read-only list tool with no output schema, the description compensates by stating the fields returned (ids, parent departments). The remaining gap is paging/hierarchy semantics, which is minor but non-zero.
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%: limit (max 500, default 100) and offset are fully documented in the schema itself. The description adds nothing about them, 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?
A specific verb+resource ('List departments') that also names the key returned fields (ids and parent departments), so an agent knows it is the org-structure listing tool. It does not explicitly contrast itself with sibling list tools such as timetac_list_teams or timetac_list_users, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no prerequisites, and no mention of alternatives among the many list_* siblings. Selection has to be inferred from the tool name and the mention of parent departments.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
timetac_list_projectsList projectsARead-onlyInspect
List projects (task tree nodes that group tasks) with ids, deadlines and status. TimeTac API: GET projects/read.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return (API default 100). | |
| since | No | Only rows modified since this date-time, for example 2026-10-01 00:00:00. Dates older than 3 months return everything. | |
| offset | No | Skip this many rows (paging). | |
| is_done | No | Only finished (true) or open (false) projects. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true is already in annotations, and the description usefully adds the underlying API endpoint (GET projects/read) plus the shape of what comes back (ids, deadlines, status) in the absence of an output schema. It stops short of describing paging behavior or whether results are hierarchical, both of which matter for a task-tree resource.
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 with zero filler: what it lists first, where it comes from second. Nothing to cut.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with all parameters documented in schema and no output schema, the description covers purpose, definition and returned fields adequately. Minor gaps are paging defaults and whether nested task-tree structure is returned.
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 limit, since, offset and is_done are fully documented in the schema itself. The description adds no filtering semantics (e.g. how since interacts with status) beyond what is already structured, so the baseline of 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?
Names a specific verb and resource and goes further by defining what a project is ("task tree nodes that group tasks") and listing the fields returned. That gloss meaningfully separates it from timetac_list_tasks, though the description never names the sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Contains no statement of when to call this versus timetac_list_tasks or timetac_list_time_trackings, and no prerequisites or exclusions. The only usage cue is the implicit one carried by the verb "List".
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
timetac_list_tasksList tasksARead-onlyInspect
List tasks that time can be booked on, with their project (mother_id) and status. TimeTac API: GET tasks/read.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return (API default 100). | |
| since | No | Only rows modified since this date-time, for example 2026-10-01 00:00:00. Dates older than 3 months return everything. | |
| offset | No | Skip this many rows (paging). | |
| is_done | No | Only finished (true) or open (false) tasks. | |
| mother_id | No | Only tasks of this project 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; the description usefully confirms it by citing GET tasks/read and discloses two returned fields (project, status). It adds nothing about pagination behavior, result size, or ordering beyond what the schema already says for limit/offset.
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, zero filler, with the functional scope front-loaded and the API endpoint kept as trailing metadata. Nothing is repeated from the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, zero-required-param list tool with full schema coverage, the description covers purpose, returned fields, and the endpoint mapping. With no output schema present it could say a bit more about the response envelope (e.g., paging metadata), but that is a minor 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 description coverage is 100%, so the schema already documents limit, since, offset, is_done, and mother_id in detail. The description only glosses mother_id as "project", adding no filtering semantics of its own – baseline 3 is appropriate when the schema carries the load.
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 tasks") plus the scope that matters for disambiguation: tasks that time can be booked on. Naming the returned fields (project via mother_id, status) and the backing endpoint (GET tasks/read) makes the intent unambiguous, though it does not explicitly contrast with siblings like timetac_list_projects.
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 "tasks that time can be booked on" – an agent can infer this is the lookup to run before timetac_create_time_tracking – but no when-to-use/when-not or alternative tools are named. There are also no prerequisites or exclusions spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
timetac_list_teamsList teamsARead-onlyInspect
List teams with ids and names. TimeTac API: GET teams/read.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return (API default 100). | |
| offset | No | Skip this many rows (paging). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already establishes the safety profile, so the description only needs to add context. It discloses the return payload fields (ids and names) and the underlying API call (GET teams/read), but says nothing about result-set size, paging defaults, or ordering beyond what the schema states.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the purpose and result shape. The API endpoint reference is low-value for an agent but does not obstruct 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 zero-required-parameter, read-only list tool with annotations covering safety and full schema coverage on paging, the description gives enough: what it returns and what it reads. No output schema exists, but the description names the returned fields, which is sufficient.
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 limit and offset fully documented including the API default of 100, so the schema carries the parameter burden. The description adds nothing about paging behavior, which is acceptable at the baseline for full coverage.
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 teams) and adds the returned fields (ids and names), which lets an agent distinguish it from siblings like timetac_list_departments or timetac_list_users. It does not explicitly contrast with those siblings, keeping it below a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance is given, and no alternative is named. However, the usage is strongly implied: it is an unfiltered enumeration of the teams resource, and no sibling covers the same resource.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
timetac_list_time_trackingsList time trackingsARead-onlyInspect
List time entries (start, end, duration, task, notes, approval), newest first. Filter by user, task or approval. start_date/end_date filter the returned page only; page with offset. TimeTac API: GET timeTrackings/read.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return (API default 100). | |
| since | No | Only rows modified since this date-time, for example 2026-10-01 00:00:00. Dates older than 3 months return everything. | |
| offset | No | Skip this many rows (paging). | |
| task_id | No | Only entries booked on this task id. | |
| user_id | No | Only entries of this user id. | |
| end_date | No | Keep entries that start on or before this date. | |
| start_date | No | Keep entries that start on or after this date. | |
| approved_by_admin | No | Only approved (true) or not approved (false) entries. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=true, so the description carries real weight and delivers: it discloses newest-first ordering and the non-obvious constraint that start_date/end_date filter only the returned page rather than the whole dataset — a trap that would otherwise cause wrong conclusions. The API endpoint is also given; only rate limits/result-count behavior are missing.
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, no filler: fields and ordering first, filter dimensions second, the pagination caveat third. Every clause carries information an agent needs.
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 compensates by enumerating the returned fields and adding paging guidance (offset), which is enough to call the tool correctly. It stops short of explaining total-count/result-limit behavior or how 'since' interacts with the paging window.
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; the description earns above that by resolving a semantic subtlety the schema descriptions actually obscure — 'start_date/end_date filter the returned page only' corrects the impression that the schema's 'keep entries that start on or after' implies global filtering.
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 time entries') and names the returned fields (start, end, duration, task, notes, approval) plus ordering ('newest first'), so the agent knows exactly what it gets. It does not explicitly distinguish itself from siblings such as timetac_current_time_trackings, which is the main remaining ambiguity.
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 names the filter dimensions (user, task, approval) which implies when to use it, and adds a caveat about date filtering, but it never states when to prefer a sibling (e.g. current trackings vs. this historical list) or what to do when no filters are needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
timetac_list_usersList usersARead-onlyInspect
List employees (users) of the TimeTac account: id, name, department, active flag, entry/exit dates. Only work-related fields are returned (no credentials, payroll, address or birth data). TimeTac API: GET users/read.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return (API default 100). | |
| since | No | Only rows modified since this date-time, for example 2026-10-01 00:00:00. Dates older than 3 months return everything. | |
| active | No | Only active (true) or inactive (false) users. | |
| offset | No | Skip this many rows (paging). | |
| department_id | No | Only users of this department 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 goes further by disclosing the exact data-minimization boundary ('no credentials, payroll, address or birth data') and naming the underlying endpoint (GET users/read). It stops short of describing pagination or default result-size behavior, which matters for a list endpoint capped at 500 rows.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with the returned-field list front-loaded and the privacy scope immediately after. The trailing 'TimeTac API: GET users/read' is of marginal value to an agent choosing a tool, though it is short enough not to be a real burden.
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 usefully compensates by enumerating the returned fields and their scope. Parameters are fully covered by the schema, so the only meaningful gap is the absence of paging/volume expectations for an endpoint that can return up to 500 rows.
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 (limit, since, active, offset, department_id) are already documented, including defaults and paging semantics. The description mentions 'department' and 'active flag' only as returned fields, not as filter semantics, so it adds nothing beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List employees (users) of the TimeTac account') and enumerates the fields returned (id, name, department, active flag, entry/exit dates). It is clearly distinct from write siblings, but it never explicitly contrasts itself with timetac_get_user or timetac_list_departments, leaving the singular-vs-collection choice 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 tool lists users and the schema filters suggest scoping by department, activity and modification date. There is no statement of when to prefer this over timetac_get_user for a single record, nor any prerequisite or exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
timetac_reject_absenceReject absenceADestructiveInspect
WRITE: reject an open absence request. The employee is notified by TimeTac. TimeTac API: PUT absences/reject.
| Name | Required | Description | Default |
|---|---|---|---|
| comment | No | Optional comment shown to the employee. | |
| absence_id | Yes | The absence request id (from timetac_list_absences). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare destructiveHint=true, so the description earns credit for adding that this is a write, that the employee is notified by TimeTac as a side effect, and that it maps to PUT absences/reject. It does not say whether a rejection can be undone or what happens on invalid input.
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 zero redundancy: operation class, effect, and API mapping. Nothing 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?
For a two-parameter mutation with no output schema, the description covers the operation, the side effect, and the endpoint mapping. Only error/precondition behavior for non-open absences is left unstated.
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%: absence_id and the optional comment are both fully documented in the schema, including the maxLength and the pointer to timetac_list_absences. The description adds nothing on parameters, which matches the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('reject an open absence request') and prefixes the operation class ('WRITE'). This cleanly distinguishes it from the sibling timetac_approve_absence, though it never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Restricting to 'open' absence requests implies a precondition, but there is no explicit statement of when to use this versus timetac_approve_absence or what to do about non-open requests. Usage is implied rather than guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
timetac_start_time_trackingStart timerADestructiveInspect
WRITE: start a timer for a user, now or at a given time. Each call can create a new running entry, so do not repeat it. TimeTac API: POST timeTrackings/start.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | ||
| task_id | No | The task to book the time on. | |
| user_id | Yes | The user the timer belongs to. | |
| start_time | No | Start date-time. Leave empty to start now. | |
| start_time_timezone | No | IANA time zone of start_time. Needed when start_time is set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only give destructiveHint=true and a title, so the description carries real weight here. The leading "WRITE:" marker and the duplicate-entry warning disclose the key behavioral risk (repeat calls create additional running entries), which the annotations do not express.
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 WRITE marker and the primary warning. No filler; the API endpoint note is a compact trailing detail.
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-param, single-required-field write tool with no output schema, the description covers the essential risk and timing modes. It leaves open what happens if the user already has a running timer, which would be the one useful addition.
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 80%, so descriptions already document task_id, user_id, start_time and start_time_timezone. The description adds only the "now or at a given time" framing for start_time and nothing about the timezone dependency, so it sits at the baseline for high-coverage 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 and resource (start a timer for a user) plus the two timing modes (now or at a given time). It is clearly separable from timetac_stop_time_tracking and timetac_create_time_tracking, though it doesn't name 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Each call can create a new running entry, so do not repeat it" is an explicit, actionable warning against duplicate invocation. It stops short of naming alternatives (e.g., check timetac_current_time_trackings first, or use stop_time_tracking to end one).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
timetac_stop_time_trackingStop timerAIdempotentInspect
WRITE: stop the running timer of a user, now or at a given time. TimeTac API: PUT timeTrackings/stop.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | ||
| user_id | Yes | The user whose running timer stops. | |
| end_time | No | End date-time. Leave empty to stop now. | |
| end_time_timezone | Yes | IANA time zone, for example Europe/Vienna. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The 'WRITE:' prefix usefully flags that this mutates state, and annotations only supply idempotentHint without destructive/readOnly hints, so that signal adds real value. However, it says nothing about what happens if no timer is running, whether a returned/created tracking record results, or how notes are attached to the stopped entry.
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 tight clauses with the mutation flag front-loaded and the mode choice immediately after; every element earns its place and nothing is padded.
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 four-parameter mutation with no output schema, the description covers the essential action and the now-vs-scheduled choice. It is only marginally short on edge-case behavior (timer not running, interplay of end_time with the required timezone).
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 75%, so most parameters are already documented; the description only echoes user and the optional end time. It adds no meaning for 'notes' or for why 'end_time_timezone' is required even when stopping now.
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 ('stop the running timer of a user') plus the scope variation ('now or at a given time'), which cleanly distinguishes it from the sibling start_time_tracking. The trailing endpoint reference (PUT timeTrackings/stop) reinforces the exact operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes clear when to use it and explains the two modes — stop immediately or stop at a specified end time. It does not explicitly name start_time_tracking or list when-not conditions, so it falls short of full alternative routing.
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.
16 tool updates
- First observed
timetac_approve_absence - First observed
timetac_create_absence - First observed
timetac_create_time_tracking - First observed
timetac_current_time_trackings - First observed
timetac_get_user - First observed
timetac_list_absence_types - First observed
timetac_list_absences - First observed
timetac_list_departments - First observed
timetac_list_projects - First observed
timetac_list_tasks - First observed
timetac_list_teams - First observed
timetac_list_time_trackings - First observed
timetac_list_users - First observed
timetac_reject_absence - First observed
timetac_start_time_tracking - First observed
timetac_stop_time_tracking
Related MCP Connectors
Read time entries, projects, clients, tasks and invoices; log and update tracked time.
Read Papershift absences, vacation, time tracking and shifts; request and review absences.
Read Tick clients, projects, tasks, users and time entries; log and edit time entries.
Read Tamigo departments, employees, shifts, absences and opening hours; register attendance.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables viewing, creating, and managing time registrations, absences, and timesheet approvals through the Timelog API using natural language.211ISC
- AlicenseNot gradedqualityDmaintenanceEnables automated timesheet management including creating entries, listing work activities, managing daily scrum updates, and viewing assigned projects with automatic authentication handling.13 npmMIT
- AlicenseAqualityBmaintenanceEnables tracking work time with start/stop timers, logging entries, and generating reports.44 npm46 PyPIMIT
- AlicenseAqualityCmaintenanceEnables interaction with the Clockodo time tracking API, providing tools, prompts, and resources for time tracking, HR analytics, and team management with role-based access.163MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.