Time of Meeting
Find a fair meeting time across time zones. Remote MCP server: city times, overlap windows, fairest slots, calendar links. Free.
Hosted MCP Server
npx add-mcp 'https://timeofmeeting.com/mcp'Installs into Claude Code, Codex, Cursor and more
Documentation
Ask for a fair meeting time across cities. The same address is this guide in a browser and a remote MCP endpoint for an agent.
Add it
Many AI assistants can add it for you: paste this address in the chat and ask it to connect. Some apps, including ChatGPT and the Claude apps, still need it added in settings.
Claude
On Claude for the web or the desktop app: Customize, then Connectors, then Add. Hover Custom, choose Web, give it a name, and paste the server URL. Choose Continue. Custom connectors are reached from Anthropic's cloud, including from Claude Desktop, so this is not a server on your computer. A free account can add one custom connector. This server has no login, so choose No sign in. Claude's connector steps.
ChatGPT
On ChatGPT for the web, for Business, Enterprise, and Edu: Plugins, then the plus, then Add custom MCP server. Enter a name and this public HTTPS URL, set the authentication, tick the risk checkbox, and choose Create as a plugin. It is not in the mobile app, and it is not a server on your computer. ChatGPT's connector steps.
Cursor
Add this to .cursor/mcp.json in a project, or to ~/.cursor/mcp.json for every project. Streamable HTTP uses url. This server needs no authentication headers. Cursor MCP · Cursor help.
{
"mcpServers": {
"time-of-meeting": {
"url": "https://timeofmeeting.com/mcp"
}
}
}
Any MCP client
POST JSON-RPC to https://timeofmeeting.com/mcp. There is no login. Send Accept: application/json, text/event-stream. The server answers with one JSON object. It does not keep a session. There is no universal config file in the spec. Streamable HTTP transport.
What you can ask
find_best_meeting_timeMeeting planner across time zones: propose up to three fair meeting times for two to eight cities while the slot is still being chosen. Use when the user wants a time that works for people in different cities and time zones. Ranking does not take a meeting length. A city's public holiday down-ranks that slot and is named in the reasons. Each slot city says whether that date is a holiday. Each slot has a score and the reasons. The result has one https://timeofmeeting.com link that opens the planner with those cities, and next_step, which says the user can choose a duration when creating the invitation. It does not include calendar files or a QR code. The meeting length and the invitation formats are chosen in a later step.convert_timeConvert 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.current_time_in_citiesWorld clock: show the current local time, IANA time zone, UTC offset, work-hour band, and public holiday, if that date is one, for each city. Use when the user asks what time it is now in one or more cities. The result includes a https://timeofmeeting.com link that opens the planner for the first city. weeks is the ISO week and the US week of the UTC date.search_citiesFind cities by name. Each city includes its id, IANA time zone, and country. Use when a city name is ambiguous or the user wants to know which time zone a city is in. The query is not repeated.get_dst_changesList daylight saving time (DST) clock changes for one city. Use when the user asks when the clocks change, or whether a recurring meeting moves when DST starts or ends. Defaults to the next year. Each change includes the local time and the ISO week and US week of that local date. The range can be at most 366 days.create_meeting_linkMake a calendar invite for one chosen meeting time across time zones: a Time of Meeting planner link, plus optional paste-ready text, an.ics calendar file, a Google Calendar link, or a QR code. Use once the meeting time is chosen. duration_minutes is the meeting length, chosen now, with the same choices as the planner Duration control. title is an optional meeting name, e.g. Weekly sync. Each city says whether that date is a public holiday. Includes a Time of Meeting planner link alongside calendar links. Planner link: open this meeting on timeofmeeting.com (see and adjust it in the planner). formats adds text to paste into a chat or email, a calendar file for Outlook, Apple Calendar and most calendar apps, an add-to-Google-Calendar link, or a QR code image someone can scan with a phone, in that order. The calendar file is https://timeofmeeting.com/c?q=.get_holidaysList public holidays for a country, an optional ISO 3166-2 region, or a city. Use when the user asks whether a date is a holiday somewhere, or which days are holidays in a year. Pass one year, a list of years so 2026, 2027, and 2028 can come back together, or a date range. Each holiday has the date, the weekday, whether it falls on Saturday or Sunday, whether it creates a long weekend of three or more days with Saturday and Sunday, the local name, the English name, whether it is regional, the region codes, the file it came from, and the calendar page URL. The same holiday list marks the planner timeline.days_betweenCount calendar days from start to end. Use when the user asks how many days are between two dates. Both are YYYY-MM-DD. include_start and include_end default to false, so the count is the dates strictly after start and strictly before end: 2024-02-28 to 2024-03-01 is 1 in a leap year (29 February) and 0 in a common year. Set both to true to count every date from start through end (3 in that leap-year span, 2 otherwise). The count is negative when end is before start. The same day is 0 unless both ends are included, which is 1. The result is that count and nothing else.working_days_betweenCount working days (business days) from start to end for one country, skipping weekends and national public holidays. Use when the user asks how many business days are left until a date. A working day is Monday to Friday and not a national public holiday. Saturday and Sunday are weekends, the same rule as the planner. Regional holidays are not skipped. include_start and include_end work the same way: both default to false, so only the dates strictly between start and end count. Holiday dates are the bundled vacanza/holidays list (MIT) for 2026, 2027, and 2028. A date outside those years returns an error naming the missing year, instead of guessing. The result lists the national holidays inside the counted span, including the local name.add_daysAdd a whole number of days, weeks, or working_days (business days) to a date. Use when the user asks for the date a number of days or business days from another date. amount may be negative. unit weeks is seven calendar days: 3 weeks from Friday 2026-10-23 is 2026-11-13. unit working_days skips Saturday, Sunday, and that country's national public holidays, and the start date is not counted: 10 working days from Friday 2026-10-23 is 2026-11-06 when none of those weekdays is a holiday. country is required for working_days. For days and weeks it is optional and is not used in the arithmetic. The result is the landing date, its weekday, iso_week, and us_week. The request date, amount, unit, and country are not repeated. Holiday dates are the bundled vacanza/holidays list (MIT) for 2026, 2027, and 2028. A walk that leaves those years returns an error.next_occurrenceFind the next date on or after start that is the first, second, third, fourth, fifth, or last given weekday of its month. Use for questions like the date of the last Friday of the month. weekday is Mon, Tue, Wed, Thu, Fri, Sat, or Sun. start defaults to today (UTC). Example: start 2026-10-23, weekday Fri, occurrence last is 2026-10-30, the last Friday of October. If that month's occurrence is before start, the answer is in a later month: the first Monday on or after 2026-10-23 is 2026-11-02. A fifth weekday that the month does not have is skipped. The result is that date, its month, iso_week, and us_week. The request is not repeated.week_numberReturn only iso_week and us_week for one YYYY-MM-DD date. Use when the user asks for the week number of a date. The response has those two numbers and nothing else: no date, weekday, year, or link. ISO weeks start on Monday, and week 1 contains the year's first Thursday: 2026-12-31 and 2020-12-31 are iso_week 53. The US week starts on Sunday, and 1 January is week 1 of that calendar year, so 2022-01-01 is iso_week 52 and us_week 1. 2027-01-01 is iso_week 53 and us_week 1.business_hours_overlapWork-hour overlap for two to eight cities in different time zones on one date. Use when the user asks when the work hours of several cities overlap on a day. Uses the same overlap as the planner: work is 9:00–17:00 local, early or late is 7:00–9:00 and 17:00–19:00, and other hours are night. The result is that day's fair slot, with label best, fairest, or a shifted least-bad window, each city's local start and end, and the score. A public holiday in a city is named and lowers the score. date is YYYY-MM-DD.dst_checkDaylight saving time (DST) check: say when a city's clocks next change, and whether a planned local time is skipped (spring forward) or happens twice (fall back). Use for a meeting time near a DST change, or a local time that may not exist or may be ambiguous. from and to bound the search, YYYY-MM-DD. Pass both or neither. When omitted, the window is today (UTC) through 365 days later. The next change is the first offset change in that window, the same clock-change list used elsewhere on this server. weeks is iso_week and us_week of that next change, or null when the window has none. The change object and a planned time do not repeat the week numbers. planned_time is a local wall time, YYYY-MM-DD HH:MM, in that city. status is unique when that clock time happens once, gap when the clocks skip it (spring forward, including the southern hemisphere), or overlap when it happens twice (clocks go back). shifted is true for a gap or an overlap. utc is the compatible resolution: the later side of a gap and the earlier side of an overlap. Do not treat utc as the only reading when shifted is true.age_durationAge from start to end as calendar years, months, and days. Use when the user asks for an age or the length of time between two dates in years, months, and days. end defaults to today (UTC). A birthday on 29 February does not become a whole year on 28 February of a common year: 2020-02-29 to 2021-02-28 is 0 years, 11 months, and 30 days. 2020-02-29 to 2024-02-29 is 4 years. The parts are negative when end is before start. total_days is the signed number of calendar days from start to end. The result is years, months, days, and total_days. The dates are not repeated.
The user can pick a slot and then choose a duration for the invitation: 15, 30, 45, 60, 90, 120 minutes, or any whole number from 5 to 1440 in steps of 5. The default is 30 minutes. The invitation includes a Time of Meeting planner link, where attendees can see and adjust the meeting, alongside calendar links. formats can add text to paste into a chat or email, a calendar file for Outlook, Apple Calendar and most calendar apps, an add-to-Google-Calendar link, or a QR code image someone can scan with a phone.
find_best_meeting_time, convert_time, current_time_in_cities, create_meeting_link, and business_hours_overlap include a timeofmeeting.com link that opens the planner. A city name can be typed with or without accents. If several cities share a name, the tool uses the best match from the site search and lists the others in alternatives. Work hours are 9:00–17:00. 7:00–9:00 and 17:00–19:00 are early or late. Saturday and Sunday are weekends. Weekday public holidays are listed, and a city's public holiday down-ranks that slot. get_holidays lists them for a country, region, or city, for one year or for 2026, 2027, and 2028 together. Each holiday includes the weekday, whether it falls on a weekend, whether it makes a long weekend, and the calendar page. days_between, working_days_between, add_days, next_occurrence, week_number, business_hours_overlap, dst_check, and age_duration answer calendar questions on this same endpoint. Working days skip Saturday, Sunday, and national public holidays from the bundled vacanza/holidays list (MIT) for 2026, 2027, and 2028. week_number returns only the ISO week and the US week. Other tools put those two numbers on the answer's main date. Holiday rows and a start, end, from, or to date do not carry them.
Rate limit
About 60 requests a minute and 2,000 a day for each IP address. Calls from Cloudflare Workers share one address, which has a higher cap and a global ceiling. The counter is approximate. Opening this page, and any other GET, is free.
Example call
POST https://timeofmeeting.com/mcp
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "find_best_meeting_time",
"arguments": {
"cities": ["Bern", "New York"],
"start_date": "2026-10-19",
"end_date": "2026-10-19"
}
}
}
On Monday 19 October 2026 that call picks 13:00 UTC: 15:00 in Bern and 09:00 in New York, inside work hours for both.
Registry file
The description for the official MCP Registry is server.json. It is not published from this site.
Questions
Do I need an account?
No. The MCP endpoint has no login. A meeting link only contains the cities, the start time, and the length.
How many requests can I make?
About 60 requests a minute and 2,000 a day for each IP address. Calls from Cloudflare Workers share one address, which has a higher cap and a global ceiling. A browser opening this page does not count.
Are public holidays marked?
Saturday and Sunday in a city are weekends, the same rule the planner uses. Weekday public holidays are listed, and a city's public holiday down-ranks that slot. get_holidays also returns the weekday, whether the day is a weekend, whether it makes a long weekend, and the calendar page, for one year or for 2026, 2027, and 2028 together.