Skip to main content
Glama

Kimai MCP Server

npm version npm downloads OpenSSF Scorecard License: AGPL-3.0 Node

An MCP (Model Context Protocol) server for Kimai, connecting your self-hosted time tracking to AI tools.

Quick start

Claude

Download for Claude Desktop

bash (macOS/Linux):

KIMAI_BASE_URL="https://example.kimai.cloud"
KIMAI_API_TOKEN="replace-with-api-token"

claude mcp add kimai \
  --env KIMAI_BASE_URL="$KIMAI_BASE_URL" \
  --env KIMAI_API_TOKEN="$KIMAI_API_TOKEN" \
  -- npx -y @nightsquawktech/kimai-mcp-server

PowerShell (Windows):

$KIMAI_BASE_URL = "https://example.kimai.cloud"
$KIMAI_API_TOKEN = "replace-with-api-token"

claude mcp add kimai `
  --env "KIMAI_BASE_URL=$KIMAI_BASE_URL" `
  --env "KIMAI_API_TOKEN=$KIMAI_API_TOKEN" `
  -- npx -y @nightsquawktech/kimai-mcp-server

Cursor

Add to Cursor

Or put the mcp.json block in .cursor/mcp.json, then verify with:

agent mcp list

(The Cursor CLI manages configured servers but has no mcp add; install is via the button or mcp.json.)

VS Code

Install in VS Code

bash (macOS/Linux):

KIMAI_BASE_URL="https://example.kimai.cloud"
KIMAI_API_TOKEN="replace-with-api-token"

code --add-mcp '{"name":"kimai","command":"npx","args":["-y","@nightsquawktech/kimai-mcp-server"],"env":{"KIMAI_BASE_URL":"'"$KIMAI_BASE_URL"'","KIMAI_API_TOKEN":"'"$KIMAI_API_TOKEN"'"}}'

PowerShell (Windows):

$KIMAI_BASE_URL = "https://example.kimai.cloud"
$KIMAI_API_TOKEN = "replace-with-api-token"

$config = @{
  name = "kimai"
  command = "npx"
  args = @("-y", "@nightsquawktech/kimai-mcp-server")
  env = @{
    KIMAI_BASE_URL = $KIMAI_BASE_URL
    KIMAI_API_TOKEN = $KIMAI_API_TOKEN
  }
} | ConvertTo-Json -Compress

code --add-mcp $config

Codex

bash (macOS/Linux):

KIMAI_BASE_URL="https://example.kimai.cloud"
KIMAI_API_TOKEN="replace-with-api-token"

codex mcp add kimai \
  --env KIMAI_BASE_URL="$KIMAI_BASE_URL" \
  --env KIMAI_API_TOKEN="$KIMAI_API_TOKEN" \
  -- npx -y @nightsquawktech/kimai-mcp-server

PowerShell (Windows):

$KIMAI_BASE_URL = "https://example.kimai.cloud"
$KIMAI_API_TOKEN = "replace-with-api-token"

codex mcp add kimai `
  --env "KIMAI_BASE_URL=$KIMAI_BASE_URL" `
  --env "KIMAI_API_TOKEN=$KIMAI_API_TOKEN" `
  -- npx -y @nightsquawktech/kimai-mcp-server

Or add it to ~/.codex/config.toml under [mcp_servers.kimai].

mcp.json

Every environment variable the server reads, with recommended values:

{
  "mcpServers": {
    "kimai": {
      "command": "npx",
      "args": ["-y", "@nightsquawktech/kimai-mcp-server"],
      "env": {
        "KIMAI_BASE_URL": "https://example.kimai.cloud",
        "KIMAI_API_TOKEN": "replace-with-api-token",
        "KIMAI_TIMEOUT_MS": "30000"
      }
    }
  }
}

File locations: .mcp.json in your project root (Claude Code), claude_desktop_config.json (Claude Desktop), .cursor/mcp.json (Cursor).

Related MCP server: mcp-timely

Configuration

Variable

Required

Default

Purpose

KIMAI_BASE_URL

yes

Your Kimai URL without a trailing slash, e.g. https://example.kimai.cloud

KIMAI_API_TOKEN

yes

API token generated in your Kimai user profile (API Access)

KIMAI_TIMEOUT_MS

no

30000

HTTP timeout for Kimai API requests, minimum 1000

Security & write safety

Kimai credentials: generate an API token in your Kimai user profile. The token inherits that user's permissions, so use a dedicated Kimai user with the smallest role that covers what you need.

  • 23 of the 28 tools are read-only. They only issue GET requests and cannot change anything in Kimai.

  • 5 timesheet write tools exist: kimai_create_timesheet, kimai_update_timesheet, kimai_stop_timesheet, kimai_restart_timesheet, kimai_duplicate_timesheet. There is no env gate; each call is guarded instead:

    • Every write requires authorization_confirmed: true and an authorization_note (8+ characters) recording the user's explicit approval. The tool descriptions instruct the model to call them only after a human authorizes the edit.

    • Every write saves a JSON backup (previous record, request, and result) to kimai-mcp-backups in the OS temp directory, so edits can be audited and manually reverted.

  • No delete tools are exposed.

  • All requests go directly from your machine to your Kimai instance; nothing passes through third parties.

IMPORTANT

The authorization fields are a guardrail, not a security boundary. The env vars in your MCP config are real credentials, and an AI agent with shell access can bypass the MCP tools and call the Kimai API directly with them. If you need hard read-only, enforce it at the source: give the token's Kimai user a role without timesheet edit permissions.

Tools

kimai_get_server_info           Kimai version, plugins, and timesheet config
kimai_get_current_user          The user behind the API token
kimai_list_users                List users
kimai_get_user                  Get one user
kimai_list_customers            List customers
kimai_get_customer              Get one customer
kimai_list_projects             List projects, optionally filtered by customer
kimai_get_project               Get one project
kimai_list_activities           List activities, optionally filtered by project
kimai_get_activity              Get one activity
kimai_list_tags                 Find tags by name
kimai_list_timesheets           List timesheets with user/customer/project/date/tag filters
kimai_get_timesheet             Get one timesheet entry
kimai_list_active_timesheets    Currently running timesheets
kimai_list_recent_timesheets    Recent timesheet entries
kimai_create_timesheet          Create a timesheet entry (write, requires authorization fields)
kimai_update_timesheet          Update a timesheet entry (write, requires authorization fields)
kimai_stop_timesheet            Stop a running timesheet (write, requires authorization fields)
kimai_restart_timesheet         Restart a stopped timesheet (write, requires authorization fields)
kimai_duplicate_timesheet       Duplicate a timesheet entry (write, requires authorization fields)
kimai_list_teams                List teams
kimai_get_team                  Get one team
kimai_list_invoices             List invoices
kimai_get_invoice               Get one invoice
kimai_list_expenses             List expenses (expenses plugin)
kimai_get_expense               Get one expense (expenses plugin)
kimai_list_tasks                List tasks (tasks plugin)
kimai_get_task                  Get one task (tasks plugin)

