Skip to main content
Glama
ivanherula
by ivanherula

@ivanherula/clockify-mcp-server

An MCP (Model Context Protocol) server for Clockify time tracking. Exposes Clockify functionality as tools that Claude and other MCP-compatible LLM clients can invoke.

Installation

npx @ivanherula/clockify-mcp-server

Or install globally:

npm install -g @ivanherula/clockify-mcp-server
clockify-mcp-server

Related MCP server: Clockify MCP Server

Environment Variables

Variable

Required

Description

CLOCKIFY_API_KEY

Yes

Your Clockify API key (found in Profile Settings → API)

CLOCKIFY_WORKSPACE_ID

No

Override workspace ID. If omitted, the first workspace is used automatically.

Configuration

Claude Desktop (claude_desktop_config.json)

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "clockify": {
      "command": "npx",
      "args": ["-y", "@ivanherula/clockify-mcp-server@latest"],
      "env": {
        "CLOCKIFY_API_KEY": "your_api_key_here"
      }
    }
  }
}

Claude Code (claude.json)

{
  "mcpServers": {
    "clockify": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "@ivanherula/clockify-mcp-server@latest"
      ],
      "env": {
        "CLOCKIFY_API_KEY": "your_api_key_here"
      }
    }
  }
}

Local development / testing

{
  "mcpServers": {
    "clockify": {
      "command": "node",
      "args": ["/path/to/clockify-mcp-server/build/index.js"],
      "env": {
        "CLOCKIFY_API_KEY": "your_api_key_here"
      }
    }
  }
}

Available Tools

Tool

Description

get_workspaces

List all workspaces

get_current_user

Get authenticated user info

get_projects

List projects (filter by name, archived; paginated)

get_clients

List clients (filter by name, archived; paginated)

get_tags

List tags (filter by name, archived; paginated)

get_time_entries

List time entries with optional date range filter

get_current_timer

Get the currently running timer (null if none)

create_time_entry

Create a time entry; omit end to start a live timer

stop_timer

Stop the running timer with an end time

update_time_entry

Full replace of a time entry (requires start)

delete_time_entry

Delete a time entry by ID

Testing with MCP Inspector

CLOCKIFY_API_KEY=your_key npx @modelcontextprotocol/inspector node build/index.js

Opens at http://localhost:5173 where you can interactively test all tools.

License

MIT

Available Tools

13 tools
create_time_entryB

Create a time entry. Omit end to start a live timer.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoEnd time (ISO 8601 UTC). Omit to start a live timer.
startYesStart time (ISO 8601 UTC)
tagIdsNoTag IDs
taskIdNoTask ID
billableNoWhether the entry is billable
projectIdNoProject ID
descriptionNoEntry description

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It discloses one behavior (omitting `end` starts a live timer), but that same fact is already in the schema's `end` property description, and nothing is said about timer conflicts, required permissions, reversibility, or side effects on siblings like get_current_timer/stop_timer.

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

Conciseness5/5

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

Two short sentences with zero filler, and the core action is front-loaded ahead of the behavioral nuance. Nothing needs trimming and nothing is padded.

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

Completeness3/5

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

For a 7-parameter mutation tool with no annotations and no output schema, the description is thin: an agent can call it correctly thanks to full schema coverage, but gets no signal about interaction with an existing live timer or the return shape. Adequate, with visible gaps.

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

Parameters3/5

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

Schema description coverage is 100% – all 7 parameters (start, end, tagIds, taskId, billable, projectId, description) are documented in the schema itself. The description adds no format, constraint, or relationship detail beyond the schema's own 'Omit to start a live timer' note, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb+resource ('Create a time entry') and adds a second capability ('start a live timer' when `end` is omitted). This clearly separates it from update_time_entry, delete_time_entry and stop_timer, though it never names those siblings explicitly.

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

Usage Guidelines3/5

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

Usage is only implied: an agent can infer this is the creation path versus update/delete/stop siblings, and the 'omit `end`' clause gives one real branching rule. There is no explicit when-to-use guidance, no prerequisites, and no mention of what to do if a timer is already running.

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

delete_time_entryC

Delete a time entry by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
entryIdYesTime entry ID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a mutation but never states whether deletion is permanent or reversible, whether it requires an unsent/unsubmitted entry, what happens to the timer if this entry is running, or what is returned. This is a significant gap for a destructive operation.

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

Conciseness4/5

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

A single tight sentence with the verb and identifier front-loaded and no filler. It is efficient, though there is almost nothing beyond the bare minimum to structure.

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

Completeness2/5

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

For a destructive, no-annotation, no-output-schema tool, the description omits the critical facts an agent needs: irreversibility, permission or status prerequisites, and side effects on timers or reports. Only the parameter name is fully covered by structured data.

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

Parameters3/5

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

Schema coverage is 100% and the single entryId parameter is already documented as 'Time entry ID,' so the description adds nothing beyond it. Baseline 3 is appropriate 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.

Purpose4/5

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

States a specific verb (Delete) and resource (time entry), with the lookup key (ID) named. It is clear apart from create_time_entry and update_time_entry by the verb alone, but it does not explicitly differentiate why to delete versus stop a timer or update an entry.

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

Usage Guidelines2/5

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

No guidance on when deletion is appropriate versus the sibling update_time_entry or submit_for_approval, and no note about prerequisites (e.g. entry must not be submitted/approved) or consequences. The agent gets no when-to-use or when-not-to-use signal.

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

get_clientsC

List clients in the workspace

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoFilter by client name
pageNoPage number
archivedNoInclude archived clients
pageSizeNoResults per page

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden and discloses almost nothing: it doesn't state that results are paginated, that archived clients are excluded by default, or what happens when the workspace has many clients. 'List' implies a read, but the agent must infer this.

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

Conciseness4/5

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

A single front-loaded sentence with zero waste, appropriate for a simple list tool. It is efficient but so terse that it borders on under-specification rather than true conciseness.

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

Completeness2/5

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

For a 4-parameter paginated list tool with no annotations and no output schema, the description omits pagination semantics, default filtering of archived clients, and any sense of what a client record contains. The schema covers parameters, but the behavioral picture is incomplete.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents name, page, archived, and pageSize with defaults and bounds. The description adds no parameter meaning beyond what the schema provides, which is the defined baseline of 3.

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

Purpose4/5

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

States a specific verb ('List') and resource ('clients') with workspace scope, so the agent knows exactly what is returned. It does not differentiate from any sibling, though the sibling list covers entirely different resources (workspaces, projects, tags), so confusion risk is low.

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

Usage Guidelines2/5

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

No guidance on when to use this versus alternatives, nor any preconditions. There is no sibling that lists clients, so routing is unlikely to be wrong, but the description offers nothing about appropriate contexts or defaults.

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

get_current_timerA

Get the currently running timer (null if no timer is running)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations present, the description carries the full behavioral burden. It usefully discloses the null-return case when no timer is running, which is genuine behavioral information, but says nothing about permissions, whether the result is live/subscription-style, or what the timer object contains.

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

Conciseness5/5

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

A single front-loaded sentence with the core action first and the null edge case parenthetically appended. No filler, nothing to trim.

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

Completeness4/5

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

For a nullary getter with no output schema, the description conveys the essential behavior including the empty-result case. It stops short of describing the returned timer's shape, but that is a minor gap for such a simple tool.

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

Parameters4/5

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

The tool takes zero parameters, so per the baseline rule a 4 applies. The description correctly implies no inputs are needed, and there is nothing further to document.

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

Purpose4/5

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

States a specific verb (Get) and resource (the currently running timer), so an agent immediately knows the intent. It does not explicitly differentiate from siblings like stop_timer or get_time_entries, but the resource is distinct enough that confusion is unlikely.

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

Usage Guidelines2/5

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

There is no explicit when-to-use statement, no mention of prerequisites, and no routing to an alternative such as get_time_entries. Usage is only inferable from the name, so no real guidance is provided.

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

get_current_userB

Get the authenticated Clockify user info

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. 'Get' implies a read, but nothing is said about authentication requirements, error behavior when the token is invalid, or rate limits. For a tool whose entire purpose is auth-identity retrieval, this is a notable gap.

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

Conciseness4/5

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

