TimePRO MCP Server
This server enables AI assistants to manage timesheets in the TimePRO system, allowing them to create, read, update, delete, and search timesheets and related data on behalf of authenticated users.
List Clients – Search and retrieve clients by name.
List Projects – Get available projects for a specific client.
List Categories – Retrieve timesheet work categories (e.g., Development, Meeting, Admin).
List Locations – Get available work locations (e.g., Office, Remote, Client Site).
Get Timesheet Defaults – Fetch default values (e.g., last used client/project) for a given date before creating a timesheet.
List Timesheets – View a summary of timesheets within a specified date range.
Get Timesheet – Retrieve full details of a specific timesheet by ID.
Create Timesheet – Add a new timesheet entry with client, project, category, date, start/end times, and optional details like notes, location, break time, and billable category.
Update Timesheet – Modify any fields of an existing timesheet.
Delete Timesheet – Remove a timesheet entry by its ID.
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., "@TimePRO MCP ServerLog 8 hours of development work for SSW today from 9am to 5pm"
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.
TimePro MCP Server
An MCP (Model Context Protocol) server that wraps the TimePro API, enabling AI assistants to automatically create and manage timesheets on behalf of authenticated users.

Watch the video above for more information.
Features
List clients - Search for clients to use in timesheets
List projects - Get projects for a specific client
List categories - Get available timesheet categories (Development, Meeting, etc.)
List locations - Get available work locations
Get timesheet defaults - Get default values including last used client/project
List timesheets - View timesheets for a date range
Get timesheet - Get full details of a specific timesheet
Create timesheet - Create a new timesheet entry
Update timesheet - Modify an existing timesheet
Delete timesheet - Remove a timesheet
Related MCP server: EARLY App MCP Server
Quick Start (npx - No Installation Required)
Add to your Claude Desktop config (claude_desktop_config.json):
{
"mcpServers": {
"timepro": {
"command": "npx",
"args": ["-y", "github:calumjs/TimePRO.MCP"],
"env": {
"TIMEPRO_API_URL": "https://ssw.sswtimepro.com",
"TIMEPRO_API_KEY": "your-api-key-here",
"TIMEPRO_TENANT_ID": "ssw"
}
}
}
}The config file location:
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.json
Configuration
The server requires three environment variables:
Variable | Description | Example |
| TimePRO base URL |
|
| Your personal access token |
|
| Your tenant ID |
|
How to Get Your API Key
Log into TimePRO: Go to your TimePro instance and sign in
Navigate to API Key page: Go to Admin > API Key
Generate or Copy Key: If you already have a key, it will be displayed. Click "Generate" to create a new key if needed.
Copy the key: Store it securely
How to Find Your Tenant ID
The tenant ID is visible in:
The URL when logged into TimePro (e.g.,
https://ssw.sswtimepro.com/b/ssw/...- tenant is "ssw")The
x-timepro-tenant-idheader in browser dev tools (Network tab)Ask your TimePRO administrator
Alternative: Local Installation
If you prefer to install locally:
git clone https://github.com/calumjs/TimePRO.MCP.git
cd TimePRO.MCP
npm install
npm run buildThen use this config:
{
"mcpServers": {
"timepro": {
"command": "node",
"args": ["/path/to/TimePRO.MCP/dist/index.js"],
"env": {
"TIMEPRO_API_URL": "https://ssw.sswtimepro.com",
"TIMEPRO_API_KEY": "your-api-key-here",
"TIMEPRO_TENANT_ID": "ssw"
}
}
}
}Usage Examples
Once configured, you can ask Claude to manage your timesheets naturally:
"What clients do I have access to?"
"Show me my timesheets for this week"
"Create a timesheet for SSW internal work today from 9am to 5pm"
"Log 2 hours of development work on the SugarLearning project"
"Delete my timesheet from yesterday"
Tools Reference
list_clients
Search for clients by name.
Parameters:
search_text(optional): Filter clients by name
list_projects
Get projects for a client.
Parameters:
client_id(required): Client ID (string, e.g., "SSW")
list_categories
Get available timesheet categories. No parameters.
list_locations
Get available work locations. No parameters.
get_timesheet_defaults
Get default values for creating a timesheet.
Parameters:
date(required): Date in YYYY-MM-DD format
list_timesheets
List timesheets in a date range.
Parameters:
start_date(required): Start date in YYYY-MM-DD formatend_date(required): End date in YYYY-MM-DD format
get_timesheet
Get details of a specific timesheet.
Parameters:
timesheet_id(required): Timesheet ID (number)
create_timesheet
Create a new timesheet entry.
Parameters:
client_id(required): Client ID (string)project_id(required): Project ID (string)category_id(required): Category ID (string)date(required): Date in YYYY-MM-DD formatstart_time(required): Start time in HH:MM formatend_time(required): End time in HH:MM formatbreak_minutes(optional): Break time in minutes (default: 0)location_id(optional): Work location IDbillable_id(optional): Billable category IDnote(optional): Description of work
update_timesheet
Update an existing timesheet.
Parameters:
timesheet_id(required): Timesheet ID (number)All other parameters from create_timesheet (optional)
delete_timesheet
Delete a timesheet.
Parameters:
timesheet_id(required): Timesheet ID (number)
Troubleshooting
"Missing required environment variables"
Ensure all three environment variables are set in your Claude Desktop config.
"TimePRO API error (401)"
Your API key may be invalid or expired. Generate a new one from TimePRO Admin > API Key.
"TimePro API error (403)"
Your user account may not have permission for the requested operation.
Connection issues
Verify the TIMEPRO_API_URL is correct and accessible from your network.
License
MIT
Available Tools
10 toolscreate_timesheetA
Create a new timesheet entry. Requires client, project, category, date, and time range. Returns the created timesheet ID.
| Name | Required | Description | Default |
|---|---|---|---|
| client_id | Yes | Client ID (use list_clients to find, e.g., 'SSW') | |
| project_id | Yes | Project ID (use list_projects to find) | |
| category_id | Yes | Category ID (use list_categories to find, e.g., 'DEV') | |
| date | Yes | Date of work in YYYY-MM-DD format | |
| start_time | Yes | Start time in HH:MM format (24-hour) | |
| end_time | Yes | End time in HH:MM format (24-hour) | |
| break_minutes | No | Break time in minutes (default: 0) | |
| location_id | No | Work location ID (optional) | |
| billable_id | No | Billable category ID (optional) | |
| note | No | Description of work done (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses that the tool creates a new entry (implying mutation) and returns an ID, which is helpful. However, it doesn't mention authentication requirements, rate limits, error conditions, or what happens if duplicate entries are attempted. For a creation tool with zero annotation coverage, this leaves significant behavioral gaps.
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 concise sentences that are front-loaded with the core purpose. Every word earns its place: first sentence defines the action and required inputs, second sentence states the return value. No wasted words or 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?
For a creation tool with 10 parameters, no annotations, and no output schema, the description is minimally adequate. It covers the basic purpose and return value, but lacks information about error handling, side effects, or system behavior that would be important for a mutation operation. The 100% schema coverage helps, but behavioral context is 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?
Schema description coverage is 100%, so the schema already documents all 10 parameters thoroughly. The description adds minimal value beyond the schema by listing required fields in natural language, but doesn't provide additional semantic context like format examples beyond what's in the schema descriptions. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create a new timesheet entry') and specifies the resource ('timesheet'), distinguishing it from siblings like delete_timesheet, update_timesheet, and get_timesheet. It explicitly mentions required fields (client, project, category, date, time range), which helps differentiate it from read-only siblings.
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 by stating required fields, but doesn't explicitly say when to use this tool versus alternatives like update_timesheet or get_timesheet_defaults. It mentions using list_clients, list_projects, and list_categories to find IDs, which provides some contextual guidance but doesn't define clear boundaries with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_timesheetC
Delete a timesheet by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| timesheet_id | Yes | The ID of the timesheet to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'Delete' implies a destructive, irreversible mutation, the description doesn't specify whether this requires special permissions, what happens to associated data, or if there are confirmation steps. For a destructive tool with zero annotation coverage, this is inadequate.
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, clear sentence with zero waste. It's front-loaded with the core action and resource, making it immediately scannable and efficient. Every word earns its place without 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?
For a destructive tool with no annotations and no output schema, the description is incomplete. It doesn't address critical context like error conditions (e.g., invalid ID), return values (e.g., success confirmation), or side effects. Given the high-stakes nature of deletion, more guidance is needed.
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 the single parameter 'timesheet_id' fully documented in the schema. The description adds no additional meaning beyond what the schema provides (e.g., format constraints, examples, or context about ID sourcing). Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Delete') and resource ('timesheet by its ID'), making the purpose immediately understandable. It doesn't explicitly differentiate from sibling tools like 'update_timesheet' or 'get_timesheet', but the verb 'Delete' strongly implies a destructive operation that distinguishes it from read 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 provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an existing timesheet), consequences of deletion, or when to choose deletion over other operations like updating. With siblings like 'update_timesheet' and 'get_timesheet', this lack of differentiation is a significant gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_timesheetC
Get full details of a specific timesheet by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| timesheet_id | Yes | The ID of the timesheet to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states it retrieves 'full details' but doesn't specify what those details include, whether it's a read-only operation, authentication requirements, error handling, or rate limits. The description is minimal and lacks essential behavioral context for a tool that presumably accesses sensitive timesheet data.
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, clear sentence with zero wasted words. It's front-loaded with the core purpose and efficiently communicates the essential action without unnecessary elaboration. This is an excellent example of conciseness.
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 annotations and no output schema, the description is insufficient. It doesn't explain what 'full details' includes, the response format, or any behavioral aspects. Given the complexity of timesheet data and the lack of structured metadata, the description should provide more context about what information is returned and how to interpret 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?
The input schema has 100% description coverage, with the single parameter 'timesheet_id' clearly documented. The description adds no additional parameter semantics beyond what the schema provides (it only mentions 'by its ID' which the schema already covers). This meets the baseline score of 3 when schema coverage is high.
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 ('Get full details') and resource ('a specific timesheet by its ID'), making the purpose immediately understandable. It doesn't explicitly differentiate from sibling tools like 'list_timesheets' or 'get_timesheet_defaults', but the specificity of retrieving by ID provides some implicit distinction.
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 no guidance on when to use this tool versus alternatives. It doesn't mention when to choose 'get_timesheet' over 'list_timesheets' for browsing multiple timesheets, or 'get_timesheet_defaults' for default settings. There are no prerequisites, exclusions, or context about appropriate use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_timesheet_defaultsA
Get default values for creating a timesheet, including last used client, project, and rates. Call this before creating a timesheet to get sensible defaults.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Date for the timesheet in YYYY-MM-DD format |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It implies a read-only operation ('Get default values') but doesn't explicitly state safety aspects like whether it requires authentication, has rate limits, or what happens on errors. The description adds some context about the purpose but lacks detailed behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with zero waste: the first states the purpose and examples, the second provides usage guidance. Every word earns its place, and it's front-loaded with the core functionality.
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 low complexity (1 parameter, no output schema, no annotations), the description is reasonably complete. It covers purpose, usage, and examples of returned defaults. However, without annotations or output schema, it could benefit from more detail on return format or error handling, but it's adequate for this simple 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%, so the schema already documents the single 'date' parameter with its format. The description doesn't add any parameter-specific information beyond what the schema provides, such as explaining why the date matters for defaults. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Get default values') and resource ('for creating a timesheet'), with explicit examples of what defaults are included ('last used client, project, and rates'). It distinguishes this from sibling tools like 'create_timesheet' by focusing on preparatory data retrieval rather than creation.
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 explicit guidance on when to use this tool: 'Call this before creating a timesheet to get sensible defaults.' This directly contrasts with sibling tools like 'create_timesheet' and 'get_timesheet', establishing a clear pre-creation workflow context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_categoriesB
Get available timesheet categories (e.g., Development, Meeting, Admin). These categorize the type of work done.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the tool 'gets' categories, implying a read-only operation, but doesn't disclose behavioral traits like whether it requires authentication, returns a list or object, includes pagination, or has rate limits. For a tool with zero annotation coverage, this leaves significant gaps in understanding how it behaves.
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 concise sentences with zero waste: the first states the purpose and examples, and the second adds context about usage. It's front-loaded with the core function, making it easy to scan and understand quickly.
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 low complexity (0 parameters, no output schema, no annotations), the description is adequate but not complete. It explains what categories are and provides examples, but lacks details on return format (e.g., list structure) or any behavioral constraints. For a simple read tool, this is minimally viable but could be more informative.
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 0 parameters with 100% coverage, so no parameter documentation is needed. The description adds value by explaining what the tool returns (timesheet categories with examples), which compensates for the lack of output schema. This exceeds the baseline of 3 for high 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 the verb ('Get') and resource ('available timesheet categories'), and provides concrete examples (Development, Meeting, Admin) that illustrate what the tool returns. It distinguishes itself from siblings like list_timesheets by focusing on categories rather than timesheet entries. However, it doesn't explicitly contrast with other list_* tools (e.g., list_clients, list_projects), which keeps it from a perfect score.
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 by mentioning that categories 'categorize the type of work done,' suggesting this tool is for retrieving metadata needed to classify timesheets. However, it lacks explicit guidance on when to use this versus alternatives (e.g., before creating/updating a timesheet) or any prerequisites. The context is clear but not fully directive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_clientsC
Search for clients to use in timesheets. Returns a list of clients with their IDs and names.
| Name | Required | Description | Default |
|---|---|---|---|
| search_text | No | Optional text to filter clients by name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but lacks behavioral details. It mentions returning 'a list of clients with their IDs and names', which gives some output context, but doesn't disclose critical traits like pagination, rate limits, authentication needs, or error handling. This is inadequate for a tool with no annotation coverage.
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 and well-structured in two sentences: the first states the purpose and context, the second specifies the return format. There is no wasted text, and it's front-loaded with the main action. However, it could be slightly more efficient by combining ideas.
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 low complexity (one optional parameter, no output schema, no annotations), the description is minimally complete. It covers the basic purpose and return format, but lacks details on usage guidelines and behavioral transparency, which are needed for full context. It's adequate but has clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no parameter-specific information beyond what the input schema provides. Since schema description coverage is 100% (the 'search_text' parameter is fully documented in the schema), the baseline score of 3 applies. The description doesn't compensate with additional semantics, but doesn't need to given the high 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 the tool's purpose: 'Search for clients to use in timesheets' specifies the verb (search) and resource (clients), with the context of timesheets. It distinguishes from siblings like list_categories or list_projects by focusing on clients, though it doesn't explicitly differentiate from other list_ tools beyond the resource type.
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 minimal guidance: it mentions 'to use in timesheets' which implies a context, but offers no explicit when-to-use rules, alternatives, or exclusions. For example, it doesn't clarify if this should be used before creating a timesheet versus other client-related operations, leaving usage vague.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_locationsB
Get available work locations (e.g., Office, Client Site, Remote).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states it 'gets' data (implying read-only), but doesn't disclose any behavioral traits like whether this requires authentication, rate limits, freshness of data, or what format the results come in. The description is minimal and doesn't compensate for missing 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 with zero waste. Front-loaded with the core action and resource, followed by helpful examples. 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?
For a simple read-only list tool with 0 parameters, the description is adequate but minimal. Without annotations or output schema, it doesn't describe return format, pagination, or error conditions. It meets minimum viable standards but leaves behavioral aspects unspecified.
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 0 parameters with 100% schema description coverage, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, maintaining focus on the tool's purpose. Baseline for 0 parameters is 4.
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 ('Get') and resource ('available work locations'), with examples provided ('Office, Client Site, Remote'). It distinguishes from most siblings (timesheet-related tools) but doesn't explicitly differentiate from list_categories/list_clients/list_projects which are also list 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?
No guidance on when to use this tool versus alternatives. While the examples suggest it's for location types, there's no mention of prerequisites, when this data is needed, or how it relates to other list_* tools for timesheet management.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsB
Get projects for a specific client. Use this after selecting a client to find available projects.
| Name | Required | Description | Default |
|---|---|---|---|
| client_id | Yes | The client ID to get projects for (e.g., 'SSW') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. The description mentions it 'gets projects' but doesn't specify whether this is a read-only operation, how results are returned (e.g., pagination, sorting), error conditions, or any rate limits. For a tool with zero annotation coverage, this leaves significant behavioral gaps.
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 that are front-loaded with the core purpose. Both sentences add value: the first states what the tool does, and the second provides usage guidance. There's no wasted text, though it could be slightly more 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 low complexity (one parameter, no output schema, no annotations), the description is minimally adequate. It covers the basic purpose and usage context but lacks details on behavioral aspects like return format or error handling. Without annotations or output schema, the description should do more to compensate, but it's not entirely 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?
The input schema has 100% description coverage, with the single parameter 'client_id' fully documented in the schema. The description adds no additional parameter semantics beyond what's in the schema, so it meets the baseline of 3 where the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Get') and resource ('projects'), and specifies the scope ('for a specific client'). It doesn't explicitly differentiate from sibling tools like 'list_clients' or 'list_timesheets', but the client-specific focus provides some implicit distinction.
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 some usage context ('Use this after selecting a client to find available projects'), which implies a workflow sequence. However, it doesn't explicitly state when to use this tool versus alternatives like 'list_clients' or 'list_timesheets', nor does it provide exclusion criteria or prerequisites beyond the implied client selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_timesheetsA
List timesheets for the current user within a date range. Returns summary information for each timesheet.
| Name | Required | Description | Default |
|---|---|---|---|
| start_date | Yes | Start date in YYYY-MM-DD format | |
| end_date | Yes | End date in YYYY-MM-DD format |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions the tool returns 'summary information for each timesheet', which adds some behavioral context about output format. However, it lacks details on permissions, rate limits, pagination, or error handling, which are important for a read operation with user-specific data.
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 the core purpose and followed by output details. Every word earns its place with zero waste, making it highly efficient 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?
Given the tool's low complexity (2 parameters, no nested objects) and 100% schema coverage, the description is adequate but incomplete. It lacks an output schema, and with no annotations, it should provide more behavioral context (e.g., authentication needs, data scope) to fully guide the 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 description coverage is 100%, with both parameters ('start_date', 'end_date') fully documented in the schema. The description adds no additional parameter semantics beyond implying date-range filtering, so it meets the baseline of 3 where the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('List timesheets'), target resource ('timesheets'), and scope ('for the current user within a date range'), distinguishing it from siblings like 'get_timesheet' (single) and 'create_timesheet' (write). It precisely communicates what the tool does without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving timesheets within a date range, but does not explicitly state when to use this tool versus alternatives like 'get_timesheet' (for a single timesheet) or other list tools (e.g., 'list_projects'). No exclusions or prerequisites are mentioned, leaving some context for the agent to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_timesheetB
Update an existing timesheet. All fields except timesheet_id are optional - only provided fields will be updated.
| Name | Required | Description | Default |
|---|---|---|---|
| timesheet_id | Yes | The ID of the timesheet to update | |
| client_id | No | Client ID | |
| project_id | No | Project ID | |
| category_id | No | Category ID | |
| date | No | Date of work in YYYY-MM-DD format | |
| start_time | No | Start time in HH:MM format (24-hour) | |
| end_time | No | End time in HH:MM format (24-hour) | |
| break_minutes | No | Break time in minutes | |
| location_id | No | Work location ID | |
| billable_id | No | Billable category ID | |
| note | No | Description of work done |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states that all fields except timesheet_id are optional and only provided fields will be updated, which is useful. However, it doesn't cover critical aspects like required permissions, whether the update is reversible, error handling, or response format, leaving significant gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action and key constraint (optional fields). Every word earns its place with no waste, making it 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 complexity of an 11-parameter mutation tool with no annotations and no output schema, the description is incomplete. It lacks details on behavioral traits (e.g., permissions, side effects), response format, and error conditions, which are crucial for safe and effective use by an AI 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 description coverage is 100%, so the schema already documents all 11 parameters thoroughly. The description adds minimal value by noting that timesheet_id is required and other fields are optional, but this is largely redundant with the schema's required array and property descriptions. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('update') and resource ('existing timesheet'), making the purpose unambiguous. It distinguishes from siblings like 'create_timesheet' and 'delete_timesheet' by specifying it's for updates, though it doesn't explicitly contrast with 'get_timesheet' or others.
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 updating timesheets but doesn't explicitly state when to use this tool versus alternatives like 'create_timesheet' or 'get_timesheet'. It mentions that only provided fields are updated, which gives some context, but lacks clear guidance on prerequisites or exclusions.
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.
10 tool updates
v1.0.0- First observed
create_timesheet - First observed
delete_timesheet - First observed
get_timesheet - First observed
get_timesheet_defaults - First observed
list_categories - First observed
list_clients - First observed
list_locations - First observed
list_projects - First observed
list_timesheets - First observed
update_timesheet
TDQS
Each tool has a clearly distinct purpose with no ambiguity. Tools are organized around specific resources (timesheets, clients, projects, categories, locations) and actions (create, delete, get, list, update), making it easy for an agent to select the correct one without confusion.
All tool names follow a consistent verb_noun pattern using snake_case, such as create_timesheet, list_clients, and update_timesheet. This predictability enhances readability and usability for agents navigating the tool set.
With 10 tools, the server is well-scoped for timesheet management, covering essential operations like CRUD for timesheets and listing related resources. Each tool serves a clear purpose without redundancy, making the count appropriate for the domain.
The tool set provides complete coverage for timesheet management, including full CRUD operations (create, get, update, delete, list), support for related entities (clients, projects, categories, locations), and a utility tool for defaults. There are no obvious gaps that would hinder agent workflows.
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
- mcp-serverOAuthio.klokin
MCP server exposing klokin time-tracking operations (employees, time entries, stores) to AI clients.
MCP server that lets AI assistants use all OneSchema features exposed via the public API.
MCP server providing attendance data queries via the CloudTime API.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA comprehensive MCP server for time tracking, project management, and AI-powered memory storage using semantic search. It enables users to log time, manage client billing, and capture shared or personal ideas through integrated tools and team collaboration features.1-
- AlicenseAqualityAmaintenanceAn MCP server that provides AI assistants with access to the EARLY time tracking public API, enabling time entry management, activity management, and report generation through natural language.1422MIT
- AlicenseAqualityCmaintenanceThis MCP server allows AI assistants to interact with the Beebole REST API for time tracking management.4MIT
- FlicenseNot gradedqualityDmaintenanceAn MCP server for controlling the TimeLiner project management system, enabling AI clients to manage projects, tasks, members, and more via natural language.-
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/calumjs/TimePRO.MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server