API coverage

31 operations covered across 28 tools.

Category

Operations

Server & status

4

Users

3

Customers, projects, activities, tags

7

Timesheets (read)

4

Timesheets (write)

5

Teams & invoices

4

Plugins: expenses & tasks

4

Method

Path

Tool

GET

/api/ping

kimai_get_server_info

GET

/api/version

kimai_get_server_info

GET

/api/plugins

kimai_get_server_info

GET

/api/config/timesheet

kimai_get_server_info

Method

Path

Tool

GET

/api/users/me

kimai_get_current_user

GET

/api/users

kimai_list_users

GET

/api/users/{id}

kimai_get_user

Method

Path

Tool

GET

/api/customers

kimai_list_customers

GET

/api/customers/{id}

kimai_get_customer

GET

/api/projects

kimai_list_projects

GET

/api/projects/{id}

kimai_get_project

GET

/api/activities

kimai_list_activities

GET

/api/activities/{id}

kimai_get_activity

GET

/api/tags/find

kimai_list_tags

Method

Path

Tool

GET

/api/timesheets

kimai_list_timesheets

GET

/api/timesheets/{id}

kimai_get_timesheet

GET

/api/timesheets/active

kimai_list_active_timesheets

GET

/api/timesheets/recent

kimai_list_recent_timesheets

Method

Path

Tool

POST

/api/timesheets

kimai_create_timesheet

PATCH

/api/timesheets/{id}

kimai_update_timesheet

PATCH

/api/timesheets/{id}/stop

kimai_stop_timesheet

PATCH

/api/timesheets/{id}/restart

kimai_restart_timesheet

PATCH

/api/timesheets/{id}/duplicate

kimai_duplicate_timesheet

Method

Path

Tool

GET

/api/teams

kimai_list_teams

GET

/api/teams/{id}

kimai_get_team

GET

/api/invoices

kimai_list_invoices

GET

/api/invoices/{id}

kimai_get_invoice

Method

Path

Tool

GET

/api/expenses

kimai_list_expenses

GET

/api/expenses/{id}

kimai_get_expense

GET

/api/tasks

kimai_list_tasks

GET

/api/tasks/{id}

kimai_get_task

Contributing

Contributions and issues are welcome. Please open an issue first before submitting a PR.

License

AGPL-3.0: free for personal and open-source use. Organizations that cannot comply with the AGPL can purchase a commercial license, and hosted/managed versions are available. See COMMERCIAL.md or contact hello@nightsquawk.tech.

For copyright concerns or takedown requests, contact hello@nightsquawk.tech.

Available Tools

28 tools
kimai_create_timesheetCreate Kimai TimesheetA

Create a Kimai timesheet record. Sensitive edit: call only after explicit human authorization. The request and created record are saved to a temp backup file.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoOptional timesheet end timestamp in Kimai HTML5 datetime-local format, e.g. 2026-06-01T10:30:00.
fullNoRequest fully serialized Kimai response where supported.
tagsNoOptional tags; sent to Kimai as a comma-separated list.
userNoOptional user ID; requires permission to edit other users' time.
beginYesTimesheet begin timestamp in Kimai HTML5 datetime-local format, e.g. 2026-06-01T09:00:00.
projectYesKimai project ID.
activityYesKimai activity ID.
billableNoOptional billable flag.
exportedNoOptional exported flag. This can lock/unlock timesheet records.
fixed_rateNoOptional fixed rate override.
descriptionNoOptional timesheet description.
hourly_rateNoOptional hourly rate override.
response_formatNoOutput format: markdown for human-readable summaries, json for structured output.markdown
authorization_noteYesShort note capturing the user's explicit authorization and reason for the edit.
authorization_confirmedYesMust be true only after the human user explicitly authorizes this sensitive Kimai edit.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations (readOnlyHint=false, destructiveHint=false) are supplemented by description stating sensitivity and backup behavior. Adds value beyond annotations by clarifying authorization requirement and persistent backup, though does not cover all edge cases.

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 concise, front-loaded sentences with no redundant information. Every sentence serves a purpose.

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?

Given 15 parameters, no output schema, and no description of return values, the description is slightly incomplete. It mentions backup but not the tool's response format, which is partially addressed by the 'response_format' parameter but not in the description itself.

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 baseline is 3. The description does not add parameter-level detail beyond the schema, so no extra value.

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

Purpose5/5

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

Description states 'Create a Kimai timesheet record' with a specific verb and resource. It also notes 'Sensitive edit', distinguishing it from read-only or other mutation tools like update, stop, restart.

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

Usage Guidelines4/5

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

Explicitly warns 'call only after explicit human authorization', providing clear usage context. Does not list when not to use or alternatives, but the context is sufficiently clear given sibling tools.

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

kimai_duplicate_timesheetDuplicate Kimai TimesheetA

Duplicate an existing Kimai timesheet. Sensitive edit: call only after explicit human authorization. The source and created record are saved to a temp backup file.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesKimai entity ID.
response_formatNoOutput format: markdown for human-readable summaries, json for structured output.markdown
authorization_noteYesShort note capturing the user's explicit authorization and reason for the edit.
authorization_confirmedYesMust be true only after the human user explicitly authorizes this sensitive Kimai edit.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=true. The description adds that this is a sensitive edit requiring authorization and that backups are saved. This provides meaningful behavioral context beyond the annotations, such as the need for human oversight and data preservation.

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 two sentences long, with the most critical instruction ('sensitive edit, call only after explicit human authorization') placed first. Every sentence adds value without redundancy.

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

Completeness4/5

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

The tool has 4 parameters and no output schema. The description covers the core operation (duplicate), the authorization requirement, and backup behavior. For a mutation tool with moderate complexity, this provides sufficient completeness, though it could optionally mention what happens to the original timesheet (it remains unchanged, implied by 'duplicate').

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%, meaning the input schema already documents all parameters (id, response_format, authorization_note, authorization_confirmed). The description does not add additional meaning beyond what the schema provides, so it meets the baseline but does not exceed it.

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

Purpose5/5

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

The description uses a specific verb ('Duplicate') and explicitly names the resource ('existing Kimai timesheet'). This clearly distinguishes it from related tools like 'kimai_create_timesheet' (create new) and 'kimai_update_timesheet' (modify).

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

Usage Guidelines4/5

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

The description explicitly states 'Sensitive edit: call only after explicit human authorization,' providing a clear precondition. It also notes that the source and created record are saved to a temp backup file, which implies a safety net. However, it does not compare to alternatives or specify when not to use it.

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

kimai_get_activityGet Kimai ActivityA
Read-onlyIdempotent

Read one Kimai activity from /api/activities/. This tool is read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesKimai entity ID.
response_formatNoOutput format: markdown for human-readable summaries, json for structured output.markdown

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds 'This tool is read-only.' which is consistent but does not provide further behavioral context (e.g., error handling, response format). The annotations carry most of the burden, so a score of 3 is appropriate.

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 two sentences, front-loaded with the key action and endpoint. Every sentence adds value without redundancy, making it highly concise and efficient.

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

Completeness4/5

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

For a simple read operation with rich annotations and full schema coverage, the description is largely complete. However, it lacks information about the return structure (no output schema) and does not explain what fields are in an activity, which could be useful for agents.

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?

The input schema has 100% coverage with descriptions for both parameters. The description does not add any additional meaning beyond what the schema already provides, so baseline 3 is correct.

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

Purpose5/5

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

The description clearly states the tool reads a single Kimai activity by ID, using the endpoint '/api/activities/<id>', and declares it as read-only. This distinguishes it from sibling tools like 'kimai_list_activities' which lists activities.

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

Usage Guidelines3/5

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

The description implies usage for fetching a specific activity but does not provide explicit guidance on when to use versus alternatives (e.g., 'kimai_list_activities' for searching or listing). No exclusion criteria or context is given.

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

kimai_get_current_userGet Current Kimai UserA
Read-onlyIdempotent

Read the current Kimai user from /api/users/me. This tool is read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
response_formatNoOutput format: markdown for human-readable summaries, json for structured output.markdown

TDQS

A3.6/5.0
Behavior2/5

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

Annotations already provide readOnlyHint, idempotentHint, etc. Description only repeats 'read-only' without adding new behavioral context. For a read tool, this is minimal but non-contradictory.

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 concise sentences with no waste. Essential information is front-loaded: verb, resource, endpoint, and safety.

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

Completeness4/5

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

For a simple read-only tool with one optional parameter and no output schema, the description is complete enough. It explains the tool's purpose and safety profile, though it lacks details on return structure.

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

Parameters3/5

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

Schema description coverage is 100% for the single parameter. The description does not add any extra meaning beyond what the schema already provides.

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

Purpose5/5

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

Description clearly states 'Read the current Kimai user from /api/users/me', specifying verb, resource, and endpoint. It distinguishes from siblings like kimai_get_user (specific user) and kimai_list_users (list all).

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

Usage Guidelines3/5

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

The tool name and description imply it is for the currently authenticated user, but no explicit guidance on when to use this vs alternatives like kimai_get_user or kimai_list_users.

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

kimai_get_customerGet Kimai CustomerA
Read-onlyIdempotent

Read one Kimai customer from /api/customers/. This tool is read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesKimai entity ID.
response_formatNoOutput format: markdown for human-readable summaries, json for structured output.markdown

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description adds the specific API endpoint but no further behavioral traits beyond confirming read-only nature.

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 sentences, front-loaded with verb and resource, no wasted words.

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?

The description is sufficient for a simple read tool given the rich annotations and clear purpose, though lack of output schema mention slightly reduces completeness.

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

Parameters3/5

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

Schema coverage is 100%, with both parameters described. The description adds minimal context (how 'id' is used in the URL) but does not provide additional semantics beyond the schema.

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

Purpose5/5

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

The description clearly states it reads one Kimai customer by ID from the API endpoint, distinguishing it from listing tools like kimai_list_customers.

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 does not guide when to use this tool versus alternatives like kimai_list_customers, nor does it mention any prerequisites or exclusions.

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

kimai_get_expenseGet Kimai ExpenseA
Read-onlyIdempotent

Read one expense from /api/expenses/ when the Kimai expenses feature/plugin is available. This tool is read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesKimai entity ID.
response_formatNoOutput format: markdown for human-readable summaries, json for structured output.markdown

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds context about plugin dependency and explicitly states 'This tool is read-only.', reinforcing the safety profile. No contradictions.

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 two sentences, each serving a distinct purpose: tool action and prerequisite, then read-only nature. No unnecessary words, front-loaded with the key action.

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?

Despite the tool having no output schema, the description does not describe what the response contains or its structure. It only says 'Read one expense', leaving the agent to infer the return format. Given the lack of output schema, this is a significant gap.

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

Parameters3/5

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

Schema coverage is 100%, so the schema fully documents both parameters (id and response_format). The description adds no additional meaning or usage guidance for these parameters beyond what is already in the schema.

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

Purpose5/5

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

The description clearly states the verb 'Read', the resource 'one expense', and the API endpoint '/api/expenses/<id>'. It also distinguishes from siblings like kimai_list_expenses by focusing on a single expense.

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

Usage Guidelines4/5

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

The description includes a prerequisite ('when the Kimai expenses feature/plugin is available'), which helps the agent understand when the tool is valid. It implies use for reading a single expense by ID, though it does not explicitly exclude cases like listing expenses.

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

kimai_get_invoiceGet Kimai InvoiceA
Read-onlyIdempotent

Read one Kimai invoice from /api/invoices/. This tool is read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesKimai entity ID.
response_formatNoOutput format: markdown for human-readable summaries, json for structured output.markdown

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description reiterates 'read-only' but adds no new behavioral traits beyond the endpoint path.

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 sentences, 14 words, front-loaded with the verb 'Read'. Every sentence adds value with no redundancy.

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

Completeness4/5

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

For a simple read tool with clear annotations, the description is sufficient. It conveys the core functionality, though it could optionally mention output expectations.

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 baseline is 3. The description does not add any parameter context beyond what the schema provides.

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

Purpose5/5

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

The description clearly states 'Read one Kimai invoice from /api/invoices/<id>', specifying the action (Read), resource (one Kimai invoice), and endpoint. This distinguishes it from sibling tools like kimai_list_invoices, which list multiple invoices.

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

Usage Guidelines3/5

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

The description implies this tool is for retrieving a single invoice by ID but does not explicitly mention when to use it over alternatives like kimai_list_invoices or provide when-not-to-use guidance.

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

kimai_get_projectGet Kimai ProjectA
Read-onlyIdempotent

Read one Kimai project from /api/projects/. This tool is read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesKimai entity ID.
response_formatNoOutput format: markdown for human-readable summaries, json for structured output.markdown

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description's 'read-only' adds no new behavioral insight. It does add the endpoint path, but this is minor. The description does not contradict annotations.

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 sentences, front-loaded with the main action and endpoint. No unnecessary words. Every sentence earns its place.

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

Completeness4/5

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

Given the simple read-only nature and rich annotations, the description covers most needs. It lacks details on return values or error cases, but these are less critical for a straightforward GET endpoint.

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

Parameters3/5

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

Schema coverage is 100%, so the description does not need to add parameter details. However, it provides no additional meaning beyond the schema, such as parameter usage or format. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states 'Read one Kimai project' with the specific endpoint '/api/projects/<id>'. This distinguishes it from sibling tools like kimai_list_projects (which lists) and other get_* tools.

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

Usage Guidelines4/5

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

The description says 'Read one Kimai project from /api/projects/<id>', implying use this when you need a single project by ID. It does not explicitly exclude listing, but the name and sibling context make the usage clear.

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

kimai_get_server_infoGet Kimai Server InfoA
Read-onlyIdempotent

Read Kimai API status, version, plugin, and timesheet configuration endpoints. This tool is read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
response_formatNoOutput format: markdown for human-readable summaries, json for structured output.markdown

TDQS

A4.1/5.0
Behavior4/5

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

The description confirms the tool is read-only, matching annotations. It adds specific details about which endpoints are read (status, version, plugins, timesheet config). This provides useful context beyond annotations.

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 concise sentences with no unnecessary words. Action verb 'Read' is front-loaded, and all information is relevant and well-structured.

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?

The description lists what endpoints are read but does not describe the return structure or format. Without an output schema, more detail on what the response contains would improve completeness.

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 description adds no extra meaning to the parameter. The parameter's purpose is already described in the schema, so the description meets the baseline without adding value.

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

Purpose5/5

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

The description clearly states the tool reads Kimai server info including API status, version, plugins, and timesheet configuration. This distinguishes it from sibling tools that focus on specific resources like users, timesheets, or customers.

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

Usage Guidelines4/5

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

The description implicitly indicates when to use this tool (to get server info), but lacks explicit guidance on when not to use it or alternatives. Given the tool's distinct focus, the context is sufficient.

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

kimai_get_taskGet Kimai TaskA
Read-onlyIdempotent

Read one task from /api/tasks/ when the Kimai tasks feature/plugin is available. This tool is read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesKimai entity ID.
response_formatNoOutput format: markdown for human-readable summaries, json for structured output.markdown

TDQS

A4/5.0
Behavior3/5

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

The description redundantly states 'This tool is read-only' when annotations already provide readOnlyHint=true and destructiveHint=false. It adds value by mentioning the plugin availability condition, but does not elaborate on error handling (e.g., what happens if the task ID doesn't exist) or other behavioral traits.

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 sentences, each serving a clear purpose: the first states the action and prerequisite, the second reinforces the read-only nature. No wasted words, and the information is front-loaded.

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

Completeness4/5

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

For a simple read operation, the description covers the essential context (API endpoint, plugin dependency) and the annotations cover safety. The lack of an output schema is mitigated by the `response_format` parameter hinting at human-readable vs. structured output. However, a brief note on the return structure would improve completeness.

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?

With 100% schema coverage, the description does not add any parameter-specific detail beyond what the schema provides. Both parameters (`id` and `response_format`) are well-documented in the schema, so the description does not need to repeat them.

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

Purpose5/5

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

The description clearly states the action ('Read'), the resource ('one task'), and the API endpoint ('/api/tasks/<id>'), distinguishing it from the sibling `kimai_list_tasks` which lists all tasks.

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

Usage Guidelines4/5

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

The description provides a condition for use ('when the Kimai tasks feature/plugin is available'), which helps set expectations. However, it does not explicitly contrast with other sibling tools or mention when not to use it, such as for listing tasks.

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

kimai_get_teamGet Kimai TeamA
Read-onlyIdempotent

Read one Kimai team from /api/teams/. This tool is read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesKimai entity ID.
response_formatNoOutput format: markdown for human-readable summaries, json for structured output.markdown

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description redundantly states 'read-only' but adds the endpoint path. No contradictions, but little new behavioral disclosure.

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 sentences with no extraneous information. Every part adds value and the description is front-loaded.

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

Completeness5/5

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

For a simple read tool with comprehensive annotations and complete schema, the description provides all necessary context. No output schema needed.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents both parameters. The description does not add any additional semantics beyond what is in the schema.

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

Purpose5/5

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

Description clearly states the verb 'Read' and resource 'one Kimai team', and specifies the endpoint path. This distinguishes it from sibling tools like kimai_list_teams which retrieves multiple teams.

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

Usage Guidelines4/5

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

The description implies usage for retrieving a specific team by ID. While it doesn't explicitly exclude alternative tools, the read-only nature and endpoint mention provide clear context.

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

kimai_get_timesheetGet Kimai TimesheetA
Read-onlyIdempotent

Read one Kimai timesheet entry from /api/timesheets/. This tool is read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesKimai entity ID.
response_formatNoOutput format: markdown for human-readable summaries, json for structured output.markdown

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds 'read-only' and the API path, but does not provide significant new behavioral context beyond what annotations already convey.

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

Conciseness5/5

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

The description is two sentences, efficient, and front-loaded with purpose. Every word adds value.

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

Completeness4/5

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

For a simple read tool with well-documented parameters and no output schema, the description is mostly complete. It could optionally mention the return object, but the tool's purpose is clear.

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

Parameters3/5

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

Schema coverage is 100% with clear descriptions for both parameters. The description adds no additional meaning, so it meets the baseline of 3.

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

Purpose5/5

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

The description clearly states the verb ('read'), the resource ('one Kimai timesheet entry'), and provides the API path. This distinguishes it from siblings like list tools.

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

Usage Guidelines3/5

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

The description implies usage for retrieving a single timesheet by ID, but does not explicitly state when to use this over alternatives like kimai_list_timesheets or provide exclusion criteria.

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

kimai_get_userGet Kimai UserB
Read-onlyIdempotent

Read one Kimai user from /api/users/. This tool is read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesKimai entity ID.
response_formatNoOutput format: markdown for human-readable summaries, json for structured output.markdown

TDQS

B3.4/5.0
Behavior2/5

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

The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description merely repeats 'This tool is read-only', adding no new behavioral information such as rate limits, authentication requirements, or side effects.

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 extremely concise, consisting of two short sentences that convey the essential purpose without unnecessary detail. Every word earns its place.

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?

Given the lack of an output schema, the description should provide some indication of the response structure (e.g., fields returned for a user). It fails to do so, leaving the agent uninformed about what data it will receive.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds no parameter-specific details beyond what is already in the schema, which sufficiently documents both parameters.

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

Purpose5/5

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

The description clearly states the action ('Read'), the resource ('one Kimai user'), and the specific endpoint ('/api/users/<id>'). This distinguishes it well from sibling tools like kimai_list_users or kimai_get_current_user.

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

Usage Guidelines3/5

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

The description implies usage when needing a single user by ID, but does not provide explicit guidance on when to use this tool over alternatives (e.g., when to use list vs get), nor does it mention any preconditions or context.

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

kimai_list_active_timesheetsList Active Kimai TimesheetsA
Read-onlyIdempotent

List currently running Kimai timesheet entries from /api/timesheets/active. This tool is read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoKimai API page number for paginated endpoints.
sizeNoKimai API page size. Kimai supports a maximum size of 500.
response_formatNoOutput format: markdown for human-readable summaries, json for structured output.markdown

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds the specific API endpoint path, which provides useful context beyond annotations. However, it does not describe any side effects or additional behavioral traits.

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 comprised of two short sentences that front-load the purpose. Every word is necessary; there is no filler or redundancy.

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

Completeness4/5

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

The tool has no output schema, but the response_format parameter addresses output structure. The description is complete for a simple read-only list tool, though it could optionally mention that the output includes timesheet IDs and durations.

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 all parameters. The description does not add any additional semantics beyond what is in the schema. Baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool lists currently running Kimai timesheet entries from a specific endpoint. It distinguishes from sibling tools like kimai_list_timesheets (all timesheets) and kimai_list_recent_timesheets (recent ones) by explicitly mentioning 'active' entries.

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

Usage Guidelines3/5

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

The description implies usage for retrieving active timesheets but provides no explicit guidance on when to use this tool versus alternatives like kimai_list_timesheets or kimai_list_recent_timesheets. No when-not-to-use or exclusion criteria are mentioned.

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

kimai_list_activitiesList Kimai ActivitiesA
Read-onlyIdempotent

List activities visible to the Kimai API token from /api/activities, optionally filtered by project. This tool is read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoKimai API page number for paginated endpoints.
sizeNoKimai API page size. Kimai supports a maximum size of 500.
termNoOptional search term for endpoints that support it.
orderNoOptional sort direction.
projectNoOptional project ID filter.
visibleNoOptional visibility filter for endpoints that support it.
order_byNoOptional Kimai orderBy field.
response_formatNoOutput format: markdown for human-readable summaries, json for structured output.markdown

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already provide rich behavioral information (readOnlyHint=true, idempotentHint=true, destructiveHint=false, openWorldHint=true). The description adds that it uses the /api/activities endpoint and is read-only, which aligns with annotations but does not significantly expand beyond them. No contradictions.

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 concise sentences. The first sentence front-loads the action, resource, endpoint, and optional filter. The second sentence states read-only nature. No wasted words.

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?

The description does not explain return format, pagination behavior, or the effect of the 'response_format' parameter. Given 8 parameters and no output schema, some additional context about what the response contains would be helpful. However, annotations and schema provide substantial 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 coverage is 100%, so the schema fully documents all 8 parameters. The description only hints at the 'project' parameter for filtering. While the schema descriptions are adequate, the tool description adds minimal value beyond what the schema already provides.

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

Purpose5/5

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

The description clearly states the verb 'List', the resource 'activities', the endpoint '/api/activities', and indicates optional filtering by project. This distinguishes it from sibling tools like kimai_get_activity (single activity) and kimai_list_timesheets (different entity).

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

Usage Guidelines4/5

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

The description mentions 'This tool is read-only', which is a usage hint. It implies that the tool is for listing activities and can be filtered by project, but it does not explicitly specify when to use this tool versus alternatives like kimai_get_activity. However, the name and context provide sufficient guidance.

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

kimai_list_customersList Kimai CustomersA
Read-onlyIdempotent

List customers visible to the Kimai API token from /api/customers. This tool is read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoKimai API page number for paginated endpoints.
sizeNoKimai API page size. Kimai supports a maximum size of 500.
termNoOptional search term for endpoints that support it.
orderNoOptional sort direction.
visibleNoOptional visibility filter for endpoints that support it.
order_byNoOptional Kimai orderBy field.
response_formatNoOutput format: markdown for human-readable summaries, json for structured output.markdown

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, etc. The description adds the scope 'visible to the Kimai API token', which is useful behavioral context beyond the annotations.

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

Conciseness5/5

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

Two sentences, no fluff, front-loaded with the key purpose. Very concise.

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?

Given 7 parameters and no output schema, the description does not explain return format or pagination behavior. It is adequate but not comprehensive.

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

Parameters3/5

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

Schema coverage is 100%, so the description adds no extra parameter meaning beyond what is already in the schema. Baseline score of 3 applies.

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

Purpose5/5

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

The description clearly states it lists customers visible to the API token, with a specific verb and resource. It distinguishes from sibling tools like kimai_get_customer (single customer) and other list tools.

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?

No explicit guidance on when to use this tool versus alternatives like kimai_get_customer. Usage is implied but not directly stated.

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

kimai_list_expensesList Kimai ExpensesB
Read-onlyIdempotent

List expenses from /api/expenses when the Kimai expenses feature/plugin is available. This tool is read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoKimai API page number for paginated endpoints.
sizeNoKimai API page size. Kimai supports a maximum size of 500.
response_formatNoOutput format: markdown for human-readable summaries, json for structured output.markdown

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior. The description adds the API endpoint and plugin dependency, providing some additional context, but does not disclose pagination behavior or any other traits.

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

Conciseness4/5

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

Two concise sentences with no superfluous content. The first sentence states purpose and condition, the second reinforces safety. Well-structured and front-loaded.

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

Completeness4/5

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

Given schema covers all parameters and annotations cover safety, the description is largely complete. Lacks details on return fields or ordering, but for a list tool with no output schema, it provides sufficient 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 the baseline is 3. The description does not add any meaning beyond what the schema provides for parameters (page, size, response_format).

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 clearly states it lists expenses from a specific API endpoint and notes the plugin requirement. It distinguishes from siblings by mentioning the endpoint and read-only nature, but does not explicitly differentiate from kimai_get_expense.

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 tool versus alternatives like kimai_get_expense or other listing tools. The only usage condition is plugin availability, which is a prerequisite, not a decision criterion.

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

kimai_list_invoicesList Kimai InvoicesB
Read-onlyIdempotent

List Kimai invoices from /api/invoices. This tool is read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoKimai API page number for paginated endpoints.
sizeNoKimai API page size. Kimai supports a maximum size of 500.
termNoOptional search term for endpoints that support it.
orderNoOptional sort direction.
order_byNoOptional Kimai orderBy field.
response_formatNoOutput format: markdown for human-readable summaries, json for structured output.markdown

TDQS

B3.2/5.0
Behavior2/5

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

Annotations already provide readOnlyHint, idempotentHint, openWorldHint, and destructiveHint. The description adds only 'This tool is read-only', which is redundant with readOnlyHint. No additional behavioral context such as authentication needs, rate limits, or response structure is mentioned.

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 two short sentences, directly stating the tool's purpose and read-only nature. It is front-loaded and contains no unnecessary words or filler.

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?

The tool has no output schema, six parameters including pagination (page, size) and formatting (response_format). The description lacks details on return structure, pagination behavior, or how to interpret results, leaving gaps for the agent to infer.

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 all six parameters. The description does not add any extra meaning or usage hints beyond what the schema provides, meeting the baseline expectation.

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

Purpose5/5

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

The description clearly states 'List Kimai invoices from /api/invoices', specifying the resource (invoices) and action (list). It distinguishes from sibling tools by naming the endpoint and declaring read-only behavior, which sets it apart from mutation tools.

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 kimai_get_invoice or kimai_list_expenses. The description only states it is read-only, but does not help the agent choose between listing and other retrieval operations.

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

kimai_list_projectsList Kimai ProjectsA
Read-onlyIdempotent

List projects visible to the Kimai API token from /api/projects, optionally filtered by customer. This tool is read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoKimai API page number for paginated endpoints.
sizeNoKimai API page size. Kimai supports a maximum size of 500.
termNoOptional search term for endpoints that support it.
orderNoOptional sort direction.
visibleNoOptional visibility filter for endpoints that support it.
customerNoOptional customer ID filter.
order_byNoOptional Kimai orderBy field.
response_formatNoOutput format: markdown for human-readable summaries, json for structured output.markdown

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. The description confirms read-only status and adds the endpoint source ('/api/projects') and the visible-to-token context, providing some extra value beyond annotations.

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 extremely concise with only two sentences, no redundant words, and the key information is front-loaded.

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?

While the description covers the basic operation, it lacks details about pagination behavior, default ordering, or what the response contains. For a tool with 8 optional parameters and no output schema, more guidance would help.

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 well-documented in the schema. The description does not add additional parameter meanings 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?

The description clearly states the action ('list') and resource ('projects'), and specifies optional filtering by customer. It distinguishes from sibling tools like 'kimai_get_project' but does not differentiate from other list tools.

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

Usage Guidelines3/5

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

The description gives clear context (read-only, customer filter) but does not explicitly state when to use this tool versus alternatives like 'kimai_get_project' or 'kimai_list_customers'.

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

kimai_list_recent_timesheetsList Recent Kimai TimesheetsB
Read-onlyIdempotent

List recent Kimai timesheet entries from /api/timesheets/recent. This tool is read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoKimai API page number for paginated endpoints.
sizeNoKimai API page size. Kimai supports a maximum size of 500.
response_formatNoOutput format: markdown for human-readable summaries, json for structured output.markdown

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint and other safety hints. Description adds the API endpoint path and confirms read-only nature, which is consistent. No new behavioral details beyond annotations.

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 succinct sentences, front-loaded with the action and resource. No extraneous information, highly efficient.

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?

Missing context about what 'recent' means (time period, ordering). No description of return format or pagination behavior. With no output schema, more explanation is needed for a list tool.

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?

All parameters are fully documented in the schema (100% coverage). Description does not add any parameter-level meaning beyond what schema provides, so baseline of 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?

Clear verb 'List' and resource 'recent timesheet entries', with specific API endpoint path. No explicit differentiation from sibling list tools, but purpose is well-defined.

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 tool versus other timesheet listing tools like kimai_list_timesheets or kimai_list_active_timesheets. Context of 'recent' is not clarified.

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

kimai_list_tagsList Kimai TagsB
Read-onlyIdempotent

List Kimai tags from /api/tags/find. This tool is read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoOptional tag name search.
pageNoKimai API page number for paginated endpoints.
sizeNoKimai API page size. Kimai supports a maximum size of 500.
response_formatNoOutput format: markdown for human-readable summaries, json for structured output.markdown

TDQS

B3.3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, providing a clear safety profile. The description adds the API endpoint but repeats the read-only nature, adding minimal behavioral value beyond the annotations.

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

Conciseness5/5

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

The description is exceptionally concise: two sentences with zero wasted words. The first sentence immediately states the action and endpoint, making it front-loaded and efficient.

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?

Given the rich annotations and full schema coverage, the description is adequate for a simple listing tool. However, it lacks information about return values (no output schema) and does not explain when to use this tool over other list tools, which limits completeness.

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 input schema already documents all 4 parameters (name, page, size, response_format) with meaningful descriptions. The tool description does not add any extra meaning beyond the schema, resulting in a baseline score.

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

Purpose5/5

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

The description clearly states the tool's action ('List Kimai tags') and the specific API endpoint ('from /api/tags/find'). This is a specific verb+resource combination that effectively distinguishes it from sibling tools like 'kimai_list_users' or 'kimai_list_customers'.

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 provides no guidance on when to use this tool versus alternatives. It only notes that the tool is read-only, which is a general trait shared by most list siblings. No explicit when or when-not conditions, prerequisites, or alternative tool names are mentioned.

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

kimai_list_tasksList Kimai TasksB
Read-onlyIdempotent

List tasks from /api/tasks when the Kimai tasks feature/plugin is available. This tool is read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoKimai API page number for paginated endpoints.
sizeNoKimai API page size. Kimai supports a maximum size of 500.
response_formatNoOutput format: markdown for human-readable summaries, json for structured output.markdown

TDQS

B3.4/5.0
Behavior3/5

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

The description explicitly states read-only, which aligns with annotations. It adds the plugin dependency context, but annotations already cover the safety profile (readOnlyHint, destructiveHint). No behavioral contradictions.

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 sentences, front-loaded with key information. Every sentence is necessary and concise.

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?

The description covers the essential purpose and condition (plugin availability). Annotations and schema handle pagination and safety. Lacks description of output fields, but acceptable for a list tool.

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

Parameters3/5

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

Schema coverage is 100%, so baseline 3 is appropriate. The description does not add any parameter details beyond what the schema provides.

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 it lists tasks from /api/tasks and is read-only. It clearly identifies the resource and action, but does not differentiate from sibling tools like kimai_list_projects or kimai_list_activities.

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 mentions availability when the tasks plugin is active, but provides no guidance on when to use this tool versus alternatives or when not to use it.

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

kimai_list_teamsList Kimai TeamsA
Read-onlyIdempotent

List Kimai teams from /api/teams. This tool is read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoKimai API page number for paginated endpoints.
sizeNoKimai API page size. Kimai supports a maximum size of 500.
response_formatNoOutput format: markdown for human-readable summaries, json for structured output.markdown

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds 'This tool is read-only,' which reinforces the annotations but does not provide additional behavioral context such as pagination limits or response characteristics.

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 extremely concise, consisting of two short sentences that convey the purpose and read-only nature without any fluff.

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?

While the annotations and schema cover safety and parameters, the description lacks context about the response format or content. For a list tool, it could mention that it returns a list of teams or what fields are included.

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 each parameter (page, size, response_format) is already documented in the schema. The description adds no further meaning or usage hints for the parameters.

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

Purpose5/5

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

The description clearly states it lists Kimai teams from the /api/teams endpoint, specifying the verb 'list' and resource 'teams'. It distinguishes from sibling tools like kimai_list_users by explicitly naming the resource.

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 or when not to use it. The description simply states the action without context or exclusions.

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

kimai_list_timesheetsList Kimai TimesheetsA
Read-onlyIdempotent

List Kimai timesheet entries from /api/timesheets with optional user, customer, project, activity, date, tag, exported, and active filters. This tool is read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoOptional end date/time filter.
pageNoKimai API page number for paginated endpoints.
sizeNoKimai API page size. Kimai supports a maximum size of 500.
tagsNoOptional tag filters.
userNoOptional user ID filter.
beginNoOptional begin date/time filter.
activeNoOptional active/running filter.
projectNoOptional project ID filter.
activityNoOptional activity ID filter.
customerNoOptional customer ID filter.
exportedNoOptional exported-state filter.
response_formatNoOutput format: markdown for human-readable summaries, json for structured output.markdown

TDQS

A3.6/5.0
Behavior2/5

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

Annotations already provide readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true. The description merely repeats the read-only nature without adding new behavioral context such as pagination handling, response structure, or authentication requirements.

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?

The description is very concise at two sentences, front-loading the key action and filters. Minor improvements could include noting pagination or rephrasing to reduce repetition with annotations.

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?

Given the 12 parameters and no output schema, the description is minimal. It does not explain the return format beyond the response_format parameter, nor does it mention pagination behavior or typical use cases relative to the sibling tools.

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

Parameters3/5

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

Schema description coverage is 100% for the 12 parameters. The tool description does not add any parameter-specific meaning beyond what the schema already provides, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states that the tool lists timesheet entries from a specific API endpoint with numerous optional filters, and identifies itself as read-only. This distinguishes it from mutating tools like kimai_create_timesheet and from single-entry retrieval like kimai_get_timesheet.

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

Usage Guidelines4/5

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

The description lists the available filters, giving a clear idea of when to use this tool for listing with specifics. However, it does not explicitly contrast with sibling list tools like kimai_list_active_timesheets or kimai_list_recent_timesheets, which would improve guidance.

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

kimai_list_usersList Kimai UsersB
Read-onlyIdempotent

List Kimai users visible to the API token from /api/users. This tool is read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoKimai API page number for paginated endpoints.
sizeNoKimai API page size. Kimai supports a maximum size of 500.
response_formatNoOutput format: markdown for human-readable summaries, json for structured output.markdown

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, so the description's mention of 'read-only' adds no new information. With annotations present, the description meets the minimum bar but does not provide additional context like response content or auth requirements.

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 extremely concise with only two sentences, front-loading the purpose and key trait (read-only). Every word is necessary and no filler exists.

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?

Given the tool's simplicity, the description provides minimal context. It lacks details about return values, pagination behavior beyond schema defaults, and how results are ordered. With no output schema, more context would improve completeness.

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?

All three parameters have descriptions in the input schema (100% coverage), so the description does not need to add parameter details. The description adds no extra meaning beyond what the schema provides, resulting in a baseline score 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?

The description clearly states the tool lists Kimai users visible to the API token, using the specific verb 'List' and resource 'users'. It is distinct from sibling tools like kimai_get_user (single user) but does not explicitly differentiate from other list tools.

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 provides no guidance on when to use this tool versus alternatives like kimai_get_user or other list tools. It only mentions it's read-only, which is already covered by annotations.

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

kimai_restart_timesheetRestart Kimai TimesheetA

Restart a stopped Kimai timesheet. Sensitive edit: call only after explicit human authorization. The existing record is saved to a temp backup file before restarting.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesKimai entity ID.
beginNoOptional restart begin timestamp in Kimai HTML5 datetime-local format.
response_formatNoOutput format: markdown for human-readable summaries, json for structured output.markdown
authorization_noteYesShort note capturing the user's explicit authorization and reason for the edit.
authorization_confirmedYesMust be true only after the human user explicitly authorizes this sensitive Kimai edit.

TDQS

A4.4/5.0
Behavior5/5

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

Beyond annotations (readOnlyHint=false, destructiveHint=false, idempotentHint=false), the description reveals that the tool saves a backup before restarting and requires explicit human authorization. This adds significant behavioral context.

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

Conciseness5/5

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

Two concise sentences, front-loaded with purpose and key behavioral warnings. No unnecessary words; every sentence adds value.

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?

The description covers sensitivity and backup behavior, but does not specify default behavior for optional parameters (e.g., begin timestamp) or error conditions. Missing output schema is not an issue as description need not explain 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 coverage is 100%, so the schema already describes all parameters. The description reinforces the purpose of authorization parameters but does not add new meaning beyond what the schema provides.

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

Purpose5/5

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

The description clearly states the action 'Restart a stopped Kimai timesheet', using specific verb and resource. It distinguishes from sibling tools like 'kimai_create_timesheet', 'kimai_stop_timesheet', and 'kimai_duplicate_timesheet'.

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

Usage Guidelines4/5

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

The description explicitly warns that this is a sensitive edit requiring human authorization, providing clear context for when not to use it. However, it does not explicitly mention alternative tools for other scenarios.

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

kimai_stop_timesheetStop Kimai TimesheetA

Stop an active Kimai timesheet. Sensitive edit: call only after explicit human authorization. The existing record is saved to a temp backup file before stopping.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesKimai entity ID.
beginNoOptional restart begin timestamp in Kimai HTML5 datetime-local format.
response_formatNoOutput format: markdown for human-readable summaries, json for structured output.markdown
authorization_noteYesShort note capturing the user's explicit authorization and reason for the edit.
authorization_confirmedYesMust be true only after the human user explicitly authorizes this sensitive Kimai edit.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations indicate write operation (readOnlyHint=false) and non-destructive (destructiveHint=false). The description adds that it is a 'sensitive edit' requiring authorization and that 'the existing record is saved to a temp backup file before stopping,' which provides useful behavioral context beyond annotations.

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

Conciseness4/5

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

Two sentences: first states purpose, second adds sensitivity and backup. It is concise and front-loaded, with no extra words. Could be slightly more structured, but effective.

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?

As a mutation tool without output schema, the description covers the action, authorization requirement, and backup behavior. It does not mention what happens if the timesheet is already stopped, but that is a minor gap. Overall adequate for the tool's complexity.

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

Parameters3/5

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

Schema coverage is 100%, so the description need not explain each parameter. However, it does not add parameter-specific meaning beyond the schema; e.g., the backup behavior is not tied to any parameter. Baseline 3 is appropriate.

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

Purpose5/5

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

The description starts with 'Stop an active Kimai timesheet,' clearly stating the verb ('Stop') and the resource ('active Kimai timesheet'). This distinguishes it from sibling tools like create, restart, or duplicate.

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

Usage Guidelines4/5

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

The description explicitly states 'Sensitive edit: call only after explicit human authorization,' providing clear when-to-use guidance. It also mentions backup behavior, but does not explicitly contrast with alternative actions (e.g., pause vs. stop), though the sibling list implies distinct purposes.

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

kimai_update_timesheetUpdate Kimai TimesheetA

Update a Kimai timesheet record. Sensitive edit: call only after explicit human authorization. The existing record is saved to a temp backup file before the edit.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesKimai entity ID.
endNoOptional timesheet end timestamp in Kimai HTML5 datetime-local format, e.g. 2026-06-01T10:30:00.
tagsNoOptional tags; sent to Kimai as a comma-separated list.
userNoOptional user ID; requires permission to edit other users' time.
beginNoTimesheet begin timestamp in Kimai HTML5 datetime-local format, e.g. 2026-06-01T09:00:00.
projectNoKimai project ID.
activityNoKimai activity ID.
billableNoOptional billable flag.
exportedNoOptional exported flag. This can lock/unlock timesheet records.
fixed_rateNoOptional fixed rate override.
descriptionNoOptional timesheet description.
hourly_rateNoOptional hourly rate override.
response_formatNoOutput format: markdown for human-readable summaries, json for structured output.markdown
authorization_noteYesShort note capturing the user's explicit authorization and reason for the edit.
authorization_confirmedYesMust be true only after the human user explicitly authorizes this sensitive Kimai edit.

TDQS

A4.4/5.0
Behavior5/5

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

Discloses beyond annotations: the need for explicit authorization and the backup creation ('The existing record is saved to a temp backup file before the edit'). Annotations indicate non-read-only but the description adds critical safety context.

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

Conciseness5/5

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

Two sentences with no wasted words. First sentence states purpose; second adds critical behavioral info. Efficient and front-loaded.

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

Completeness4/5

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

With 15 parameters and no output schema, the description covers the key safety and authorization aspects. It could mention return value or error handling but the detailed schema compensates.

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 has 100% coverage with individual parameter descriptions. The description adds no extra parameter detail beyond stating sensitivity, which aligns with authorization parameters. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states 'Update a Kimai timesheet record,' which is specific and identifies the resource. It also distinguishes the tool from siblings like create, stop, and restart by highlighting sensitivity.

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

Usage Guidelines4/5

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

Explicitly states 'Sensitive edit: call only after explicit human authorization,' providing a clear when-not condition. While it doesn't name alternatives, the sensitivity context sufficiently guides usage.

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. Dates show when Glama detected each change.

  1. 28 tool updatesv0.1.0
    • First observedkimai_create_timesheet
    • First observedkimai_duplicate_timesheet
    • First observedkimai_get_activity
    • First observedkimai_get_current_user
    • First observedkimai_get_customer
    • First observedkimai_get_expense
    • First observedkimai_get_invoice
    • First observedkimai_get_project
    • First observedkimai_get_server_info
    • First observedkimai_get_task
    • First observedkimai_get_team
    • First observedkimai_get_timesheet
    • First observedkimai_get_user
    • First observedkimai_list_active_timesheets
    • First observedkimai_list_activities
    • First observedkimai_list_customers
    • First observedkimai_list_expenses
    • First observedkimai_list_invoices
    • First observedkimai_list_projects
    • First observedkimai_list_recent_timesheets
    • First observedkimai_list_tags
    • First observedkimai_list_tasks
    • First observedkimai_list_teams
    • First observedkimai_list_timesheets
    • First observedkimai_list_users
    • First observedkimai_restart_timesheet
    • First observedkimai_stop_timesheet
    • First observedkimai_update_timesheet

TDQS

A3.8/5.0
Disambiguation5/5

Every tool targets a distinct resource and operation, with clear naming like kimai_list_users vs kimai_get_user. No two tools overlap in purpose, ensuring agents can easily select the correct tool.

Naming Consistency5/5

All tools follow a consistent kimai_{verb}_{noun} pattern in snake_case, such as kimai_list_projects, kimai_get_project, kimai_create_timesheet. This uniformity makes the tool surface predictable.

Tool Count4/5

With 28 tools covering multiple resource types (users, customers, projects, activities, timesheets, invoices, teams, tasks, expenses), the count is slightly high but still well-scoped for a comprehensive Kimai API wrapper. It avoids excessive granularity.

Completeness3/5

The tool set provides robust read-only access and full lifecycle operations for timesheets, but lacks create/update/delete for other entities like customers, projects, and activities. This leaves notable gaps for full CRUD management.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/NightSquawk/kimai-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server