Timesheet MCP Server
OfficialThis server provides comprehensive timesheet and project management capabilities through standardized MCP tools:
Timer Management
Start, stop, pause, and resume timers (with optional custom timestamps)
Check timer status and update running timer details (description, location, billability, mood rating)
Task Management
Create, list, get, update, and delete time entries
Add notes, expenses, and manual pauses to tasks
Project Management
Create, list, get, update (rename, archive), and delete projects
Team Management
List and search teams (for filtering projects and tasks)
Statistics & Reporting
Retrieve aggregated stats for date ranges (total, billable, and non-billable hours)
Generate reports (documents, tasks, expenses, notes) in PDF or XML (e-invoicing formats like ZUGFeRD, XRechnung)
Export
Generate exports in Excel, CSV, or PDF with flexible filters
Send exports via email
Manage and use saved export templates
Absence Management
List, create, get, update, and delete absences (vacation, sick leave, etc.)
Approve, reject, or cancel pending absences
List available absence types
Authentication
Configure API key authentication (and optional custom base URL)
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Timesheet MCP ServerStart timer for Project website redesign"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Timesheet MCP Server
A Model Context Protocol (MCP) server that provides natural language access to the Timesheet API through standardized tools.
Features
Timer Management: Start, stop, pause, and resume timers with natural language
Task Enhancement: Add notes, expenses, and pauses to running tasks
Project Management: Create, update, list, and delete projects
Task Management: Full CRUD operations for tasks
Natural Language Support: Use simple phrases to control your timer
Related MCP server: WorkTracker MCP Server
Installation
Quick Start with npx
The easiest way to use the Timesheet MCP server is with npx (no installation required):
npx @timesheet/mcpGlobal Installation
For frequent use, you can install globally:
npm install -g @timesheet/mcp
timesheet-mcpLocal Installation
For project-specific installation:
npm install @timesheet/mcpConfiguration
Using Environment Variables
Create a .env file with your API token:
TIMESHEET_API_TOKEN=your-api-token-hereUsing Claude Desktop
Add to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"timesheet": {
"command": "npx",
"args": ["@timesheet/mcp"],
"env": {
"TIMESHEET_API_TOKEN": "your-api-token"
}
}
}
}For a globally installed version:
{
"mcpServers": {
"timesheet": {
"command": "timesheet-mcp",
"env": {
"TIMESHEET_API_TOKEN": "your-api-token"
}
}
}
}Sample Prompts
Timer Control
Start timer:
"Start the timer for ProjectX"
"Start timer for ProjectX 10 minutes ago"
"Begin tracking time on the mobile app project"
Stop timer:
"Stop the timer"
"Stop working"
"I'm done for the day"
Pause timer:
"I have a break"
"Pause the timer"
"Taking lunch"
Resume timer:
"Resume work"
"Back from break"
"Continue timer"
Check status:
"What's my timer status?"
"Am I tracking time?"
"Show current timer"
Task Enhancements
Add notes:
"Add a note: Fixed the login bug"
"Note that I spoke with the client about requirements"
Add expenses:
"Add expense: $45 for lunch with client"
"Record taxi expense of $25"
Update task:
"Update the description to 'Working on API integration'"
"Mark current task as billable"
"Add feeling rating of 4"
Project Management
List projects:
"Show me all my projects"
"List active projects"
"What projects do I have?"
Create project:
"Create a new project called 'Website Redesign'"
"Add project 'Mobile App v2' with default billable tasks"
Update project:
"Archive the old website project"
"Rename project X to 'Client Portal'"
Task Management
List tasks:
"Show today's tasks"
"List all running tasks"
"What did I work on yesterday?"
Create task:
"Create a 2-hour task for ProjectX from 9am to 11am"
"Log 4 hours on the API project for yesterday"
Update task:
"Mark task X as paid"
"Update task description"
"Change task to non-billable"
Available Tools
Timer Operations
timer_start- Start timer for a projecttimer_stop- Stop the running timertimer_pause- Pause the timer (start break)timer_resume- Resume timer after breaktimer_status- Check current timer statustimer_update- Update running timer details
Task Enhancements
task_add_note- Add note to current tasktask_add_expense- Add expense to current tasktask_add_pause- Add manual pause to current task
Project Management
project_list- List all projectsproject_create- Create new projectproject_update- Update existing projectproject_delete- Delete project
Task Management
task_list- List tasks with filterstask_create- Create new tasktask_update- Update existing tasktask_delete- Delete task
Authentication
auth_configure- Set API authentication
Getting Your API Token
Log in to your Timesheet account
Go to Settings → API Access
Generate a new API token
Copy the token and add it to your configuration
Development
# Clone the repository
git clone https://github.com/timesheet/timesheet-mcp.git
cd timesheet-mcp
# Install dependencies
npm install
# Run in development mode
npm run dev
# Build for production
npm run build
# Run tests
npm testTroubleshooting
Timer not starting?
Ensure you have a valid API token configured
Check that the project ID exists in your account
Verify you have permission to create tasks for the project
Authentication errors?
Double-check your API token is correct
Ensure the token hasn't expired
Try generating a new token from your Timesheet settings
License
MIT
Support
For issues and feature requests, visit: https://github.com/timesheet/timesheet-mcp/issues
Available Tools
50 toolsabsence_approveApprove AbsenceBIdempotent
Approve a pending absence.
| Name | Required | Description | Default |
|---|---|---|---|
| organizationId | Yes | ||
| id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Resource ID |
| success | No | |
| deletedId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide idempotentHint=true and non-destructive status. The description adds no additional behavioral context, such as state changes after approval or authorization requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no extraneous text. However, it is too brief given the missing parameter information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description omits critical context: parameter details, usage boundaries, and behavioral insights. For a two-parameter tool, it feels incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage and two required parameters (organizationId, id), the description provides no explanation of their meaning or format, leaving the agent without guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Approve a pending absence' clearly specifies the action (approve), resource (absence), and scope (pending). It effectively distinguishes from sibling tools like absence_reject and absence_cancel.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for approving pending absences but provides no explicit guidance on when to use versus alternatives like absence_reject. No when-not-to-use or prerequisite information is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
absence_cancelCancel AbsenceCIdempotent
Cancel an absence with a reason.
| Name | Required | Description | Default |
|---|---|---|---|
| organizationId | Yes | ||
| id | Yes | ||
| reason | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Resource ID |
| success | No | |
| deletedId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotent and non-destructive mutation. Description adds minimal behavioral insight beyond stating the action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise at 5 words, but too terse for a 3-parameter tool. Lacks parameter context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description omits necessary context for a cancellation action, such as the difference from deletion and the role of 'reason'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, description only mentions 'reason' and fails to explain organizationId or id, leaving critical parameters undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states verb 'cancel' and resource 'absence', with additional detail 'with a reason'. Distinguishes from siblings like absence_delete and absence_reject.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use cancel versus delete or reject. Missing prerequisites or context for when cancellation is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
absence_createCreate AbsenceB
Create a new absence (vacation, sick leave, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
| organizationId | Yes | ||
| contractId | Yes | ||
| absenceTypeId | Yes | ||
| startDateTime | Yes | Start date/time (ISO 8601) | |
| endDateTime | Yes | End date/time (ISO 8601) | |
| fullDay | No | ||
| reason | No | ||
| documentationUrl | No | ||
| fileName | No | ||
| fileUri | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Resource ID |
| success | No | |
| deletedId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and destructiveHint=false, consistent with creation. The description adds no further behavioral context, such as permissions, side effects, or output behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that is front-loaded and contains no fluff. However, it is slightly too brief for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 10 parameters and low schema coverage, the description is insufficient. It does not mention required fields, output, or usage context, leaving the agent under-informed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 20% (only startDateTime and endDateTime have descriptions). The tool description does not explain parameters like organizationId, contractId, absenceTypeId, etc., nor does it provide format or value guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Create' and resource 'absence' with examples like vacation and sick leave, distinguishing it from sibling tools that approve, cancel, delete, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, no prerequisites or when-not-to-use information. The description is purely declarative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
absence_deleteDelete AbsenceCDestructiveIdempotent
Delete an absence.
| Name | Required | Description | Default |
|---|---|---|---|
| organizationId | Yes | ||
| id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Resource ID |
| success | No | |
| deletedId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds no behavioral context beyond the annotations (destructiveHint, idempotentHint). It does not mention permanence, cascading effects, or authorization requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence, but it omits useful context that could be provided without significant bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of multiple sibling tools (e.g., absence_cancel) and an output schema, the description fails to clarify the specific effect of deletion versus cancellation or other operations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description offers no explanation of the two required parameters (organizationId, id), forcing the agent to infer their meanings from names alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Delete an absence.' clearly specifies a verb (delete) and resource (absence), distinguishing it from sibling tools like absence_create or absence_get.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as absence_cancel or absence_update, leaving the agent without context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
absence_getGet AbsenceBRead-only
Get a single absence by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| organizationId | Yes | ||
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description doesn't need to restate safety. It adds 'by ID' but doesn't elaborate on behaviors like error handling or access requirements. With annotations, this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 6 words, front-loaded with the key action and resource. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval tool with two required parameters and no output schema, the description is minimally adequate. However, it lacks any explanation of return values or error scenarios, which would be helpful given the absence of parameter descriptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, meaning no parameter descriptions exist. The description only says 'by ID' without specifying which parameter is the ID or explaining organizationId. It fails to compensate for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get a single absence by ID', using a specific verb and resource, and distinguishes itself from sibling tools like absence_list which retrieves multiple absences.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool vs alternatives. There is no mention of context, prerequisites, 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.
absence_listList AbsencesARead-only
List absences in an organization. Filter by contract, user, type, status, date range.
| Name | Required | Description | Default |
|---|---|---|---|
| organizationId | Yes | Organization ID | |
| contractId | No | ||
| userId | No | ||
| absenceTypeId | No | ||
| status | No | ||
| startDate | No | Start date (YYYY-MM-DD) | |
| endDate | No | End date (YYYY-MM-DD) | |
| year | No | ||
| excludeRejectedCancelled | No | ||
| teamId | No | ||
| search | No | ||
| limit | No | ||
| page | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | No | |
| totalCount | No | Total items across all pages |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. Description adds no further behavioral details (e.g., pagination, sorting), but is consistent with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with purpose, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, so return values are documented. Description covers key filtering dimensions but omits many parameters; given tool complexity and annotations, it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 23% (only 3 of 13 params have descriptions). Description adds meaning by listing filterable fields (contract, user, type, status, date range), partially compensating for low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List absences' (verb+resource) and mentions filtering options, distinguishing it from sibling tools like absence_create or absence_delete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for listing absences with filters, but does not explicitly state when not to use or provide alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
absence_rejectReject AbsenceBIdempotent
Reject a pending absence with a reason.
| Name | Required | Description | Default |
|---|---|---|---|
| organizationId | Yes | ||
| id | Yes | ||
| reason | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Resource ID |
| success | No | |
| deletedId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide idempotentHint=true and destructiveHint=false. The description adds only 'with a reason' (already in schema), but does not explain side effects, such as whether notifications are sent or if the absence status changes to rejected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no filler. Efficient and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple rejection action, the description is adequate but lacks details on post-rejection behavior, prerequisites (e.g., absence must be pending), and potential errors. Output schema helps but does not excuse missing behavioral context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description should clarify parameters. Only 'reason' is implied ('with a reason'), but 'organizationId' and 'id' are not explained. The description adds minimal meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Reject') and resource ('a pending absence'), and the 'reason' parameter is mentioned. This distinguishes it from sibling tools like 'absence_approve' and 'absence_cancel'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like approve or cancel. No explicit when-not-to or contextual prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
absence_type_listList Absence TypesBRead-only
List absence types for an organization (vacation, sick, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
| organizationId | Yes | ||
| limit | No | ||
| page | No | ||
| search | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | No | |
| totalCount | No | Total items across all pages |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds minimal behavioral context beyond stating it lists types for an organization.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence. It is efficient but could include parameter hints without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists to cover return values. However, with 4 parameters undocmented and no pagination or search behavior mentioned, completeness is moderate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not explain any parameters beyond 'organization'. Parameters like limit, page, search are left undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists absence types for an organization, with examples. It distinguishes from siblings like absence_list which lists absence entries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like absence_list or absence_create. The description only states what it does without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
absence_updateUpdate AbsenceCIdempotent
Update an absence.
| Name | Required | Description | Default |
|---|---|---|---|
| organizationId | Yes | ||
| id | Yes | ||
| startDateTime | No | ||
| endDateTime | No | ||
| fullDay | No | ||
| reason | No | ||
| documentationUrl | No | ||
| fileName | No | ||
| fileUri | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Resource ID |
| success | No | |
| deletedId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate idempotentHint=true, openWorldHint=true, and not read-only or destructive, but the description adds no behavioral context. It does not explain side effects, authorization requirements, or what happens during an update. The description is a tautology of the title.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short (2 words), which is concise but severely under-specifies the tool. It does not earn its place as it fails to convey necessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description does not explain the update behavior, return values, error conditions, or required fields beyond the required list. The tool is simple but the description is insufficient for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 9 parameters with 0% description coverage, meaning no parameter descriptions exist in the schema. The description 'Update an absence.' provides no meaning for any parameter. The description fails to compensate for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Update an absence.' clearly states the action (update) and resource (absence), but fails to differentiate from sibling tools like absence_cancel, absence_approve, or absence_reject. A more specific description would help distinguish scenarios.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., absence_approve, absence_cancel). The description does not mention prerequisites, allowed fields, or intended use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
auth_configureConfigure API AuthenticationA
Use this when the user needs to configure API key authentication for the Timesheet MCP server. NOTE: This will be deprecated once OAuth 2.1 is implemented.
| Name | Required | Description | Default |
|---|---|---|---|
| apiKey | Yes | The API key for authenticating with the Timesheet API | |
| baseUrl | No | Optional custom API base URL (e.g., "https://api-test.timesheet.io" for testing) |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | Yes | Whether authentication was configured successfully |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a write operation (readOnlyHint=false) and not destructive (destructiveHint=false). The description confirms by stating 'configure API key authentication', implying mutation, and adds transparency about deprecation. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words. The first sentence immediately states the purpose, and the second adds a forward-looking deprecation note. Perfectly front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with 2 parameters (1 required), full schema descriptions, and an output schema, the description adequately covers usage and deprecation context. It does not detail side effects or success/failure behavior, but annotations and output schema mitigate this.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description does not add any additional meaning beyond what the input schema already provides for the two parameters (apiKey and baseUrl).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'configure' and resource 'API key authentication' for the Timesheet MCP server. It is distinct from all sibling tools, none of which involve authentication configuration.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when to use this tool ('when the user needs to configure API key authentication') and provides a deprecation note indicating future replacement with OAuth 2.1. It does not explicitly list when not to use it, but the context is clear as there are no sibling tools for authentication.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_fieldsGet Export FieldsARead-only
Use this when the user wants to see what fields/columns are available for customizing exports.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | Scope filter for fields. Defaults to "task" on the server. |
Output Schema
| Name | Required | Description |
|---|---|---|
| fields | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnlyHint, destructiveHint). The description confirms read-only intent but adds no extra behavioral details beyond the core purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that immediately states the core purpose. No wasted words; every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a complete schema, output schema present, and clear annotations, the description adequately covers the tool's purpose. Slight gap: no explicit differentiation from similar field-related tools, but sufficient given the explicit scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and fully describes the single parameter. The description adds no additional meaning or guidance beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('see') and resource ('fields/columns available for customizing exports'), clearly distinguishing this read-only lookup from other export and mutation tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use ('when the user wants to see available fields'), but does not mention when not to use or suggest alternative tools for related tasks like generating exports.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_from_templateExport from TemplateARead-only
Use this when the user wants to generate an export using a previously saved template with specific date range.
| Name | Required | Description | Default |
|---|---|---|---|
| templateId | Yes | The template ID to use. Use export_template_list to find available templates. | |
| startDate | Yes | Start date for the export period (YYYY-MM-DD) | |
| endDate | Yes | End date for the export period (YYYY-MM-DD) |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | No | Whether export was generated successfully |
| size | No | File size in bytes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is well-covered. The description adds no additional behavioral context beyond stating it generates an export, which is consistent with the annotations. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the usage context ('Use this when') and conveys the core function with no wasted words. It is appropriately short and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that annotations provide safety information, the input schema fully documents parameters, and an output schema exists (implied by context signals), the description is complete enough. It tells the agent when and how to use the tool, and the remaining details are covered by structured fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, meaning the input schema already describes all three parameters fully. The tool description adds no extra parameter information beyond what is in the schema. Based on the rubric, a baseline score of 3 applies when schema coverage is high and description does not enhance understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'generate' and the resource 'previously saved template' with a specific date range. This naturally distinguishes it from sibling tools like 'export_generate' (which likely exports without a template) and 'export_template_list' (which lists templates). The purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use this when the user wants to generate an export using a previously saved template', providing a clear when-to-use. However, it does not explicitly mention when not to use or name alternatives, though the context of sibling tools makes the distinction clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_generateGenerate Timesheet ExportARead-only
Use this when the user wants to export their timesheet data in Excel (xlsx), CSV, or PDF format. Returns a download URL for the export file.
| Name | Required | Description | Default |
|---|---|---|---|
| report | Yes | Report type identifier. Use export_report_types to get available types. | |
| startDate | Yes | Start date for the export period (YYYY-MM-DD format) | |
| endDate | Yes | End date for the export period (YYYY-MM-DD format) | |
| format | No | Export file format. xlsx=Excel, xlsx1904=Excel 1904 date system, csv=comma-separated, pdf=PDF document | |
| teamIds | No | Filter by team IDs | |
| projectIds | No | Filter by project IDs | |
| userIds | No | Filter by user IDs | |
| tagIds | No | Filter by tag IDs | |
| type | No | Task type filter | |
| filter | No | Status filter for billing/payment | |
| splitTask | No | Whether to split multi-day tasks into separate rows | |
| summarize | No | Whether to summarize data instead of showing individual entries | |
| filename | No | Custom filename for the export |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | Signed download URL for the export file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering safety. The description adds that it returns a download URL, which is useful behavioral information and consistent with annotations. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences front-load the use case and output. No extraneous information; every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (13 parameters, output schema exists), the description is sufficiently complete. It covers purpose and return type. The report parameter requires using export_report_types, but that is noted in the parameter description, not the tool description. Overall adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all parameters with descriptions. The tool description does not add additional meaning beyond what the schema provides, meeting the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (export/generate), resource (timesheet data), and output (download URL). It differentiates from sibling tools like export_report_types and export_send by focusing on the generation action, but does not explicitly exclude alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when to use the tool ('when the user wants to export their timesheet data'). It provides context but does not mention when not to use it or list alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_report_typesGet Export Report TypesARead-only
Use this when the user wants to see what report types are available for export (e.g., detailed, summary, by project).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| reports | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false; description adds context with examples of report types (detailed, summary, by project), enhancing transparency 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with usage guidance, zero waste words – perfectly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no parameters and an output schema (assumed), the description fully covers what the tool does and what it returns, leaving no gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters defined, so schema coverage is 100%; description adds significant meaning by specifying the purpose and providing examples of report types, exceeding the baseline of 4 for 0-param tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly specifies the verb ('see what report types are available') and resource ('report types for export'), distinguishing it from sibling tools like export_generate and export_fields.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use this tool ('when the user wants to see what report types are available'), providing clear context without needing exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_sendSend Export via EmailB
Use this when the user wants to generate and send a timesheet export directly to an email address.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | Email address to send the export to | ||
| report | Yes | Report type identifier | |
| startDate | Yes | Start date for the export period (YYYY-MM-DD) | |
| endDate | Yes | End date for the export period (YYYY-MM-DD) | |
| format | No | Export file format | |
| teamIds | No | Filter by team IDs | |
| projectIds | No | Filter by project IDs | |
| filename | No | Custom filename for the export |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | No | Whether email was sent successfully |
| No | Email address the export was sent to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and destructiveHint=false. The description adds only 'generate and send' which is consistent but provides no further behavioral context (e.g., immediate send, authentication, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with clear front-loading of purpose. No filler, but could be slightly more structured to highlight key points like optional filters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 8 parameters (4 required), output schema exists, and no annotations for side effects, the description is too sparse. It omits context about optional filters (teamIds, projectIds) and format choices, leaving the agent to rely solely on schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description does not add parameter-specific insights beyond what the schema already provides, so it meets but does not exceed expectations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates and sends a timesheet export to an email, with a specific verb-resource pair. It distinguishes from siblings like export_generate (which only generates) and export_fields (which lists fields).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when sending is needed but does not explicitly state when not to use or mention alternatives like export_generate for generation-only. Guidance is implied, not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_template_createCreate Export TemplateA
Use this when the user wants to save their export configuration as a reusable template.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Template name | |
| report | No | Report type identifier | |
| format | No | Export format | |
| teamIds | No | Team IDs filter | |
| projectIds | No | Project IDs filter | |
| userIds | No | User IDs filter | |
| type | No | Task type filter | |
| filter | No | Status filter | |
| splitTask | No | Split multi-day tasks | |
| summarize | No | Summarize data | |
| No | Default email for sending exports | ||
| filename | No | Default filename |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Created template ID |
| name | No | Template name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=false and destructiveHint=false, indicating a non-destructive write operation. The description adds no further behavioral context, such as side effects or auth requirements, but the basic action is obvious.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that conveys the essential purpose without unnecessary words. It is well-structured and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is brief but covers the core use case. With an output schema present, return values are documented. However, for a tool with many optional parameters, additional guidance on usage context would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with all 12 parameters having descriptions. The description does not add extra parameter-level information beyond what the schema provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('save') and the resource ('export configuration as a reusable template'). It distinguishes this tool from siblings like export_template_update and export_from_template by focusing on saving a new template.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly indicates when to use the tool ('when the user wants to save their export configuration as a reusable template'). It implies that for other actions (updating, deleting, using templates) alternative sibling tools should be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_template_deleteDelete Export TemplateADestructiveIdempotent
Use this when the user wants to delete an export template. This cannot be undone.
| Name | Required | Description | Default |
|---|---|---|---|
| templateId | Yes | Template ID to delete |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | No | Whether deletion was successful |
| deletedId | No | Deleted template ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide destructiveHint=true and idempotentHint=true. Description adds 'This cannot be undone', reinforcing irreversibility beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words. Information is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Simple tool with one parameter and output schema. Description covers purpose and consequence. Annotations fill the rest. Adequate for the complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with description for templateId. Description does not add extra meaning beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action (delete) and the resource (export template). It distinguishes from siblings like create, update, get, and list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use ('when the user wants to delete an export template'). The warning 'This cannot be undone' provides context, but no explicit alternatives or when-not-to-use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_template_getGet Export TemplateARead-only
Use this when the user wants to view details of a specific export template.
| Name | Required | Description | Default |
|---|---|---|---|
| templateId | Yes | The template ID to retrieve |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| name | No | |
| report | No | |
| format | No | |
| teamIds | No | |
| projectIds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description is consistent with annotations (readOnlyHint=true) but adds no additional behavioral context beyond what is already available from the annotations. The annotations already convey the safety profile adequately.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is direct and to the point, with no unnecessary words or information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (one parameter, output schema present), the description is adequate for an agent to understand its purpose. It could be slightly more informative about what 'details' entail, but the output schema likely covers that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% coverage for the single parameter templateId with a description. The tool description does not add any further meaning or context about the parameter, so it meets the baseline without enhancement.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the action ('view details') and the resource ('specific export template'), clearly distinguishing it from siblings like export_template_list or export_template_create.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly indicates when to use the tool ('when the user wants to view details'), providing a direct usage context, though it does not explicitly state when not to use it or mention alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_template_listList Export TemplatesARead-only
Use this when the user wants to see their saved export templates for quick recurring exports.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of templates to return | |
| page | No | Page number for pagination (1-based) | |
| search | No | Search templates by name | |
| sort | No | Sort field | |
| order | No | Sort order |
Output Schema
| Name | Required | Description |
|---|---|---|
| templates | No | |
| totalCount | No | Total number of templates |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, providing safety guarantees. The description adds minor context about 'quick recurring exports' but does not disclose pagination, sorting, or search behaviors. With annotations present, the description is adequate but adds marginal value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the use case. It is concise and contains no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 parameters, 2 enums, and an output schema, the description lacks details on pagination, filtering, and sorting capabilities. However, since an output schema exists, the return structure is documented elsewhere. The description is incomplete regarding how to effectively use the parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all parameters are fully described in the input schema. The tool description does not add any additional meaning beyond what the schema provides, meeting the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to view saved export templates for recurring exports. It uses a specific verb 'see' (list) and resource 'export templates', and distinguishes from siblings like export_template_get (single) and export_template_create.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear when-to-use ('when the user wants to see their saved export templates'), but does not explicitly mention when not to use it or compare with alternatives like export_template_get for single templates. Context is clear but guidance is incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_template_updateUpdate Export TemplateA
Use this when the user wants to modify an existing export template.
| Name | Required | Description | Default |
|---|---|---|---|
| templateId | Yes | Template ID to update | |
| name | No | Updated template name | |
| report | No | Updated report type | |
| format | No | Updated export format | |
| teamIds | No | Updated team IDs filter | |
| projectIds | No | Updated project IDs filter |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and destructiveHint=false. The description confirms it is a modification operation but adds no further behavioral details (e.g., partial update behavior, permissions, side effects). With annotations present, the description provides minimal added value, but it does not contradict them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that clearly states the tool's purpose. It is concise and efficient, though it could benefit from slightly more context without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that output schema exists and input schema is fully described, the description is adequate but minimal. It does not mention that only provided fields are updated (implied by the schema), nor does it address the openWorldHint annotation. For a 6-parameter tool, additional context about partial updates would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage, with each parameter described. The description adds no additional meaning beyond what the schema provides. Baseline 3 is appropriate; the description does not compensate for any schema gaps as there are none.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'modify an existing export template' with a specific verb ('modify') and resource ('export template'). This distinguishes it from sibling tools like export_template_create, export_template_delete, and export_template_get, allowing an agent to correctly select it for update actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies when to use the tool ('when the user wants to modify an existing export template') but provides no guidance on when not to use it or alternatives. Sibling tools for creating, deleting, or listing templates exist but are not mentioned, limiting the agent's ability to differentiate use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_createCreate ProjectA
Use this when the user wants to create a new project to organize their time tracking.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | The project name or title | |
| description | No | Optional description providing more details about the project | |
| color | No | Optional color code for visual identification (typically 0-23) | |
| teamId | No | Optional team ID if this project belongs to a team | |
| taskDefaultBillable | No | Whether tasks in this project should be billable by default |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | The ID of the newly created project |
| title | Yes | The project title |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-readonly and non-destructive. The description adds no behavioral details beyond creation (e.g., no mention of auth, side effects, or output format). With openWorldHint, more context could be beneficial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with purpose, no unnecessary words. Highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (5 params, output schema exists), the description is mostly complete. It could optionally mention that description and color are optional, but not required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all 5 parameters. The description does not add any additional meaning beyond the schema, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'create' and resource 'project' with context 'to organize their time tracking'. It distinguishes from sibling tools like project_list and project_update.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States 'Use this when the user wants to create a new project', providing a clear condition for use. However, it does not explicitly exclude nor mention alternatives like project_update or project_delete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_deleteDelete ProjectADestructiveIdempotent
Use this when the user wants to permanently delete a project. WARNING: This is a destructive operation that cannot be undone. All associated tasks will remain but will lose their project association.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The project ID to delete permanently |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | Yes | Whether the deletion was successful |
| deletedId | No | The ID of the deleted project |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral context beyond the annotations, such as the irreversibility of the operation and the fact that associated tasks lose their project association. It does not contradict the provided annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences and a warning, all front-loaded with essential information. Every sentence adds value without unnecessary fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, clear schema, and existence of an output schema), the description adequately covers the destructive nature and task behavior. It could potentially mention the effect on other entities, but the output schema likely handles return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for the only parameter 'id', and the description does not add additional meaning beyond what the schema already provides. Thus, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'delete' and the resource 'project', and it distinguishes itself from sibling tools like project_create, project_get, project_list, and project_update.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use the tool ('when the user wants to permanently delete a project') and includes a warning about destructiveness and task disassociation. However, it does not mention when not to use it or provide explicit alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_getGet ProjectARead-only
Use this when the user wants to view detailed information about a specific project.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The project ID to retrieve |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | Project ID |
| title | Yes | Project title |
| description | No | Project description |
| color | No | Project color as decimal integer |
| archived | No | Whether the project is archived |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false, so the description adds minimal extra behavioral context beyond stating 'view detailed information'. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded, and no wasted words. Every part of the description earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of output schema and comprehensive annotations, the description is adequate for a simple get operation. Could mention permissions but not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter 'id', and the tool description adds no further 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.
Does the description clearly state what the tool does and how it differs from similar tools?
Title and description clearly state the verb 'get' and resource 'project', distinguishing from sibling tools like project_create, project_list, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description says when to use it ('when the user wants to view detailed information about a specific project'), but does not mention when not to use or explicitly cite alternatives like project_list for multiple projects.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_listList ProjectsARead-only
Use this when the user wants to view their projects. IMPORTANT: When the user asks for a specific number (e.g., "show me 5 projects"), use the limit parameter to control how many projects are returned. Always use pagination to avoid loading all projects unnecessarily. Supports filtering by team, status, date ranges, and text search.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of projects to return. Use this when user asks for a specific number (e.g., "5 projects" = limit: 5). Defaults to 20 if not specified. | |
| page | No | Page number for pagination (1-based). Use with limit to fetch subsequent pages. | |
| teamId | No | Optional team ID to filter projects belonging to a specific team | |
| teamIds | No | Optional array of team IDs to filter projects belonging to multiple teams | |
| projectIds | No | Optional array of project IDs to filter specific projects | |
| search | No | Optional search query to filter projects by title (partial match supported) | |
| status | No | Filter by project status. "active" = non-archived, "inactive" = archived, "all" = both. Defaults to "all" if not specified. | |
| sort | No | Sort field for projects: alpha=alphabetical, alphaNum=alphanumeric, client=by client name, duration=total time tracked, created=creation date, status=active/inactive | |
| order | No | Sort order (ascending or descending) | |
| taskStartDate | No | Filter projects with tasks starting on or after this date (ISO 8601 format: YYYY-MM-DD) | |
| taskEndDate | No | Filter projects with tasks ending on or before this date (ISO 8601 format: YYYY-MM-DD) | |
| taskRateId | No | Filter projects containing tasks with this specific rate ID | |
| taskType | No | Filter projects containing tasks of a specific type | |
| taskFilter | No | Additional task-level filter for projects | |
| taskUserIds | No | Filter projects containing tasks assigned to these user IDs |
Output Schema
| Name | Required | Description |
|---|---|---|
| projects | Yes | List of projects matching the criteria |
| totalCount | No | Total number of projects returned |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and destructiveHint, so description adds value by detailing pagination behavior (always use pagination, limit defaults to 20) and filter capabilities. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with main purpose, then key usage guidelines. Three sentences with no wasted words. Well-structured for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given output schema exists, description adequately covers all key aspects: purpose, pagination, filtering. Could mention defaults explicitly but schema already handles; completeness is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline 3 is appropriate. Description adds usage hints like 'use limit when user asks for specific number' but does not provide new semantic meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'view their projects' with specific action and resource. Distinguished from sibling list tools by focusing on projects. Provides additional context on pagination and filtering.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use (user wants to view projects) and gives concrete examples like using limit for specific numbers and pagination. Does not explicitly give when-not-to-use, but context implies this is the sole project listing tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_updateUpdate ProjectA
Use this when the user wants to modify an existing project's details such as title, description, or archive status.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The project ID to update | |
| title | No | Updated project title | |
| description | No | Updated project description | |
| archived | No | Set to true to archive the project, false to unarchive it |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | The updated project ID |
| title | No | The updated project title |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false, so the agent knows it's a safe mutation. The description adds specifics (title, description, archive status) but does not disclose other behavioral traits like error handling or side effects. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently conveys the tool's purpose. Every word adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of annotations, an output schema, and full parameter coverage, the description is mostly complete. It could mention that the project must exist or that updating archived status has implications, but overall it provides adequate context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with descriptions for all 4 parameters. The description lists the same fields (title, description, archive status) but adds no new meaning beyond 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'modify an existing project's details' with specific examples (title, description, archive status). This distinguishes it from sibling tools like project_create (creation) and project_delete (deletion).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs when to use the tool ('when the user wants to modify an existing project's details'), providing clear context. It lacks explicit exclusion criteria or alternative suggestions, but the sibling tool names imply alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
report_document_getGet Document Report DataARead-only
Use this when the user wants to retrieve formatted document/invoice data including tasks, expenses, and financial calculations. Returns JSON data ready for display.
| Name | Required | Description | Default |
|---|---|---|---|
| documentId | Yes | The unique identifier of the document/invoice to retrieve |
Output Schema
| Name | Required | Description |
|---|---|---|
| documentTitle | No | Document title |
| invoiceNumber | No | Invoice number |
| totalAmount | No | Formatted total amount |
| tasks | No | List of task items |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, destructiveHint=false, and openWorldHint=true. The description adds that it returns JSON data for display, which is consistent but adds limited additional 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is just two sentences: the first states when to use, the second states what it returns. It is concise, front-loaded, and every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description does not need to detail return values. It mentions the JSON format and display readiness, which is helpful. The description is complete for a simple retrieval tool, though it could highlight the distinction from PDF/XML siblings more explicitly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description of documentId. The tool description does not add extra meaning about the parameter beyond the schema, so it meets the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies the action (retrieve) and the resource (formatted document/invoice data), listing included data types (tasks, expenses, financial calculations). Among siblings like report_document_pdf and report_document_xml, it clearly differentiates by returning JSON data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool ('when the user wants to retrieve formatted document/invoice data') and mentions the output format (JSON ready for display). It does not explicitly exclude PDF/XML uses, but the context from sibling tools provides that guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
report_document_pdfGenerate Document PDFARead-only
Use this when the user wants to generate and download a PDF version of a document/invoice. Returns a download URL for the PDF file.
| Name | Required | Description | Default |
|---|---|---|---|
| documentId | Yes | The unique identifier of the document/invoice to generate PDF for |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | No | Whether PDF was generated successfully |
| size | No | PDF file size in bytes |
| message | No | Status message |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds that it returns a download URL, but lacks further behavioral details like authentication or rate limits. With annotations covering the main aspects, a 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with usage guidance, and contains no extraneous information. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and an output schema, the description explains the purpose and return value. It could mention potential transience of the URL, but overall it's mostly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% coverage with a clear description of the single parameter (documentId). The tool description does not add additional semantic meaning beyond the schema, so baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('generate and download a PDF version') and the resource ('document/invoice'), distinguishing it from sibling tools like report_document_xml (XML) and report_document_get (data retrieval).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use this when...' providing clear context for when to use this tool. However, it does not mention alternatives or when not to use it, such as for other formats.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
report_document_xmlGenerate Document XMLARead-only
Use this when the user wants to generate XML representation of a document for e-invoicing (Zugferd, XRechnung, ebInterface). Returns XML data for electronic invoice processing.
| Name | Required | Description | Default |
|---|---|---|---|
| documentId | Yes | The unique identifier of the document/invoice to generate XML for |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | No | Whether XML was generated successfully |
| xml | No | XML content |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false. Description adds that it generates XML and returns XML data, which is helpful but not beyond what annotations suggest. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with usage context, no unnecessary words. Efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given low complexity (1 param, annotations present, output schema exists), description completely covers the tool's purpose and output. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear parameter description. The description does not add extra meaning beyond the schema, so baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the verb 'generate XML', resource 'document', and specific use case 'e-invoicing (Zugferd, XRechnung, ebInterface)'. Distinguishes from siblings like report_document_get and report_document_pdf.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies when to use (when user wants XML for e-invoicing) but does not explicitly provide when-not-to-use or alternatives. Adequate but lacks explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
report_expense_getGet Expense Report DataARead-only
Use this when the user wants to retrieve formatted expense data including amounts and receipt information.
| Name | Required | Description | Default |
|---|---|---|---|
| expenseId | Yes | The unique identifier of the expense to retrieve report data for |
Output Schema
| Name | Required | Description |
|---|---|---|
| expenseDate | No | Formatted expense date |
| expenseAmount | No | Formatted amount |
| expenseDescription | No | Expense description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds context about the output content (amounts and receipt information) but does not disclose other behavioral traits like handling of invalid IDs or data freshness. This is adequate but not exceptional.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 17 words, front-loaded with the usage instruction. Every word earns its place, and there is no extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get-by-ID tool with a single required parameter, read-only annotations, and an output schema present, the description is complete. It specifies what the tool returns (formatted expense data with amounts and receipt info), which is sufficient for the agent to understand its behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter (expenseId), and the description does not add any additional meaning or detail about the parameter. Baseline score of 3 is appropriate when the schema sufficiently documents the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves 'formatted expense data including amounts and receipt information'. The verb 'retrieve' and resource 'formatted expense data' are specific. It distinguishes from sibling tools like report_expense_pdf (which returns PDF) and report_document_get (for document reports) by focusing on structured expense data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use this when the user wants to retrieve formatted expense data...', providing a clear context for use. However, it does not mention alternatives or when not to use it, such as if the user needs a PDF version or raw data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
report_expense_pdfGenerate Expense PDFARead-only
Use this when the user wants to generate and download a PDF report for a specific expense including receipt images.
| Name | Required | Description | Default |
|---|---|---|---|
| expenseId | Yes | The unique identifier of the expense to generate PDF for |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | No | Whether PDF was generated successfully |
| size | No | PDF file size in bytes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description need not restate. It adds that receipt images are included, which is useful. No disclosure of rates, sizes, or other behaviors. With annotations, this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that efficiently conveys purpose and key feature. No extraneous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one parameter and output schema present. Description covers purpose and distinguishing feature (receipt images). Complete for selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'expenseId' is well-described in the schema (100% coverage). The tool description mentions 'specific expense', consistent with schema. No additional semantic value beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates and downloads a PDF report for a specific expense including receipt images. It uses a specific verb-resource pair and distinguishes from siblings like report_expense_get or report_document_pdf.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use this when the user wants to generate and download a PDF report...' providing clear context. It does not specify exclusions or alternatives, but the sibling context implies distinct usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
report_note_getGet Note Report DataARead-only
Use this when the user wants to retrieve formatted note data including content and attachments.
| Name | Required | Description | Default |
|---|---|---|---|
| noteId | Yes | The unique identifier of the note to retrieve report data for |
Output Schema
| Name | Required | Description |
|---|---|---|
| noteDate | No | Formatted note date |
| noteContent | No | Note content |
| noteAuthor | No | Note author name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, and openWorldHint. Description adds that retrieval includes formatted data with content and attachments, but does not provide significant additional 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with the use case, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Has output schema so return details are covered. Description mentions content and attachments. With one parameter and clear annotations, it is adequately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers the single parameter noteId with description (100% coverage). Description adds context about what the response includes (content and attachments), but does not add parameter-specific meaning beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool retrieves formatted note data including content and attachments, distinguishing it from sibling tools like report_note_pdf.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description explicitly says 'Use this when', providing clear context for when to use the tool, though it does not mention alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
report_note_pdfGenerate Note PDFARead-only
Use this when the user wants to generate and download a PDF report for a specific note including images.
| Name | Required | Description | Default |
|---|---|---|---|
| noteId | Yes | The unique identifier of the note to generate PDF for |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | No | Whether PDF was generated successfully |
| size | No | PDF file size in bytes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, non-destructive, and open-world. Description adds useful context that the PDF includes images, enhancing transparency 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, well-structured sentence that is front-loaded and contains no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple single-parameter schema, comprehensive annotations, and presence of an output schema, the description fully captures the tool's purpose and behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameter descriptions. The tool description does not add additional meaning to the noteId parameter beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (generate and download), resource (PDF report for a note), and specific behavior (including images). It distinguishes from sibling tools like report_document_pdf or report_task_pdf by specifying 'note'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (generate PDF for a note), providing clear context. However, it doesn't mention when not to use or alternatives like report_note_get.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
report_task_getGet Task Report DataARead-only
Use this when the user wants to retrieve formatted task data including time tracking, rates, and project details.
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | The unique identifier of the task to retrieve report data for |
Output Schema
| Name | Required | Description |
|---|---|---|
| taskDate | No | Formatted task date |
| taskDuration | No | Formatted duration |
| projectName | No | Project name |
| taskTotal | No | Formatted total amount |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and destructiveHint; the description adds value by specifying what data is included (time tracking, rates, project details), which goes 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the usage context and efficiently conveys purpose without wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval tool with one parameter and an output schema, the description sufficiently explains what data is returned, meeting completeness needs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the parameter description is adequate. The tool description does not add additional meaning to the parameter beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'retrieve' and the resource 'formatted task data', listing specific included fields (time tracking, rates, project details). This distinguishes it from sibling tools like report_task_pdf which generates a PDF.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear usage context ('Use this when the user wants to retrieve formatted task data') but does not explicitly state when not to use it or mention alternative siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
report_task_pdfGenerate Task PDFBRead-only
Use this when the user wants to generate and download a PDF report for a specific task.
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | The unique identifier of the task to generate PDF for |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | No | Whether PDF was generated successfully |
| size | No | PDF file size in bytes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true and destructiveHint=false. The description adds that a PDF is generated and downloadable, which is consistent with read-only behavior. No additional behavioral traits are disclosed beyond what annotations convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, concise and to the point. It could benefit from slightly more structure (e.g., stating the parameter explicitly), but overall it is appropriately sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one required parameter, output schema exists), the description provides minimal context. It does not explain what the PDF contains (e.g., task details, time entries), which could help the agent decide when to use this tool over alternatives.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%; the parameter description in the schema is clear. The tool description does not add extra meaning for the parameter 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (generate/download) and resource (PDF report for a specific task). It distinguishes from siblings through the tool name itself (task vs expense, note, document), but does not explicitly differentiate in text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use (when user wants to generate/download PDF for a task), but lacks guidance on when not to use or alternatives. Sibling tools like report_expense_pdf exist, and excluding them would improve clarity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
statistics_getGet StatisticsARead-only
Use this when the user wants to see time tracking statistics, summaries, or reports for a date range. Returns aggregated totals, project breakdowns, and daily/weekly hour charts.
| Name | Required | Description | Default |
|---|---|---|---|
| startDate | Yes | Start date for the statistics period (YYYY-MM-DD) | |
| endDate | Yes | End date for the statistics period (YYYY-MM-DD) | |
| projectId | No | Filter statistics for a specific project | |
| projectIds | No | Filter statistics for multiple projects | |
| teamId | No | Filter statistics for a specific team | |
| teamIds | No | Filter statistics for multiple teams | |
| tagIds | No | Filter statistics by tag IDs | |
| userIds | No | Filter statistics by user IDs | |
| filter | No | Filter by billing/payment status |
Output Schema
| Name | Required | Description |
|---|---|---|
| totalHours | Yes | Total hours tracked |
| billableHours | Yes | Billable hours |
| nonBillableHours | No | Non-billable hours |
| totalTasks | No | Total number of tasks |
| totalBreakHours | No | Total break hours |
| startDate | Yes | Period start date |
| endDate | Yes | Period end date |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true. Description adds value by specifying the output includes 'aggregated totals, project breakdowns, and daily/weekly hour charts', giving 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with usage instruction, no redundancy. Every phrase adds value without unnecessary details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Description covers purpose, usage, and output behavior. Output schema exists so return values are handled externally. Could include a note about default date ranges or pagination, but overall complete for a statistics tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each parameter is well-documented in the schema. Description does not add additional meaning beyond the schema, staying at baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'time tracking statistics, summaries, or reports' with a specific verb 'see' (implied get), resource (statistics), and scope (date range). Distinguishes from sibling tools like report_document_get or absence_list by focusing on aggregated statistics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use this when the user wants to see time tracking statistics' which provides clear context. Does not mention when not to use it or list alternatives, but the context signals and sibling tools show other report tools exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
task_add_expenseAdd Expense to TaskA
Use this when the user wants to record an expense or cost associated with the currently running task, such as travel, materials, or client entertainment.
| Name | Required | Description | Default |
|---|---|---|---|
| description | Yes | Description of what the expense was for (e.g., "Taxi to client site", "Lunch meeting", "Materials") | |
| amount | Yes | Expense amount as a decimal string in the user's default currency (e.g. "12.50"). The API stores amounts as BigDecimal strings. | |
| dateTime | No | Optional timestamp for when the expense occurred in ISO 8601 format. If not provided, uses current time. |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | Yes | Whether the expense was added successfully |
| expenseDescription | No | The expense description |
| amount | No | The expense amount recorded (decimal string) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate the tool is not read-only (readOnlyHint=false) and not destructive (destructiveHint=false). The description describes the action as 'record an expense or cost', which is consistent. However, it does not add behavioral context beyond the basic action, such as whether expenses accumulate, can be edited, or require permissions. Given low annotation value add, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that directly states the tool's purpose without any extraneous words. It is concise and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 3 well-documented parameters, an output schema, and annotations that describe safety and openness. The description covers the action and use case. All essential information for an agent to select and invoke the tool is present and clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter having clear descriptions (e.g., 'Description of what the expense was for', amount as decimal string, dateTime as ISO 8601). The description adds no extra meaning beyond the schema, so baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool records an expense/cost for the currently running task (e.g., travel, materials). The verb 'record an expense' and resource 'cost associated with the currently running task' are specific, and the examples clarify scope. However, it doesn't explicitly distinguish from potential sibling expense tools (none exist) nor clarify if it's only for running tasks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use: when the user wants to record an expense/cost associated with the currently running task. It provides concrete examples. It does not mention when not to use or alternatives, but among siblings, no other expense tool exists, so the guidance is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
task_add_noteAdd Note to TaskA
Use this when the user wants to add a text note or comment to the currently running task for future reference or documentation.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The note content or comment to attach to the task | |
| dateTime | No | Optional timestamp for the note in ISO 8601 format. If not provided, uses current time. |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | Yes | Whether the note was added successfully |
| noteText | No | The note text that was added |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a non-read-only, non-destructive, open-ended operation. The description adds context by specifying the note is attached to the 'currently running task' and for 'future reference or documentation'. It does not outline side effects or error conditions, but the information provided is sufficient for a simple creation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence that immediately conveys the tool's purpose. 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters, 1 required), an output schema present, and annotations covering safety, the description provides all necessary context. It clearly states the use case and what the tool accomplishes without omitted details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters ('text' and 'dateTime') are fully described in the input schema with clear descriptions. The tool description adds no additional parameter-level meaning beyond what the schema already provides, resulting in a baseline score for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the verb 'add', the resource 'a text note or comment', and scope 'to the currently running task'. It clearly distinguishes from sibling tools like task_add_expense or task_add_pause.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use ('when the user wants to add a text note or comment to the currently running task'). However, it does not mention when not to use this tool or suggest alternatives for modifying existing notes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
task_add_pauseAdd Manual Pause to TaskA
Use this when the user wants to manually record a past break or pause period that was not tracked in real-time.
| Name | Required | Description | Default |
|---|---|---|---|
| description | No | Reason for the pause (e.g., "Lunch break", "Meeting", "Coffee break") | |
| startDateTime | Yes | When the pause started in ISO 8601 format | |
| endDateTime | Yes | When the pause ended in ISO 8601 format |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | Yes | Whether the pause was added successfully |
| duration | No | Duration of the pause in seconds |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description accurately characterizes the tool as a write operation (recording a pause) which aligns with annotations (readOnlyHint=false). Adds behavioral context that it is for past breaks not tracked in real-time. No contradictions. Could mention side effects or required authorization, but current info is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no wasted words. Front-loaded with the usage directive. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple tool with well-documented parameters and existing output schema, the description provides sufficient context for usage. However, it does not explain the return behavior or how pauses relate to a task (implied by name).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents parameters adequately. The tool description does not add additional semantic meaning beyond the schema, which meets the baseline expectation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'record' and resource 'past break or pause period', distinguishing it from real-time tracking tools like timer_pause. The phrase 'manually record a past break or pause period that was not tracked in real-time' is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states 'Use this when the user wants to manually record a past break... not tracked in real-time', providing clear context for use. Implicitly excludes real-time pause cases, but does not name sibling tools like timer_pause as alternatives explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
task_createCreate TaskA
Use this when the user wants to manually create a time entry for past work, rather than using the timer.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | The project ID this task belongs to | |
| startDateTime | Yes | When the work started in ISO 8601 format (e.g., "2025-10-08T09:00:00Z") | |
| endDateTime | No | Optional end time in ISO 8601 format. If provided, creates a completed task. | |
| description | No | Optional description of what work was done | |
| billable | No | Whether this task should be billable to the client. Defaults to project setting. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | The ID of the newly created task |
| duration | No | Duration of the task in seconds (if endDateTime was provided) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=false and destructiveHint=false. Description adds context that it's for past work, but does not disclose additional behaviors like idempotency or required permissions beyond what annotations imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with usage instruction, no wasted words. Perfectly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With output schema and full parameter documentation, the description covers the essential usage context. Could mention side effects or that the entry will appear in logs, but not necessary given other documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description does not add any parameter-specific details beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a time entry manually for past work, distinguishes from the timer sibling tool, uses specific verb-resource (create a time entry).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use ('manually create a time entry for past work') and when not ('rather than using the timer'). Does not mention other alternatives like task_update or task_delete, but the primary alternative is well-addressed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
task_deleteDelete TaskADestructiveIdempotent
Use this when the user wants to permanently delete a time entry. WARNING: This is a destructive operation that cannot be undone.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The task ID to delete permanently |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | Yes | Whether the deletion was successful |
| deletedId | No | The ID of the deleted task |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide destructiveHint=true and readOnlyHint=false. The description adds valuable context beyond annotations by stating 'permanent' and 'cannot be undone,' which aligns with the destructive hint. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise, consisting of two short, front-loaded sentences. Every sentence adds value: one states the usage, the other warns about destructiveness. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (1 parameter, no nested objects, output schema present, annotations covering destructive behavior), the description is complete. It covers purpose, usage, and behavioral caveats adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the parameter 'id' has a description in the schema ('The task ID to delete permanently'). The tool description does not add extra parameter semantics beyond what the schema provides, warranting a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Purpose is clearly stated: permanently delete a time entry. The verb 'delete' and resource 'time entry' are specific. The tool name 'task_delete' and sibling tools (e.g., absence_delete, project_delete) further differentiate this from other delete operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use this when the user wants to permanently delete a time entry,' providing clear context. It does not explicitly list alternatives or when not to use, but the warning about destructiveness helps guide usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
task_getGet TaskARead-only
Use this when the user wants to view detailed information about a specific time entry/task.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The task ID to retrieve |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | Task ID |
| description | No | Task description |
| projectTitle | No | Associated project title |
| startDateTime | No | Start date and time |
| endDateTime | No | End date and time |
| duration | No | Duration in seconds |
| billable | No | Whether the task is billable |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is well-covered. The description adds that it provides detailed information, which aligns with readOnly but does not go beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no waste. Every word is informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no nested objects), rich annotations (readOnlyHint, destructiveHint, openWorldHint), and presence of an output schema, the description is complete enough for an agent to understand the tool's purpose and usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with a single 'id' parameter described as 'The task ID to retrieve'. The description does not add extra meaning beyond this, which is acceptable given the schema's completeness.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('view detailed information') and resource ('a specific time entry/task'), distinguishing it from sibling tools like task_list which lists multiple tasks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use this when the user wants to view detailed information', which is clear guidance. It does not mention when not to use it or alternatives, but the sibling tool names imply that task_get is for a single item.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
task_listList TasksARead-only
Use this when the user wants to view their time entries. IMPORTANT: When the user asks for a specific number (e.g., "show me 10 tasks"), use the limit parameter to control how many tasks are returned. Always use pagination to avoid loading all tasks unnecessarily. Supports extensive filtering by organization, team, project, user, tags, and more.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of tasks to return. Use this when user asks for a specific number (e.g., "10 tasks" = limit: 10). Defaults to 20 if not specified. | |
| page | No | Page number for pagination (1-based). Use with limit to fetch subsequent pages. | |
| sort | No | Sort field for tasks: dateTime=by start/end time, time=by duration, created=by creation date | |
| order | No | Sort order (ascending or descending) | |
| startDate | No | Filter tasks starting on or after this date (YYYY-MM-DD format) | |
| endDate | No | Filter tasks ending on or before this date (YYYY-MM-DD format) | |
| organizationId | No | Filter tasks by organization ID | |
| teamId | No | Filter tasks by team ID | |
| teamIds | No | Filter tasks by multiple team IDs | |
| projectId | No | Filter tasks for a specific project | |
| projectIds | No | Filter tasks by multiple project IDs | |
| todoId | No | Filter tasks associated with a specific todo/task item | |
| taskIds | No | Filter specific tasks by IDs | |
| rateId | No | Filter tasks by rate/billing rate ID | |
| documentId | No | Filter tasks associated with a specific document | |
| type | No | Filter tasks by type: all=all types, task=regular time entries, mileage=mileage entries, call=call entries | |
| filter | No | Filter tasks by billing/payment status: all=all tasks, billable=only billable, notBillable=non-billable, paid=payment received, unpaid=not paid, billed=invoice sent, outstanding=billed but unpaid | |
| excludeTaskIds | No | Exclude specific task IDs from results | |
| tagIds | No | Filter tasks by tag IDs | |
| userIds | No | Filter tasks by user IDs (task owners) | |
| feelings | No | Filter tasks by feeling/satisfaction ratings (1-5) | |
| populatePauses | No | Include pause/break information in task details | |
| populateExpenses | No | Include expense information in task details | |
| populateNotes | No | Include notes in task details | |
| populateTags | No | Include tag details in task information |
Output Schema
| Name | Required | Description |
|---|---|---|
| tasks | Yes | List of tasks matching the criteria |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true. The description reinforces read-only behavior only implicitly and adds pagination guidance. It does not disclose anything beyond what annotations provide, but there is no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loading the usage instruction. It is concise and informative, though the mention of extensive filtering is redundant given the schema. No wasted sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (25 parameters, output schema exists), the description covers usage and filtering but lacks details about default pagination, error handling, or edge cases. The annotations and schema fill some gaps, making it adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description only emphasizes the limit parameter usage without adding new meaning to other parameters. It does not compensate with examples or relationships.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with 'Use this when the user wants to view their time entries,' which clearly identifies the action and resource. The distinction from siblings like task_get (single task) is implied, but the phrasing 'time entries' may cause slight confusion since the tool lists tasks (which include time entries). Still, the verb and resource are identifiable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool ('view their time entries') and provides an important hint about using the limit parameter when a specific number is requested. It also advises using pagination. It does not explicitly exclude alternatives, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
task_updateUpdate TaskA
Use this when the user wants to modify details of an existing time entry such as times, description, or billing status.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The task ID to update | |
| description | No | Updated task description | |
| startDateTime | No | Updated start time in ISO 8601 format | |
| endDateTime | No | Updated end time in ISO 8601 format | |
| billable | No | Updated billable status | |
| paid | No | Mark task as paid (for invoicing) | |
| billed | No | Mark task as billed (invoice sent to client) |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | Yes | Whether the update was successful |
| id | No | The updated task ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate the tool is not read-only (false) and not destructive (false). The description adds that it modifies existing entries, which aligns with annotations. It lists examples of modifiable fields, adding mild value beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence efficiently conveying the tool's purpose. It could be slightly improved by using 'task' instead of 'time entry' for accuracy, but overall it is concise and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of annotations, full schema coverage, and an output schema, the description provides sufficient context for a mutation tool. It does not need to explain return values as the output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description's mention of 'times, description, or billing status' simply echoes what is already in the schema parameters. No additional semantic nuance is provided beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it modifies details of an existing time entry, which aligns with the tool's purpose. However, it uses 'time entry' instead of 'task', which could cause minor confusion. It distinguishes well from sibling tools like task_create or task_delete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit usage condition ('when the user wants to modify details...'), which provides context. However, it does not mention when not to use it or suggest alternative tools like task_add_expense or timer_update, so guidance is limited.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
team_listList TeamsARead-only
Use this when the user wants to view or search for teams. IMPORTANT: Use this tool to find team IDs by searching team names, which can then be used to filter projects. Supports text search and pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | Search query to filter teams by name (partial match supported) | |
| limit | No | Maximum number of teams to return. Defaults to 20 if not specified. | |
| page | No | Page number for pagination (1-based). Use with limit to fetch subsequent pages. | |
| organizationId | No | Filter teams by organization ID | |
| sort | No | Sort field: alpha=alphabetical by name, permission=by user permission level, created=by creation date | |
| order | No | Sort order (ascending or descending) |
Output Schema
| Name | Required | Description |
|---|---|---|
| teams | No | List of teams matching the criteria |
| totalCount | No | Total number of teams returned |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and destructiveHint, so the description adds value by specifying search and pagination behavior. It does not contradict annotations and provides functional context beyond the safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose, then an important workflow note, and features listed. No redundant information, every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, so return values are covered. The description covers the primary use case and an important downstream use (project filtering). For a tool with many optional parameters, the description is sufficient for an agent to decide when and how to invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage, the description adds meaning by explaining how parameters (search, pagination) support finding team IDs for project filtering, creating a workflow context beyond the parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool is for viewing/searching teams and specifies the action (list/view) and resource (teams). It distinguishes from sibling tools by linking the output to project filtering, which is unique among the sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use ('when the user wants to view or search for teams') and provides a key workflow hint: finding team IDs to filter projects. No alternative tool exists for teams, so exclusion is not needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
timer_pausePause TimerA
Use this when the user wants to pause the timer to take a break. This temporarily stops time tracking while keeping the task active.
| Name | Required | Description | Default |
|---|---|---|---|
| startDateTime | No | Optional pause start time in ISO 8601 format (e.g., "2025-10-08T12:00:00Z"). If not provided, uses current time. |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | Timer status after pausing |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-read-only and non-destructive nature. The description adds that the pause is temporary and the task remains active, which provides valuable 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, concise, and front-loaded with the purpose. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one optional parameter and an output schema. The description covers the core behavior adequately, though could mention the relation to timer_resume.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one optional parameter with 100% schema coverage. The description adds no extra information about the parameter beyond what is already in the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it pauses the timer for a break, keeping the task active. It uses a specific verb and resource, and distinguishes from siblings like timer_stop and timer_resume.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when to use ('when the user wants to pause the timer to take a break'). However, it does not mention when not to use or provide alternatives like timer_stop.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
timer_resumeResume TimerA
Use this when the user wants to resume time tracking after a break or pause. This restarts the timer from its paused state.
| Name | Required | Description | Default |
|---|---|---|---|
| endDateTime | No | Optional pause end time in ISO 8601 format (e.g., "2025-10-08T13:00:00Z"). If not provided, uses current time. |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | Timer status after resuming |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-readOnly, non-destructive. Description adds that it 'restarts from paused state', providing behavioral detail beyond annotations. Could mention side effects like time entry continuation, but sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, each essential. First sentence states purpose and when to use, second explains behavior. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool is simple (resume with optional end time). Description covers purpose, usage, and behavior. Output schema exists, so return values not needed. Complete for the given context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline 3. Description does not add meaning beyond schema; it mentions resumption implicitly but no extra parameter details. Adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'resume' and the resource 'time tracking/timer'. It distinguishes from sibling tools like timer_pause by specifying 'after a break or pause' and 'restarts from paused state'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states 'when the user wants to resume time tracking after a break or pause', providing clear usage context. Does not mention when not to use or alternatives, but the purpose is well-defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
timer_startStart TimerA
Use this when the user wants to begin tracking time on a specific project. The user can optionally specify a custom start time in the past, otherwise it defaults to now.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | The unique identifier of the project to track time for. Use project_list to find available projects. | |
| startDateTime | No | Optional start time in ISO 8601 format (e.g., "2025-10-08T10:30:00Z"). If not provided, uses current time. |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | Current timer status |
| projectTitle | No | Name of the project being tracked |
| projectId | No | ID of the project |
| duration | No | Current duration in seconds |
| startTime | No | When the timer was started |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a write operation (readOnlyHint=false) with possible side effects (openWorldHint=true). The description adds that startDateTime defaults to now and can be in the past, which is useful beyond annotations. However, it does not disclose what happens if a timer is already running or if the project is invalid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, no unnecessary words. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with two parameters and an output schema, the description covers purpose, params, and default behavior. It could mention error handling or what happens if timer already active, but overall sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% description coverage. The description adds value by clarifying that startDateTime can be in the past and defaults to now, which is not obvious from the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool starts tracking time on a specific project, clearly distinguishing it from sibling tools like timer_pause or timer_stop.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for use ('when the user wants to begin tracking time') and mentions optional custom start time, but does not explicitly exclude cases like an already-running timer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
timer_statusGet Timer StatusARead-only
Use this when the user wants to check the current state of their timer, including whether it's running, paused, or stopped, and details about the active task.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | Current timer status |
| projectTitle | No | Name of the project being tracked (if active) |
| projectId | No | ID of the project (if active) |
| description | No | Task description (if provided) |
| duration | No | Current duration in seconds (if active) |
| hours | No | Hours component of duration |
| minutes | No | Minutes component of duration |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safe read-only nature is established. The description adds value by specifying what information is returned (state and active task details), which enhances transparency beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that immediately conveys the tool's purpose. It is front-loaded and contains no unnecessary words or information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless tool with an output schema, the description sufficiently covers what the tool returns (state and active task details). No missing context is evident, and the description is complete for an AI agent to understand the tool's capabilities.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema provides complete coverage. Per the rubric, a baseline of 4 is appropriate. The description does not need to add parameter info, and it correctly avoids superfluous details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: checking the current timer state (running, paused, stopped) and details about the active task. It uses a specific verb ('check') and resource ('timer status'), and distinguishes from sibling tools like timer_start or timer_pause which have different actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear guidance to use this tool when the user wants to check timer status. While it does not explicitly list when not to use it, the context of sibling tools (e.g., timer_pause, timer_resume) implies this is for read-only queries. A slight improvement would be to mention that it does not modify the timer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
timer_stopStop TimerA
Use this when the user wants to stop the currently active timer and complete the time tracking session. The user can optionally specify when the timer should be stopped.
| Name | Required | Description | Default |
|---|---|---|---|
| endDateTime | No | Optional end time in ISO 8601 format (e.g., "2025-10-08T18:00:00Z"). If not provided, uses current time. |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | Timer status after stopping |
| duration | Yes | Total duration tracked in seconds |
| hours | No | Hours component of duration |
| minutes | No | Minutes component of duration |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already show readOnlyHint=false and destructiveHint=false. The description adds that the timer session is completed. It does not contradict annotations. It 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences, no redundant information, and front-loaded with clear action guidance. Every sentence serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has one optional parameter, an output schema, and the description covers the action and usage, it is largely complete. However, it does not address edge cases like what happens if no timer is active.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the description mentions the optional end time parameter. It adds some context but does not provide deeper meaning beyond what the schema already specifies. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'stop' and the resource 'currently active timer', distinguishing it from sibling tools like timer_pause, timer_resume, etc. It explicitly says 'stop the currently active timer and complete the time tracking session'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description starts with 'Use this when the user wants to stop the currently active timer', providing clear guidance. However, it does not explicitly state when not to use it or suggest alternatives like timer_pause for pausing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
timer_updateUpdate Timer TaskA
Use this when the user wants to modify details of the currently running timer task, such as description, location, billability, or mood rating.
| Name | Required | Description | Default |
|---|---|---|---|
| description | No | Task description or notes about what work is being done | |
| location | No | Physical location where work started (e.g., "Office", "Home", "Client site") | |
| locationEnd | No | Physical location where work ended | |
| feeling | No | Mood or satisfaction rating from 1 (poor) to 5 (excellent) | |
| billable | No | Whether this time should be billed to the client |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | Yes | Whether the update was successful |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false and destructiveHint=false, meaning it modifies state but is not destructive. The description confirms mutation ('modify details'). It does not disclose additional traits (e.g., if timer is paused, what if timer not running, authorization needs). The openWorldHint=true suggests unknown side effects, but description adds no extra transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with the use case, no redundant words. Every word is meaningful and earned.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 optional parameters and an output schema, the description captures the core purpose. It implicitly requires a running timer but doesn't state this explicitly, nor does it clarify that all parameters are optional. Still, it provides sufficient completeness for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (all 5 parameters have descriptions). The description lists only some parameters (description, location, billability, mood rating), omitting locationEnd. It adds minimal meaning beyond the schema, simply restating the examples. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'modify details' and identifies the resource as 'currently running timer task'. It lists specific example fields (description, location, billability, mood rating), distinguishing it from sibling tools like timer_stop (state control) and task_update (non-timer tasks).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'use this when the user wants to modify details of the currently running timer task', providing context. However, it does not explicitly mention when not to use it or name alternatives, leaving implicit differentiation from siblings like timer_start or task_update.
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.
50 tool updates
v1.2.0- First observed
absence_approve - First observed
absence_cancel - First observed
absence_create - First observed
absence_delete - First observed
absence_get - First observed
absence_list - First observed
absence_reject - First observed
absence_type_list - First observed
absence_update - First observed
auth_configure - First observed
export_fields - First observed
export_from_template - First observed
export_generate - First observed
export_report_types - First observed
export_send - First observed
export_template_create - First observed
export_template_delete - First observed
export_template_get - First observed
export_template_list - First observed
export_template_update - First observed
project_create - First observed
project_delete - First observed
project_get - First observed
project_list - First observed
project_update - First observed
report_document_get - First observed
report_document_pdf - First observed
report_document_xml - First observed
report_expense_get - First observed
report_expense_pdf - First observed
report_note_get - First observed
report_note_pdf - First observed
report_task_get - First observed
report_task_pdf - First observed
statistics_get - First observed
task_add_expense - First observed
task_add_note - First observed
task_add_pause - First observed
task_create - First observed
task_delete - First observed
task_get - First observed
task_list - First observed
task_update - First observed
team_list - First observed
timer_pause - First observed
timer_resume - First observed
timer_start - First observed
timer_status - First observed
timer_stop - First observed
timer_update
TDQS
Tools are grouped by domain (absence, export, project, task, timer, etc.) with clear purposes. However, there are many similar tools like 'export_generate' vs 'export_send' and multiple report tools, which could cause slight confusion despite good descriptions.
All tools follow a consistent 'domain_verb' pattern (e.g., absence_create, export_generate, timer_start). No mixing of conventions or vague names.
50 tools is excessive for a timesheet server. Many tools are granular (e.g., separate tools for each report action) and could be consolidated. This adds unnecessary complexity for agents.
Covers core CRUD for absences, projects, tasks, exports, and timers. Missing team creation/update and absence type creation/update, but these are minor gaps for the domain.
Maintenance
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
Manage projects, tasks, time tracking, and team collaboration through natural language.
Invoicing you drive by talking to your AI: log time, raise invoices and track what's owed via MCP.
- mcp-serverOAuthio.klokin
MCP server exposing klokin time-tracking operations (employees, time entries, stores) to AI clients.
Related MCP Servers
- AlicenseCqualityCmaintenanceEnables interacting with Clockify time-tracking data through natural language, providing tools to manage workspaces, projects, time entries, reports, and more via the MCP protocol.481MIT
- AlicenseNot gradedqualityBmaintenanceEnables natural language time tracking and booking for WorkTracker via MCP tools, allowing users to assign time, list projects, and manage daily schedules through conversational commands.MIT
- FlicenseNot gradedqualityBmaintenanceExposes the full public TSheets REST API v1 as MCP tools, enabling time tracking, scheduling, and PTO management operations via natural language.-
- FlicenseAqualityCmaintenanceEnables viewing, creating, and managing time registrations, absences, and timesheet approvals through the Timelog API using natural language.21-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/timesheetIO/timesheet-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server