A single front-loaded sentence with no filler. It is arguably too terse given the missing behavioral context, but there is no wasted verbiage.

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

Completeness3/5

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

For a zero-parameter read tool this is close to sufficient, but with no output schema the description should indicate what the returned user object contains (id, email, name, active workspace), which an agent needs in order to chain subsequent calls.

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

Parameters4/5

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

The input schema has zero parameters, so there is nothing for the description to disambiguate. Baseline 4 applies.

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

Purpose4/5

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

States a specific verb ('Get') and resource ('authenticated Clockify user info'), which is unambiguous and distinguishable from sibling list tools like get_workspaces and get_projects. It does not explicitly name a sibling or used-instead-of relationship, so it falls just 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.

Usage Guidelines2/5

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

No guidance on when to call this versus other identity-related operations, no mention of prerequisites, caching, or whether it should be called once per session. The agent must infer usage entirely from the name.

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

get_projectsC

List projects in the workspace

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoFilter by project name
pageNoPage number
archivedNoInclude archived projects
clientIdNoFilter by client ID
pageSizeNoResults per page

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full behavioral burden, and it does very little: it implies a read-only listing scoped to the workspace but says nothing about pagination behavior, whether archived projects are excluded by default, or result ordering. For a 5-parameter listing tool with zero annotation coverage, this is a significant gap.

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

Conciseness4/5

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

A single short sentence with no waste and the resource is front-loaded. It is efficient, though arguably terse to the point of under-specification rather than genuinely concise in a helpful way.

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

Completeness2/5

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

With five parameters, no output schema, and no annotations, the description is too thin to fully inform correct invocation. It omits default behavior for the archived filter and any note on pagination semantics, leaving the agent to infer everything from the schema alone.

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

Parameters3/5

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

Schema description coverage is 100%, so all five parameters (name, page, archived, clientId, pageSize) are already documented in the schema, establishing the baseline of 3. The description adds no additional meaning, such as default filtering behavior for archived.

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

Purpose4/5

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

States a specific verb (List) and resource (projects) scoped to the workspace, so the core action is unambiguous. However, it offers no differentiation from sibling listing tools such as get_tasks, get_clients, or get_workspaces, which follow the same pattern.

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

Usage Guidelines2/5

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

There is no guidance on when to call this tool versus its many sibling list tools, and no exclusions or prerequisites are stated. Usage is only implied by the name and description.

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

get_tagsC

List tags in the workspace

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoFilter by tag name
pageNoPage number
archivedNoInclude archived tags
pageSizeNoResults per page

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided, so the description carries the full behavioral burden. It does not disclose that results are paginated by default (page/pageSize), that archived tags are excluded unless requested, or any permission/auth requirements. For a list tool with no annotations, this is a significant gap.

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

Conciseness4/5

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

Single short sentence, front-loaded with verb and resource. Efficient though minimal.

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

Completeness2/5

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

For a multi-param list tool with pagination and zero annotation coverage, the description omits pagination behavior, default filtering behavior (archived), and any return-shape context. It is not complete enough for an agent to call confidently.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters including defaults and filter semantics are documented by the schema. The description adds nothing beyond what the schema provides, so baseline 3 is appropriate.

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

Purpose4/5

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

States a specific verb (List) and resource (tags) scoped to the workspace. It doesn't distinguish from siblings, but the resource noun is unambiguous enough that an agent can identify it.

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

Usage Guidelines2/5

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

No guidance on when to use this versus siblings like get_tasks or get_projects, and no indication of when to prefer archived vs active tags. Only implied usage from the name.

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

get_tasksC

List tasks within a project

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoFilter by task name
pageNoPage number
archivedNoInclude archived tasks
pageSizeNoResults per page
projectIdYesProject ID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full behavioral burden. 'List' implies a safe read, but nothing is said about pagination behavior, default result limits, whether archived tasks are excluded by default, or authentication/permission needs. For a 5-parameter query tool this is a significant gap.

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

Conciseness4/5

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

A single short sentence that is fully front-loaded with no wasted words. It is efficient, though its brevity borders on under-specification rather than ideal conciseness.

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

Completeness2/5

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

