Skip to main content
Glama

Time of Meeting

Convert a local time

convert_time
Read-onlyIdempotent

Convert a local time in one city into one or more other cities' time zones, e.g. 3pm in Warsaw in New York and Bangalore. Use when the user names a time in one place and asks what it is elsewhere, or whether it falls in work hours there. Each city has its IANA time zone and says whether the converted time is in work hours. Each city says whether that local date is a public holiday. The result includes a https://timeofmeeting.com link for a 60-minute meeting. A different length can be set when the invitation is built.

Input Schema

NameRequiredDescriptionDefault
toYesCities to convert into. An array, or one comma-separated string. City name or a city id from a city search. Spelling and accents are flexible. When several cities share a name, the best match from the site search is used and the others come back in alternatives.
fromYesThe city the clock time belongs to. City name or a city id from a city search. Spelling and accents are flexible. When several cities share a name, the best match from the site search is used and the others come back in alternatives.
timeYesLocal time in the from city, YYYY-MM-DD HH:MM or YYYY-MM-DDTHH:MM.

Output Schema

NameRequiredDescriptionDefault
toYes
utcYes
fromYes
linkYes
errorNo
linksYes
weeksYesISO week (Monday start; week 1 contains the year's first Thursday) and US week (Sunday start; 1 January is week 1 of that calendar year).
candidatesNo
alternativesNoOther cities that matched the same name, after the best-ranked city was chosen. The order is the site search order: match, then priority, then population.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / from / description
      Previous value: -"The city the clock time belongs to. City name or a city id from search_cities. Spelling and accents are flexible. When several cities share a name, the best match from the site search is used and the others come back in alternatives."New value: +"The city the clock time belongs to. City name or a city id from a city search. Spelling and accents are flexible. When several cities share a name, the best match from the site search is used and the others come back in alternatives."
    • changedInput schema / properties / to / description
      Previous value: -"Cities to convert into. An array, or one comma-separated string. City name or a city id from search_cities. Spelling and accents are flexible. When several cities share a name, the best match from the site search is used and the others come back in alternatives."New value: +"Cities to convert into. An array, or one comma-separated string. City name or a city id from a city search. Spelling and accents are flexible. When several cities share a name, the best match from the site search is used and the others come back in alternatives."
  2. Changed2 schema fields changed
    • addedOutput schema / properties / weeks
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "ISO week (Monday start; week 1 contains the year's first Thursday) and US week (Sunday start; 1 January is week 1 of that calendar year).",
      +  "properties": {
      +    "iso_week": {
      +      "maximum": 53,
      +      "minimum": 1,
      +      "type": "integer"
      +    },
      +    "us_week": {
      +      "maximum": 54,
      +      "minimum": 1,
      +      "type": "integer"
      +    }
      +  },
      +  "required": [
      +    "iso_week",
      +    "us_week"
      +  ],
      +  "type": "object"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "link",
      -  "utc",
      -  "from",
      -  "to",
      -  "links"
      -]New value: +[
      +  "link",
      +  "utc",
      +  "weeks",
      +  "from",
      +  "to",
      +  "links"
      +]
  3. Changed7 schema fields changed
    • changedInput schema / properties / from / description
      Previous value: -"The city the clock time belongs to. City name or a city id from search_cities. Spelling and accents are flexible."New value: +"The city the clock time belongs to. City name or a city id from search_cities. Spelling and accents are flexible. When several cities share a name, the best match from the site search is used and the others come back in alternatives."
    • changedInput schema / properties / to / description
      Previous value: -"Cities to convert into. An array, or one comma-separated string. City name or a city id from search_cities. Spelling and accents are flexible."New value: +"Cities to convert into. An array, or one comma-separated string. City name or a city id from search_cities. Spelling and accents are flexible. When several cities share a name, the best match from the site search is used and the others come back in alternatives."
    • addedOutput schema / properties / alternatives
      Added value: +{
      +  "description": "Other cities that matched the same name, after the best-ranked city was chosen. The order is the site search order: match, then priority, then population.",
      +  "items": {
      +    "properties": {
      +      "country": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "id": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "name": {
      +        "type": "string"
      +      },
      +      "region": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      }
      +    },
      +    "required": [
      +      "name"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / from / properties / holiday
      Added value: +{
      +  "properties": {
      +    "date": {
      +      "type": "string"
      +    },
      +    "label": {
      +      "type": "string"
      +    },
      +    "name": {
      +      "type": "string"
      +    },
      +    "name_en": {
      +      "type": "string"
      +    },
      +    "regional": {
      +      "type": "boolean"
      +    },
      +    "regions": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "scope": {
      +      "type": "string"
      +    },
      +    "source": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "date",
      +    "name",
      +    "name_en",
      +    "regional",
      +    "regions",
      +    "label",
      +    "source"
      +  ],
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / from / required
      Previous value: -[
      -  "name",
      -  "zone",
      -  "local",
      -  "offset",
      -  "kind",
      -  "link"
      -]New value: +[
      +  "name",
      +  "zone",
      +  "local",
      +  "offset",
      +  "kind",
      +  "holiday",
      +  "link"
      +]
    • addedOutput schema / properties / to / items / properties / holiday
      Added value: +{
      +  "properties": {
      +    "date": {
      +      "type": "string"
      +    },
      +    "label": {
      +      "type": "string"
      +    },
      +    "name": {
      +      "type": "string"
      +    },
      +    "name_en": {
      +      "type": "string"
      +    },
      +    "regional": {
      +      "type": "boolean"
      +    },
      +    "regions": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "scope": {
      +      "type": "string"
      +    },
      +    "source": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "date",
      +    "name",
      +    "name_en",
      +    "regional",
      +    "regions",
      +    "label",
      +    "source"
      +  ],
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / to / items / required
      Previous value: -[
      -  "name",
      -  "zone",
      -  "local",
      -  "offset",
      -  "kind",
      -  "link"
      -]New value: +[
      +  "name",
      +  "zone",
      +  "local",
      +  "offset",
      +  "kind",
      +  "holiday",
      +  "link"
      +]
  4. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "candidates": {
      +      "items": {
      +        "properties": {
      +          "country": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "id": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "name": {
      +            "type": "string"
      +          },
      +          "region": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          }
      +        },
      +        "required": [
      +          "name"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "error": {
      +      "type": "string"
      +    },
      +    "from": {
      +      "properties": {
      +        "country": {
      +          "type": "string"
      +        },
      +        "kind": {
      +          "type": "string"
      +        },
      +        "link": {
      +          "type": "string"
      +        },
      +        "local": {
      +          "type": "string"
      +        },
      +        "name": {
      +          "type": "string"
      +        },
      +        "offset": {
      +          "type": "string"
      +        },
      +        "region": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "weekend": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "zone": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "name",
      +        "zone",
      +        "local",
      +        "offset",
      +        "kind",
      +        "link"
      +      ],
      +      "type": "object"
      +    },
      +    "link": {
      +      "type": "string"
      +    },
      +    "links": {
      +      "properties": {
      +        "google": {
      +          "type": "string"
      +        },
      +        "ics": {
      +          "type": "string"
      +        },
      +        "meeting": {
      +          "type": "string"
      +        },
      +        "planner": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "meeting",
      +        "planner",
      +        "ics",
      +        "google"
      +      ],
      +      "type": "object"
      +    },
      +    "to": {
      +      "items": {
      +        "properties": {
      +          "country": {
      +            "type": "string"
      +          },
      +          "kind": {
      +            "type": "string"
      +          },
      +          "link": {
      +            "type": "string"
      +          },
      +          "local": {
      +            "type": "string"
      +          },
      +          "name": {
      +            "type": "string"
      +          },
      +          "offset": {
      +            "type": "string"
      +          },
      +          "region": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "weekend": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "zone": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "name",
      +          "zone",
      +          "local",
      +          "offset",
      +          "kind",
      +          "link"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "utc": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "link",
      +    "utc",
      +    "from",
      +    "to",
      +    "links"
      +  ],
      +  "type": "object"
      +}
  5. First observed

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive), yet the description still adds real value: it discloses that each city returns an IANA zone, a work-hours flag, a public-holiday flag, and a meeting link. It does not mention the seven-city cap on the target list or any failure behavior for ambiguous city names, which would have pushed this to a 5.

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

Conciseness4/5

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

Front-loaded with purpose and a worked example, then the when-to-use clause. The trailing sentence about setting a different meeting length when the invitation is built is marginally tangential but not wasteful enough to penalize heavily.

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

Completeness4/5

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

For a three-parameter read-only tool with full schema coverage, annotations, and an output schema, the description is essentially complete. Minor omissions (the maxItems cap, ambiguity resolution behavior) are already covered in the schema, so their absence here is low-cost.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already defines the from/to/time semantics including the accepted time pattern and the alternatives fallback for ambiguous cities. The description only implies multiplicity via 'one or more other cities' and the example, adding little syntax or format detail beyond the schema. Baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource (convert a local time between cities) and immediately grounds it with a concrete example ('3pm in Warsaw in New York and Bangalore'). This clearly separates it from siblings like current_time_in_cities and business_hours_overlap, which answer different questions.

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

Usage Guidelines4/5

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

Gives a clear trigger: the user names a time in one place and asks what it is elsewhere, or whether it lands in work hours. It stops short of explicit exclusions, e.g. pointing to business_hours_overlap when the user instead wants to find an overlapping window rather than convert a fixed time.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources