TimezoneToolkit MCP Server
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., "@TimezoneToolkit MCP ServerConvert 9 AM PST to Tokyo time"
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.
Available Tools
Tool | Description |
convert_time | Convert a time from one timezone to another |
get_current_time | Get the current time in a specified timezone |
calculate_sunrise_sunset | Calculate sunrise, sunset, and twilight times for a specific location and date |
calculate_moon_phase | Calculate moon phase for a specific date |
calculate_timezone_difference | Calculate the time difference between two timezones |
list_timezones | List available IANA timezones, optionally filtered by region |
calculate_countdown | Calculate time remaining until a specific date/event |
calculate_business_days | Calculate business days between two dates (excluding weekends) |
format_date | Format a date in various styles |
Related MCP server: Chrono MCP
π Features
π Basic Timezone Conversion
Convert times between any IANA timezone
Get current time in any timezone
Format time in various styles (short, medium, full)
Calculate time differences in hours/minutes
List available IANA timezones
π Sunrise/Sunset and Astronomical Calculations
Calculate sunrise and sunset times for any location
Include twilight times (civil, nautical, astronomical)
Calculate day length for any location/date
Calculate moon phases for any date
π Date and Time Utilities
Format dates in various styles (short, medium, full, ISO, relative)
Calculate business days between dates
Create countdown timers to future events
Support for multiple locales and timezones
π» Installation
Prerequisites
Node.js 18.x or higher - The TimezoneToolkit MCP server requires Node.js 18+ to run properly.
Setup
To run the TimezoneToolkit MCP server using Node.js npx, use the following command:
npx -y @cicatriz/timezone-toolkit@latestClient-Specific Installation
Cursor
To add this server to Cursor IDE:
Go to Cursor Settings > MCP
Click + Add new Global MCP Server
Add the following configuration to your global
.cursor/mcp.jsonfile:
{
"mcpServers": {
"timezone-toolkit": {
"command": "npx",
"args": [
"-y",
"@cicatriz/timezone-toolkit"
]
}
}
}See the Cursor documentation for more details.
Windsurf
To set up MCP with Cascade, navigate to Windsurf - Settings > Advanced Settings or Command Palette > Open Windsurf Settings Page.
Scroll down to the Cascade section and add the TimezoneToolkit MCP server directly in mcp_config.json:
{
"mcpServers": {
"timezone-toolkit": {
"command": "npx",
"args": [
"-y",
"@cicatriz/timezone-toolkit"
]
}
}
}Cline
Add the following JSON manually to your cline_mcp_settings.json via Cline MCP Server setting:
{
"mcpServers": {
"timezone-toolkit": {
"command": "npx",
"args": [
"-y",
"@cicatriz/timezone-toolkit"
]
}
}
}Roo Code
Access the MCP settings by clicking Edit MCP Settings in Roo Code settings or using the Roo Code: Open MCP Config command in VS Code's command palette:
{
"mcpServers": {
"timezone-toolkit": {
"command": "npx",
"args": [
"-y",
"@cicatriz/timezone-toolkit"
]
}
}
}Claude
Add the following to your claude_desktop_config.json file:
{
"mcpServers": {
"timezone-toolkit": {
"command": "npx",
"args": [
"-y",
"@cicatriz/timezone-toolkit"
]
}
}
}See the Claude Desktop documentation for more details.
CLI
You can also run it as CLI by running the following command:
npx -y @cicatriz/timezone-toolkit@latestAlternative Installation Methods
Install from npm
# Install globally from npm
npm install -g @cicatriz/timezone-toolkit
# Run the server
timezone-toolkitManual Installation
# Clone the repository
git clone https://github.com/Cicatriiz/timezone-toolkit.git
cd timezone-toolkit
# Install dependencies
npm install
# Build the project
npm run build
# Run the server
node dist/index.js㪠Usage with Claude Desktop
After installation, you can use TimezoneToolkit with Claude Desktop:
Open Claude Desktop
Start a new conversation
Click the hammer icon to see available tools
Select any of the TimezoneToolkit tools
π API Access
TimezoneToolkit also provides a RESTful API for accessing its functionality without Claude Desktop:
Starting the API Server
# Using npm
npm install -g @cicatriz/timezone-toolkit
node server.jsThe API server will be available at http://localhost:3000
API Endpoints
GET /api/tools- List all available toolsPOST /api/convert-time- Convert time between timezonesPOST /api/current-time- Get current time in a timezonePOST /api/sunrise-sunset- Calculate sunrise/sunset timesPOST /api/moon-phase- Calculate moon phasePOST /api/timezone-difference- Calculate timezone differencePOST /api/list-timezones- List available timezonesPOST /api/countdown- Calculate countdown to a datePOST /api/business-days- Calculate business days between datesPOST /api/format-date- Format a date
For detailed API documentation, see the API README.
Example Queries
"What time is it now in Tokyo?"
"Convert 3:00 PM New York time to London time"
"What time is sunrise tomorrow in San Francisco?"
"When is sunset today in Paris?"
"What's the current moon phase?"
"What's the time difference between New York and Tokyo?"
"Show me a list of European timezones"
"How many business days are there between March 1 and April 15?"
"Format today's date in French locale"
"How much time is left until New Year's Eve?"
π§ Available Tools
1. convert_time
Converts a time from one timezone to another.
Parameters:
time(optional): Time to convert (ISO string or natural language). Defaults to current time if not provided.fromTimezone: Source IANA timezone name (e.g., 'America/New_York')toTimezone: Target IANA timezone name (e.g., 'Europe/London')format(optional): Output format ('short', 'medium', 'full'). Defaults to 'medium'
Example:
{
"time": "2023-12-25T14:30:00",
"fromTimezone": "America/New_York",
"toTimezone": "Asia/Tokyo",
"format": "full"
}Response:
{
"originalTime": "2023-12-25T14:30:00.000-05:00",
"convertedTime": "Tuesday, December 26, 2023, 4:30:00 AM Japan Standard Time",
"fromTimezone": "America/New_York",
"toTimezone": "Asia/Tokyo",
"timeDifference": "+14 hours"
}2. get_current_time
Gets the current time in a specified timezone.
Parameters:
timezone: IANA timezone name (e.g., 'Asia/Tokyo')format(optional): Output format ('short', 'medium', 'full'). Defaults to 'medium'
Example:
{
"timezone": "Europe/London",
"format": "full"
}Response:
{
"currentTime": "Monday, March 25, 2025, 10:15:30 PM British Summer Time",
"timezone": "Europe/London",
"utcOffset": "+01:00"
}3. calculate_sunrise_sunset
Calculates sunrise, sunset, and twilight times for a specific location and date.
Parameters:
date(optional): Date for calculation (ISO string or natural language). Defaults to current date.latitude: Latitude of the location (-90 to 90)longitude: Longitude of the location (-180 to 180)timezone(optional): IANA timezone name (e.g., 'Europe/Paris'). Defaults to UTC.
Example:
{
"date": "2023-06-21",
"latitude": 37.7749,
"longitude": -122.4194,
"timezone": "America/Los_Angeles"
}Response:
{
"date": "2023-06-21",
"sunrise": "05:48:11 AM",
"sunset": "08:35:13 PM",
"civilTwilight": {
"dawn": "05:17:22 AM",
"dusk": "09:06:02 PM"
},
"nauticalTwilight": {
"dawn": "04:38:43 AM",
"dusk": "09:44:41 PM"
},
"astronomicalTwilight": {
"dawn": "03:52:50 AM",
"dusk": "10:30:34 PM"
},
"dayLength": "14 hours 47 minutes",
"timezone": "America/Los_Angeles"
}4. calculate_moon_phase
Calculates moon phase for a specific date.
Parameters:
date(optional): Date for calculation (ISO string or natural language). Defaults to current date.timezone(optional): IANA timezone name (e.g., 'Europe/Paris'). Defaults to UTC.
Example:
{
"date": "2023-01-06",
"timezone": "UTC"
}Response:
{
"date": "2023-01-06",
"phase": 0.998,
"phaseName": "Full Moon",
"illumination": 0.997,
"timezone": "UTC"
}5. calculate_timezone_difference
Calculates the time difference between two timezones.
Parameters:
fromTimezone: Source IANA timezone name (e.g., 'America/New_York')toTimezone: Target IANA timezone name (e.g., 'Europe/London')
Example:
{
"fromTimezone": "America/New_York",
"toTimezone": "Asia/Tokyo"
}Response:
{
"fromTimezone": "America/New_York",
"toTimezone": "Asia/Tokyo",
"timeDifference": "+14 hours",
"currentTimeFrom": "3/25/2025, 6:15 PM",
"currentTimeTo": "3/26/2025, 8:15 AM",
"hoursDifference": 14,
"minutesDifference": 0,
"totalMinutesDifference": 840,
"direction": "ahead"
}6. list_timezones
Lists available IANA timezones, optionally filtered by region.
Parameters:
region(optional): Filter timezones by region (e.g., 'America', 'Europe', 'Asia')
Example:
{
"region": "Europe"
}Response:
{
"timezones": [
{
"timezone": "Europe/Amsterdam",
"currentTime": "3/25/2025, 11:15 PM",
"offset": "+02:00"
},
{
"timezone": "Europe/Berlin",
"currentTime": "3/25/2025, 11:15 PM",
"offset": "+02:00"
},
// Additional European timezones...
],
"count": 7,
"region": "Europe"
}7. calculate_countdown
Calculates time remaining until a specific date/event.
Parameters:
targetDate: Target date/time (ISO string or natural language)timezone(optional): IANA timezone name (e.g., 'America/New_York'). Defaults to system timezone.title(optional): Title or name of the event
Example:
{
"targetDate": "2025-12-31T23:59:59",
"timezone": "UTC",
"title": "New Year's Eve"
}Response:
{
"title": "New Year's Eve",
"targetDate": "2025-12-31T23:59:59.000Z",
"formattedTargetDate": "Wednesday, December 31, 2025, 11:59:59 PM GMT",
"currentDate": "2025-03-25T18:15:30.000Z",
"timezone": "UTC",
"isPast": false,
"countdown": "9 months, 6 days, 5 hours, 44 minutes, 29 seconds",
"remaining": {
"years": 0,
"months": 9,
"days": 6,
"hours": 5,
"minutes": 44,
"seconds": 29,
"totalDays": 281,
"totalHours": 6749,
"totalMinutes": 404969,
"totalSeconds": 24298169
}
}8. calculate_business_days
Calculates business days between two dates (excluding weekends).
Parameters:
startDate: Start date (ISO string or natural language)endDate: End date (ISO string or natural language)timezone(optional): IANA timezone name (e.g., 'America/New_York'). Defaults to system timezone.excludeHolidays(optional): Whether to exclude common holidays (US holidays only). Defaults to false.
Example:
{
"startDate": "2023-05-01",
"endDate": "2023-05-31",
"timezone": "UTC",
"excludeHolidays": true
}Response:
{
"startDate": "2023-05-01",
"endDate": "2023-05-31",
"businessDays": 22,
"calendarDays": 31,
"weekendDays": 8,
"holidaysExcluded": 1,
"timezone": "UTC",
"businessDatesIncluded": ["2023-05-01", "2023-05-02", "2023-05-03", "2023-05-04", "2023-05-05", "2023-05-08", "2023-05-09", "2023-05-10", "2023-05-11", "2023-05-12", "2023-05-15", "2023-05-16", "2023-05-17", "2023-05-18", "2023-05-19", "2023-05-22", "2023-05-23", "2023-05-24", "2023-05-25", "2023-05-26", "2023-05-30", "2023-05-31"]
}9. format_date
Formats a date in various styles.
Parameters:
date: Date to format (ISO string or natural language). Defaults to current date.timezone(optional): IANA timezone name (e.g., 'America/New_York'). Defaults to system timezone.format(optional): Output format ('short', 'medium', 'full', 'iso', 'relative'). Defaults to 'medium'.locale(optional): Locale for formatting (e.g., 'en-US', 'fr', 'de'). Defaults to 'en-US'.
Example:
{
"date": "2023-12-25",
"timezone": "Europe/Paris",
"format": "full",
"locale": "fr"
}Response:
{
"originalDate": "2023-12-25",
"parsedDate": "2023-12-25T00:00:00.000+01:00",
"formattedDate": "lundi 25 dΓ©cembre 2023",
"formattedTime": "00:00:00 heure normale d'Europe centrale",
"formattedDateTime": "lundi 25 dΓ©cembre 2023 Γ 00:00:00 heure normale d'Europe centrale",
"dayOfWeek": "lundi",
"dayOfMonth": 25,
"month": "dΓ©cembre",
"year": 2023,
"timezone": "Europe/Paris",
"locale": "fr",
"format": "full"
}π¬ Example Queries in Claude Desktop
"What time is it now in Tokyo?"
"Convert 3:00 PM New York time to London time"
"What time is sunrise tomorrow in San Francisco?"
"When is sunset today in Paris?"
"What's the current moon phase?"
"What's the time difference between New York and Tokyo?"
"Show me a list of European timezones"
"How many business days are there between March 1 and April 15?"
"Format today's date in French locale"
"How much time is left until New Year's Eve?"
π» Technical Details
Architecture
TimezoneToolkit is built using the Model Context Protocol (MCP) specification, which allows it to integrate seamlessly with Claude Desktop. The server is implemented in TypeScript and uses the following architecture:
Core Services: Implements timezone conversion, astronomical calculations, and date formatting
MCP Server: Handles JSON-RPC requests from Claude Desktop
Utility Functions: Provides helper functions for date/time operations
Testing Framework: Includes a comprehensive test script for verifying functionality
Dependencies
Luxon - For all date/time handling and timezone operations
SunCalc - For sunrise/sunset and astronomical calculations
@modelcontextprotocol/sdk - For MCP server implementation
Requirements
Node.js 18.x or higher
npm 9.x or higher
Claude Desktop (latest version)
π Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Fork the repository
Create your feature branch (
git checkout -b feature/amazing-feature)Commit your changes (
git commit -m 'Add some amazing feature')Push to the branch (
git push origin feature/amazing-feature)Open a Pull Request
π§ͺ Testing
TimezoneToolkit includes a comprehensive test script that can be used to verify the functionality of the MCP server. The test script can be used to test the local build, the version flag, list all available tools, test specific tools, and test the npm package after publishing.
Running Tests
# Test the local build (default)
node test-server.js
# Test a specific tool
node test-server.js --tool=calculate_sunrise_sunset
# List all available tools
node test-server.js --list
# Test the version flag
node test-server.js --test-version
# Test the published npm package (after publishing)
node test-server.js --npmThe test script will output detailed information about the test results, including whether the response format is correct and whether the content is valid JSON.
Example Output
Testing local build...
Running: node /path/to/timezone-toolkit/dist/index.js
Sending request: {
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_current_time",
"arguments": {
"timezone": "America/New_York"
}
}
}
Response: {
"result": {
"content": [
{
"type": "text",
"text": "{\n \"currentTime\": \"Mar 25, 2025, 9:54 PM\",\n \"timezone\": \"America/New_York\",\n \"utcOffset\": \"-04:00\"\n}"
}
]
},
"jsonrpc": "2.0",
"id": 1
}
β
Response format is correct (has content array)
β
Content is valid JSON: {
currentTime: 'Mar 25, 2025, 9:54 PM',
timezone: 'America/New_York',
utcOffset: '-04:00'
}
β
Test completed successfully!π Troubleshooting
Common Issues
Tool not showing up in Claude Desktop
Make sure the server is properly configured in Claude Desktop settings
Check that the path to the index.js file is correct
Restart Claude Desktop
Incorrect timezone calculations
Verify that you're using valid IANA timezone names (e.g., 'America/New_York', not 'EST')
Check for daylight saving time transitions which can affect calculations
Sunrise/sunset calculations not working
Ensure latitude and longitude values are valid (-90 to 90 for latitude, -180 to 180 for longitude)
Some extreme northern/southern locations may have periods with no sunrise/sunset
π Privacy & Security
TimezoneToolkit processes all data locally and does not send any information to external servers. Your timezone data and queries remain private on your device.
π License
ISC
π¨βπ» Author
Cicatriz
Available Tools
9 toolscalculate_business_daysB
Calculate business days between two dates (excluding weekends)
| Name | Required | Description | Default |
|---|---|---|---|
| endDate | Yes | End date (ISO string or natural language) | |
| timezone | No | IANA timezone name (e.g., 'America/New_York'). Defaults to system timezone. | |
| startDate | Yes | Start date (ISO string or natural language) | |
| excludeHolidays | No | Whether to exclude common holidays (US holidays only). Defaults to false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It states 'excluding weekends', which is a core behavior, but it omits important details such as how holidays are handled (only if excludeHolidays is true, and US-only), whether dates are inclusive, and how timezone affects the calculation. These gaps leave significant ambiguity for the agent.
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, focused sentence that front-loads the main purpose and key behavior. Every word earns its place; there is no filler 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?
The tool is moderately complex with 4 parameters and no output schema. The description covers the basic purpose but lacks clarity on edge cases such as date inclusivity, holiday default behavior, and return value. While the schema fills in parameter details, the description alone is not fully complete for safe invocation.
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 descriptions provide 100% coverage for all parameters, including startDate, endDate, timezone, and excludeHolidays. The description adds no parameter-level meaning beyond the schema, so a 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 a specific verb ('Calculate') and resource ('business days between two dates'), and explicitly notes the key behavior ('excluding weekends'). This distinguishes it from sibling tools like convert_time or calculate_sunrise_sunset, which serve different purposes.
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 does not provide any guidance on when to use this tool versus alternatives. It implies it's for business day calculations but doesn't mention scenarios, prerequisites, or contrast with calendar-day calculations or other sibling tools. No exclusions or explicit when-to-use advice is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_countdownB
Calculate time remaining until a specific date/event
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Title or name of the event (optional) | |
| timezone | No | IANA timezone name (e.g., 'America/New_York'). Defaults to system timezone. | |
| targetDate | Yes | Target date/time (ISO string or natural language) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must fully disclose behavioral traits, but it only says 'calculate time remaining' without explaining the output format, handling of past dates, precision, or timezone impact. This leaves significant ambiguity for the agent.
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 with no redundant words. It earns its place by clearly stating the core function without 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 lack of an output schema and annotations, the description fails to explain the return value (e.g., days vs seconds, negative values for past dates) or any edge cases. A simple tool still requires this essential context to be used 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 100% parameter description coverage, so the baseline is 3. The tool description adds no extra semantic meaning beyond what the schema already provides, but it does not conflict with it.
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 function with a specific verb ('Calculate') and a specific resource ('time remaining until a specific date/event'). This distinguishes it from sibling tools that handle conversions, current time, or related calculations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus its time-related siblings, nor any exclusions or alternatives. It simply restates the basic functionality without contextual cues.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_moon_phaseC
Calculate moon phase for a specific date
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Date for calculation (ISO string or natural language). Defaults to current date. | |
| timezone | No | IANA timezone name (e.g., 'Europe/Paris'). Defaults to UTC. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description gives no behavioral details such as calculation method, handling of timezone, what output to expect, or any edge conditions. This leaves the agent fully in the dark about the tool's 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 sentence with no redundancy or wasted words, making it very concise. However, it lacks any structural elements (e.g., separate sections) but that is acceptable for a tool of this simplicity.
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?
There is no output schema, so the description would need to explain what the tool returns, but it does not. While the tool is simple with only two parameters, the missing return-value information and lack of any usage context make it 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 fully documents both parameters (date and timezone) with helpful descriptions and defaults, so the baseline score of 3 applies. The description adds no additional parameter meaning beyond the general notion of a date.
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 the specific verb 'calculate' with resource 'moon phase' and scope 'specific date', clearly stating the tool's purpose and distinguishing it from sibling time/date 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?
No explicit guidance on when to use this tool versus alternatives. The description merely states what it does; it does not mention exclusions or present alternative tools for comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_sunrise_sunsetB
Calculate sunrise, sunset, and twilight times for a specific location and date
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Date for calculation (ISO string or natural language). Defaults to current date. | |
| latitude | Yes | Latitude of the location (-90 to 90) | |
| timezone | No | IANA timezone name (e.g., 'Europe/Paris'). Defaults to UTC. | |
| longitude | Yes | Longitude of the location (-180 to 180) |
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. It states what is calculated but does not mention output format, timezone handling, or twilight definitions. The schema notes defaults, but the description adds no 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?
The description is a single, front-loaded sentence with a direct action verb and no unnecessary words. It is appropriately 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?
Given the absence of both annotations and an output schema, the description is underspecified. An agent cannot determine what the return value looks like, whether times are localized, or what twilight encompasses, making the tool incomplete in 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% with descriptions for all four parameters. The description adds no additional parameter semantics beyond generic references to 'location and date', so it relies on 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 uses a specific verb (Calculate) and names the exact outputs (sunrise, sunset, twilight times) plus scope (specific location and date). This clearly distinguishes it from sibling tools like calculate_moon_phase or convert_time.
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?
Context implies this tool is for astronomical time calculations, but there is no explicit guidance on when to use it versus alternatives. No exclusions or sibling tool references are provided, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_timezone_differenceB
Calculate the time difference between two timezones
| Name | Required | Description | Default |
|---|---|---|---|
| toTimezone | Yes | Target IANA timezone name (e.g., 'Europe/London') | |
| fromTimezone | Yes | Source IANA timezone name (e.g., 'America/New_York') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavioral disclosure. It merely restates the tool's name/function without explaining key behaviors such as whether DST is considered, whether the result is a decimal number of hours, or whether the difference depends on the current date. This is a minimal statement with no added 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?
The description is a single, concise sentence with no redundant content. It is front-loaded with the main action and resource, making it easy to skim.
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 (2 parameters, no nested objects) but there is no output schema, so the description should clarify what is returned. It does not mention the return format, units, or DST handling. Given the lack of annotations and output schema, the description is incomplete for a fully informed 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% for both parameters, with clear examples of IANA timezone names. The description text adds no parameter information, but the schema already provides full clarity, so 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 uses the specific verb 'calculate' with the resource 'time difference between two timezones', clearly distinguishing it from siblings like convert_time, get_current_time, and list_timezones. It precisely states what the tool does.
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 when to use the tool (when you need the time difference between timezones) but provides no explicit guidance on alternatives or exclusions. The context of sibling tools makes the purpose clear, but the description itself offers no comparison or when-not-to-use advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_timeB
Convert a time from one timezone to another
| Name | Required | Description | Default |
|---|---|---|---|
| time | No | Time to convert (ISO string or natural language). Defaults to current time if not provided. | |
| format | No | Output format. Defaults to 'medium' | |
| toTimezone | Yes | Target IANA timezone name (e.g., 'Europe/London') | |
| fromTimezone | Yes | Source IANA timezone name (e.g., 'America/New_York') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only restates the basic conversion action and fails to mention key traits such as defaulting to current time, output format variations, or error handling when timezone names are 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?
The description is a single, clear sentence with no filler or redundancy. It is appropriately front-loaded 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 tool is simple and the schema covers all parameters, making the description minimally viable for invocation. However, with no output schema or annotations, and no mention of return values or usage alternatives, the description falls short of being fully 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 input schema already provides 100% coverage with descriptions for all four parameters, including the 'time' default and the 'format' enum. The description adds no parameter-level meaning beyond what the schema provides, so the 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 uses a specific verb and resource ('Convert a time from one timezone to another'), making the core purpose clear. However, it does not explicitly distinguish this from sibling tools like calculate_timezone_difference or get_current_time.
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. There are no exclusions, prerequisites, or examples of appropriate use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
format_dateB
Format a date in various styles
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Date to format (ISO string or natural language). Defaults to current date. | |
| format | No | Output format. Defaults to 'medium' | |
| locale | No | Locale for formatting (e.g., 'en-US', 'fr', 'de'). Defaults to 'en-US'. | |
| timezone | No | IANA timezone name (e.g., 'America/New_York'). Defaults to system timezone. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must communicate that this is a pure, non-destructive formatting operation. It does not state what the tool returns (a string), whether it respects timezone/locale defaults, or if there are any 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?
The description is a single concise sentence with no filler. It is front-loaded and appropriately sized for a simple utility, though it could include a few more specifics 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?
The tool has four parameters and no output schema, and the description is minimal. While the schema covers parameters well, the description fails to mention the return type or the meaning of the format options, leaving important gaps for 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?
The schema thoroughly describes all four parameters, including defaults and enums (100% coverage). The description adds no extra semantic detail 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 clearly identifies the operation: formatting a date. However, 'various styles' is imprecise and relies on the schema for the actual format enum. It doesn't explicitly distinguish this tool from sibling date/time 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?
No usage guidance is provided. There is no mention of when to prefer format_date over convert_time or get_current_time, nor any exclusions. The intended use is only implied by the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_current_timeA
Get the current time in a specified timezone
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Output format. Defaults to 'medium' | |
| timezone | Yes | IANA timezone name (e.g., 'Asia/Tokyo'). Defaults to system timezone if not provided. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description is the sole carrier of behavioral context, yet it only restates the purpose without disclosing behavior such as time source, DST handling, or return format. It adds no operational detail beyond what the name already implies.
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 conveys the purpose without any filler. It is appropriately sized for a simple tool.
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 tool with full schema parameter documentation, the description plus schema is sufficient for an agent to select and invoke it correctly. It lacks specifics about output format, but no output schema exists and the operation is straightforward.
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 both parameters thoroughly. The description adds no new parameter details beyond referencing 'specified timezone', matching the baseline 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 uses a specific verb ('Get') and resource ('current time') with a timezone qualifier, clearly distinguishing it from siblings like convert_time and format_date. It states exactly what the tool does.
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 the tool is for obtaining the current time in a specific timezone, providing clear context for when to use it. It doesn't explicitly mention alternatives, but no sibling tool offers the same current-time capability.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_timezonesA
List available IANA timezones, optionally filtered by region
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | Filter timezones by region (e.g., 'America', 'Europe', 'Asia') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden. 'List' clearly implies a read-only operation, but the description does not disclose output format, sorting behavior, or any potential side effects. This is adequate for a simple enumeration tool but lacks rich behavioral detail.
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, well-structured sentence that front-loads the action and resource. Every word contributes value, with no redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one optional parameter and no output schema, the description is largely complete. It clearly defines the tool's function and the filtering option. Minor gaps exist around return format and edge cases, but the simplicity of the tool reduces the impact.
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% (the 'region' parameter is described with examples). The description's mention of 'optionally filtered by region' reinforces the parameter's optional nature but adds little beyond what the schema already provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'List' and names the resource 'available IANA timezones', clearly distinguishing it from sibling tools that perform time calculations or formatting. The optional region filter is also mentioned, adding scope clarity.
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 when a list of timezones is needed, and the optional filter provides context. However, it does not explicitly contrast with sibling tools or state when not to use it, so guidance is only implicit.
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.
9 tool updates
v1.0.1- First observed
calculate_business_days - First observed
calculate_countdown - First observed
calculate_moon_phase - First observed
calculate_sunrise_sunset - First observed
calculate_timezone_difference - First observed
convert_time - First observed
format_date - First observed
get_current_time - First observed
list_timezones
TDQS
Each tool has a distinct purpose: time conversion, current time, sunrise/sunset, moon phase, timezone difference, listing timezones, countdown, business days, and date formatting. No two tools overlap in functionality, and their descriptions clearly differentiate them.
All tool names follow a consistent verb_noun pattern using snake_case (e.g., convert_time, calculate_sunrise_sunset). The verbs are action-oriented and the nouns specify the target, making the pattern predictable and uniform.
Nine tools is well within the ideal range and covers the core timezone/date functionality without redundancy. Each tool serves a clear, non-overlapping purpose, making the set well-scoped.
The surface covers the main timezone operations (conversion, current time, listing) and adds useful calculations (sunrise/sunset, moon phase, business days). Minor gaps like timezone metadata (e.g., DST rules) exist, but the core workflows are fully supported.
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
Deterministic time tools for AI agents: timezone conversion, business-day math, cron interpretation.
Current time, timezone conversion & date math for AI agents. On Cloudflare Workers.
Current time by timezone, astronomy events, and moon phases
Convert and compare dates and times across any timezone with flexible, locale-aware formatting. Adβ¦
Related MCP Servers
- AlicenseAqualityDmaintenanceProvides comprehensive time manipulation capabilities including timezone conversions, date arithmetic, business day calculations, duration calculations, and recurring event handling. Enables natural language time queries with high performance and intelligent caching.113MIT
- AlicenseAqualityBmaintenanceProvides comprehensive date, time, timezone, and calendar operations powered by Luxon, enabling AI agents to perform time calculations, timezone conversions, and temporal data handling across 400+ IANA timezones.224MIT
- AlicenseAqualityDmaintenanceProvides AI assistants with rich temporal intelligence including timezone conversions, 9 cultural calendars (Hebrew, Islamic, Chinese, etc.), astronomical events, Islamic prayer times, and context-aware activity appropriateness recommendations.374MIT
- AlicenseAqualityDmaintenanceProvides tools for date-time manipulation, including timezone conversion and arithmetic operations like adding or subtracting time units. It also enables users to retrieve current date, time, and timezone information.343ISC
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/Cicatriiz/timezone-toolkit'
If you have feedback or need assistance with the MCP directory API, please join our Discord server