A five-parameter list tool with no annotations and no output schema needs the description to cover return shape, pagination, and filtering behavior. The one-liner leaves all of that unaddressed, so the definition is not complete enough for confident invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter (name, page, archived, pageSize, projectId) is already documented in the schema. The description adds no extra meaning such as filter syntax or default-value behavior, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('List tasks') plus scope ('within a project'), so an agent knows this is a read operation scoped to a project. It does not, however, distinguish itself from siblings or note how it relates to any task-filtering alternatives.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives, no prerequisites, and no note about when to prefer other sibling tools such as get_time_entries. The single sentence implies usage but states nothing explicitly.

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

get_time_entriesC

List time entries for the current user

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoEnd of date range (ISO 8601 UTC)
pageNoPage number
startNoStart of date range (ISO 8601 UTC)
pageSizeNoResults per page

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a read-only list scoped to the current user, but says nothing about what happens when start/end are omitted, how pagination behaves, or the ordering of results.

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

Conciseness4/5

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

A single, front-loaded sentence with no filler or redundancy. It is efficient, though the brevity comes at the cost of detail captured in other dimensions.

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

Completeness2/5

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

With four parameters, no annotations, and no output schema, the description should explain default date-range behavior and pagination semantics to be callable with confidence. It leaves both unaddressed, so an agent cannot tell what an unfiltered call returns.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters (start, end, page, pageSize) are already documented in the schema; the baseline is 3. The description adds only the implicit user scoping, not any format or default behavior beyond the schema.

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

Purpose4/5

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

States a specific verb and resource ('List time entries') plus a scope constraint ('for the current user'), so the agent knows what it returns. It does not, however, distinguish itself from siblings like get_current_timer or get_projects, which also read user-scoped data.

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

Usage Guidelines2/5

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

No guidance on when to use this versus alternatives such as get_current_timer or get_time_entry-related tools, and no exclusions or prerequisites. The agent must infer that this is the bulk-listing tool rather than the single-timer tool.

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

get_workspacesB

List all Clockify workspaces

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. 'List all' hints at a read-only, unfiltered operation, but it says nothing about whether results are paginated, ordered, or require authentication, and there is no output schema to fall back on.

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

Conciseness5/5

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

A single short sentence with no filler that leads directly with the verb and resource. Nothing could be trimmed without losing meaning.

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

Completeness4/5

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

For a trivial zero-parameter list operation this is nearly sufficient, and the lack of an output schema means return values are the only meaningful gap. Minor details such as ordering or pagination are absent but low risk here.

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

Parameters4/5

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

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

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

Purpose4/5

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

States a clear verb (List) and resource (Clockify workspaces) with the scope qualifier 'all'. It is easily distinguished from the sibling tools, which all deal with projects, clients, tags, or time entries rather than workspaces.

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

Usage Guidelines2/5

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

The description gives no when-to-use context, prerequisites, or alternatives. It never explains when an agent should call this versus get_current_user, which also exposes workspace-related identity context.

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

stop_timerC

Stop the currently running timer

ParametersJSON Schema
NameRequiredDescriptionDefault
endYesEnd time (ISO 8601 UTC)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description must carry full behavioral disclosure. It states the action but does not describe side effects (e.g., whether it creates a time entry), required permissions, idempotency, or error behavior if no timer is running. This is a significant gap for a mutation tool.

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

Conciseness4/5

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

A single, front-loaded sentence with no wasted words. It is efficient, but its extreme brevity contributes to the missing behavioral context.

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

Completeness2/5

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

For a mutation tool with no annotations and no output schema, the description is too thin. It omits when to use it, what happens on success/failure, and how the 'end' parameter relates to the stop action, leaving the agent to infer critical details.

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

Parameters3/5

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

Schema description coverage is 100%, so the 'end' parameter is fully documented in the schema as ISO 8601 UTC. The description adds no additional meaning beyond what the schema provides. Baseline 3 is appropriate 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.

Purpose4/5

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

States a specific verb 'Stop' and resource 'timer' with the scope 'currently running', making the action clear. However, it does not explicitly differentiate from sibling tools like get_current_timer or update_time_entry, leaving the agent to infer when this is the right choice.

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

Usage Guidelines2/5

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

No explicit when-to-use or when-not-to-use guidance is provided. The phrase 'currently running timer' implies a precondition, but no alternatives or prerequisites are named.

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

submit_for_approvalC

Submit time entries for manager approval for a given week/period

ParametersJSON Schema
NameRequiredDescriptionDefault
periodYesPeriod type
startTimeYesStart date of the period to submit (ISO 8601 UTC)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Submit for approval' implies a state-changing workflow action, but it says nothing about what changes (locking, status transitions), whether it is reversible, required permissions, or what happens on failure.

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

Conciseness5/5

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

A single front-loaded sentence with zero filler. The action, target, and scope are all stated immediately.

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

Completeness2/5

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

For a mutation-style workflow tool with no annotations and no output schema, the description is too thin. An agent cannot tell what submitting does to the entries, whether it can be undone, or whether a manager must already be assigned.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters (period enum and startTime with ISO 8601 detail) are already fully documented. The description's phrase 'given week/period' adds no meaning beyond the schema, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb (submit) and resource (time entries) plus the workflow target (manager approval) and scope (a given week/period). It is clearly distinguishable from CRUD siblings like update_time_entry or create_time_entry, though it never names an alternative explicitly.

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

Usage Guidelines2/5

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

No when-to-use, when-not-to-use, or prerequisite information. The only guidance is implicit in the purpose itself ('submit for approval'), with no mention of when this is appropriate versus editing entries first or contacting a manager.

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

update_time_entryC

Update (full replace) an existing time entry by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoEnd time (ISO 8601 UTC)
startYesStart time (ISO 8601 UTC)
tagIdsNoTag IDs
taskIdNoTask ID
entryIdYesTime entry ID
billableNoWhether the entry is billable
projectIdNoProject ID
descriptionNoEntry description

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It notes 'full replace' which implies destructive behavior on fields not supplied, but does not state whether omitted fields are cleared, whether required fields like start must be re-supplied, or any permission or side-effect details. This is a significant gap for a mutation tool.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that conveys the essential action and scope without any wasted words.

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

Completeness2/5

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

For an 8-parameter mutation tool with no annotations and no output schema, the description is too sparse. It lacks details on required permissions, how partial updates are handled, or what happens to fields not included, leaving the agent without necessary behavioral context.

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

Parameters3/5

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

Schema description coverage is 100%, so parameters are fully documented in the schema. The description adds only the notion of 'full replace', which implies unspecified parameters may be reset, but does not elaborate on parameter semantics 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.

Purpose4/5

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

The description states a specific verb (update) and resource (time entry) and clarifies that it is a full replace by ID, which distinguishes it from sibling tools like create_time_entry or delete_time_entry. It could be more explicit about differentiating from partial-update alternatives, but the core purpose is clear.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like create_time_entry or delete_time_entry, or conditions under which a full replace is appropriate. The agent must infer usage from the name and description alone.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 13 tool updatesv0.1.3
    • First observedcreate_time_entry
    • First observeddelete_time_entry
    • First observedget_clients
    • First observedget_current_timer
    • First observedget_current_user
    • First observedget_projects
    • First observedget_tags
    • First observedget_tasks
    • First observedget_time_entries
    • First observedget_workspaces
    • First observedstop_timer
    • First observedsubmit_for_approval
    • First observedupdate_time_entry

TDQS

A3.5/5.0

Scored across 13 tools

Disambiguation5/5

Each tool targets a distinct resource or action: retrieval of workspaces/users/projects/clients/tags/tasks, CRUD for time entries, and timer control. The only potential overlap is between get_current_timer and get_time_entries, but descriptions clearly differentiate them.

Naming Consistency5/5

All tool names use snake_case with a consistent verb_noun pattern (get_, create_, update_, delete_, stop_, submit_). No deviations or mixed conventions.

Tool Count5/5

13 tools is well within the typical 3-15 range for a focused MCP server. Each tool corresponds to a meaningful operation in the Clockify domain, with no obvious redundancies.

Completeness4/5

The server covers the full lifecycle for time entries (create, read, update, delete, start/stop timer, submit for approval) and provides read access to supporting entities. However, it lacks create/update/delete operations for projects, clients, tags, and tasks, which may limit management workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers