MCP

findtime.io
MCP Docs for Apps, IDEs, and Agents

Install the published @findtime/mcp-server MCP server in Cursor, Codex, or Claude and call the same production-backed time intelligence surface that powers the Time API and findtime.io. A remote client can connect to https://mcp.findtime.io/mcp with OAuth 2.1 and PKCE. The local package still uses a developer API key.

This page covers installation, verification, and troubleshooting for Cursor, Codex, and Claude, plus the current MCP tool surface and recommended smoke tests.

Distribution: Install from npm, inspect the source on GitHub, or open the public listing in the Official MCP Registry.

Production parity

The MCP server proxies time-api.findtime.io directly so apps and agents stay on one truth surface.

Published install path

Use npx -y @findtime/mcp-server in client config. A repo checkout is not required.

Agent-native tools

The tool surface includes a natural-language time question tool plus current time, DST, conversion, overlap, meeting finding, and deterministic location search.

Debuggable

We document the config files, exact prompts, and startup logs that mattered when things failed.

MCP

Install and verify your first call

Select your client below. The config snippet, verification prompt, and troubleshooting guidance update with the selected platform.

Before you start:
  • For the local package, create a developer key first from /developers/keys/.
  • Hosted clients can sign in with OAuth instead, and can still send an ftk_live_ key as a bearer token.
  • You usually do not need to run a terminal command during setup. The MCP client runs npx -y @findtime/mcp-server for you after you save the config and restart the client.
  • Install Node 20 or newer first. The MCP client must be able to find npx in its process environment.
  • Allow network access to npm for the first package install and to time-api.findtime.io for tool calls.
  • Replace YOUR_FINDTIME_SECRET_KEY in the config with your developer key. Keep that key in the client environment. Do not put it in prompts or public repositories.
  • Use npx -y @findtime/mcp-server in the MCP config. A repo checkout is not required.
  • The package is published on npm and listed in the Official MCP Registry at io.github.hkchao/findtime-mcp-server.
  • Point the server at https://time-api.findtime.io or omit the base URL to use the default.
  • After changing MCP config, fully restart the client before testing again.

Active file

~/.cursor/mcp.jsonCursor

Hosted: add the url snippet to ~/.cursor/mcp.json for all projects, or .cursor/mcp.json for one project. You can also add it in Cursor's MCP settings. Local npx uses the same files with a command and API key.

Hosted (sign in with Google)

Add this to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project). You can also add it in Cursor's settings under MCP.

mcp.json (hosted)
{
  "mcpServers": {
    "findtime": {
      "url": "https://mcp.findtime.io/mcp"
    }
  }
}
Cursor hosted setup:
  1. Save the file (or add the same url in Cursor's MCP settings).
  2. Connect and sign in with Google in the browser. Cursor then returns you to the app. If it asks for permission, say yes.
  3. In chat, ask: "Use the findtime tool answer_time_question: what is the IANA timezone for San Francisco?" You should get America/Los_Angeles.
  4. Booking from Cursor isn't ready yet. Use Claude to request or manage bookings.
  5. If the server does not start, open Output (Cmd+Shift+U), then MCP Logs.

Local package (npx + API key)

mcp.json
{
  "mcpServers": {
    "findtime": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@findtime/mcp-server"],
      "env": {
        "FINDTIME_MCP_CLIENT_TYPE": "cursor",
        "FINDTIME_TIME_API_BASE_URL": "https://time-api.findtime.io",
        "FINDTIME_TIME_API_KEY": "YOUR_FINDTIME_SECRET_KEY"
      }
    }
  }
}
Cursor npx setup checklist:
  • Confirm which Cursor config is active. If you already have a global MCP config, Cursor may be reading `~/.cursor/mcp.json` instead of a repo-local `.cursor/mcp.json`.
  • Use `npx` so Cursor installs and runs `@findtime/mcp-server` directly. A repo checkout is not required.
  • Keep Cursor Settings open with the Output pane visible before reconnecting so you can watch the MCP startup logs in real time.
  • After saving the config, reload Cursor so it recreates the stdio process with the new values.

Confirm the first answer

First verification prompt
Use the findtime.io MCP tool answer_time_question for "what is the IANA timezone for San Francisco?"

Open the client's tool-call details. Confirm that it called answer_time_question through the findtime server. The result for San Francisco must identify America/Los_Angeles. An answer without an MCP tool call does not verify the installation.

For the local npm package, if the call fails, run get_api_diagnostics and inspect the active API URL, authentication state, and health result. On the hosted connector, retry or reconnect, then call get_findtime_help. Use the troubleshooting table before trying additional prompts.

MCP

Hosted MCP

Time and meeting-planning tools are available through the local package and the hosted connector. The hosted connector also supports booking tools. Local setup diagnostics are available only in the npm package.

Connection methods:
  • Local package. @findtime/mcp-server over stdio. Auth is a developer API key in FINDTIME_TIME_API_KEY.
  • Hosted server. Streamable HTTP POST https://mcp.findtime.io/mcp. Primary auth is OAuth 2.1 authorization code with PKCE S256. Secondary auth is Authorization: Bearer plus an existing developer key that starts with ftk_live_. That bearer key is granted scopes time:read and meetings:plan.

Sign in with Google when the client opens the authorization URL. The host creates a connector developer key for that Google account. It does not reveal or replay older key secrets. For a key you create yourself, open /developers/keys/.

Hosted endpoints:
  • Protected resource metadata. GET https://mcp.findtime.io/.well-known/oauth-protected-resource
  • Authorization server metadata. GET https://mcp.findtime.io/.well-known/oauth-authorization-server
  • Dynamic client registration. POST https://mcp.findtime.io/oauth/register
  • Authorize. GET https://mcp.findtime.io/oauth/authorize. This call requires response_type=code and code_challenge_method=S256.
  • Token. POST https://mcp.findtime.io/oauth/token. Grant types are authorization_code and refresh_token. Client auth is client_secret_post or client_secret_basic.
  • Liveness. GET https://mcp.findtime.io/health
Scopes and calls:
  • time:read covers time, timezone, DST, conversion, location, and help tools. The hosted connector does not expose get_api_diagnostics.
  • meetings:plan covers find_meeting_time, get_overlap_hours, save_team, rename_team and delete_team. check_proposed_time, are_they_awake, rank_recurring_slot, list_teams and get_team need time:read.
  • booking:request covers request_booking and reschedule_booking. booking:host covers the host tools. Custom clients request those scopes by name. See Booking tools.
  • Every POST /mcp request requires a token or an API key, including initialize and tools/list. An unauthenticated request gets 401 with a WWW-Authenticate header that points to the protected resource metadata, so clients start OAuth when they connect.
  • Access tokens expire after 1 hour. Refresh tokens expire after 30 days.
  • The Time API base stays https://time-api.findtime.io.
MCP

Parity with findtime.io API

The MCP server is a thin adapter over the production Time API. Current time, DST, conversion, overlap, meeting search, and location resolution should return the same answers through MCP and the API for the same inputs.

Expect the following:
  • MCP results should match the live API for the same inputs.
  • A working installation should call the MCP tool directly.
  • If MCP startup fails, fix the client configuration before trusting any fallback output.
MCP

Behavior and retry rules

MCP returns the API payload plus a small amount of adapter metadata so agents can retry deterministically instead of guessing.

What to expect:
  • search_timezones treats countryCode as a ranking hint. When you supply a hint, the MCP result includes primaryMatch and countryFilteredResults so agents do not assume every returned row matches the hint.
  • answer_time_question is the preferred default for natural-language agent prompts, especially messy prompts with relative dates such as tomorrow, next Friday, Tuesday, or this weekend. If the caller already has structured parameters and knows the intent, the narrower tools are still available.
  • convert_time accepts explicit ISO dates and simple human day words in the time field, such as 3pm Tuesday or 3pm thur. Scheduling tools such as get_overlap_hours and find_meeting_time accept simple human values in date, such as Thursday, tomorrow, or next Friday, resolved relative to the first location timezone.
  • get_current_time is best with a city, exact timezone, or a location resolved from search_timezones. Exact country-name inputs now resolve directly for single-zone countries and return explicit ambiguity for countries with multiple timezones.
  • Abbreviations such as IST are often ambiguous. Use search_timezones first or pair the query with a region or country when you need one deterministic answer.
  • MCP tool errors keep a consistent shape: HTTP status, request URL, and the parsed API error body are included in the structured result so the client can surface the exact failure.
MCP

Per-call end-user attribution

Multi-user MCP hosts such as Slack, Discord, Teams, and internal company bots can run one long-lived @findtime/mcp-server process while still attributing each Time API call to the end-user who triggered it.

How it works:
  • Add optional _endUserId metadata inside the MCP tool call arguments object.
  • The MCP server strips _endUserId from the tool parameters and forwards it only as X-Findtime-End-User-ID to time-api.findtime.io.
  • Missing, null, or empty values are treated as absent, so existing single-user installs keep the same install-level attribution behavior.
  • The value must be a string, at most 256 characters, and cannot contain control characters such as carriage returns or newlines.
Privacy contract: _endUserId should be an opaque, non-PII token generated by the host, typically a SHA-256 hash of the platform user ID truncated to 16-32 hex characters. Do not send raw emails, names, Slack IDs, Discord IDs, Teams IDs, or other personally identifiable values.
Host-injected attribution
await client.callTool({
  name: "get_current_time",
  arguments: {
    city: "Tokyo",
    _endUserId: "a3f2c1d4e5b6c7d8"
  }
});
MCP

Testing and smoke prompts

Use these prompts to verify that the client is making native MCP tool calls. If the client searches the repo or runs local Node code instead, treat that as fallback behavior and continue debugging the MCP setup.

Verification only:Use the explicit Use the findtime.io MCP tool ... phrasing during setup so you can confirm the client is calling the MCP server directly. After that succeeds, switch back to normal natural-language prompts.
Cursor smoke test
Use the findtime.io MCP tool answer_time_question for "what is the IANA timezone for San Francisco?"
Additional smoke tests
Use the findtime.io MCP tool answer_time_question for "what is the IANA timezone for San Francisco?"
Use the findtime.io MCP tool answer_time_question for "3pm PST to London".
Use the findtime.io MCP tool answer_time_question for "convert 3pm next Tuesday in New York to London and Tokyo".
Use the findtime.io MCP tool get_current_time for city "Tokyo" with countryCode "JP".
Use the findtime.io MCP tool search_timezones for "Victoria" with countryCode "CA".
Use the findtime.io MCP tool get_dst_schedule for timezone "America/New_York".
Use the findtime.io MCP tool get_dst_schedule for timezone "Europe/London" with year 2026.
Use the findtime.io MCP tool get_dst_schedule for timezone "Europe/London" with at "2025-03-22T12:00:00Z".
Use the findtime.io MCP tool convert_time from "New York" to ["London","Tokyo"] at time "9:00 AM" on date "2026-03-10".
Use the findtime.io MCP tool find_meeting_time for locations ["Tokyo","Cairo","New York"] with countryCodes ["JP","EG","US"] on date "2026-03-10".

For the local npm package only, also call get_api_diagnostics to check installation and authentication details. This tool is not available on the hosted connector.

Once installation succeeds, use answer_time_question with these natural-language questions. The CST question asks for clarification because the abbreviation has multiple meanings.

Try natural-language questions
what time is it in London?
9am New York to Berlin
does London observe DST?
working hours overlap for New York and London
best time for a meeting between San Francisco and London
what does CST mean?
Recommended sequence:
  • Start with an explicit tool-call prompt such as Use the findtime.io MCP tool answer_time_question for "what is the IANA timezone for San Francisco?"
  • Once that works, try the natural-language questions above with answer_time_question.
  • Cursor: the Output pane should show a successful stdio connection and the chat should call a findtime MCP tool.
  • Codex and Claude: the chat should call the MCP tool directly and should not fall back to repo search or local Node execution.
MCP

Troubleshooting

Use this section to diagnose startup failures, missing tools, auth errors, and false-positive fallback behavior.

Common setup issues:
  • Editing the wrong config file. Each client has its own MCP config source.
  • Leaving an old MCP server path in the config after moving the implementation to a new repo location.
  • Forgetting to provide a developer API key in the MCP client env.
  • Counting a local fallback execution as proof that MCP was working.
  • Restarting only the thread instead of the full client after changing MCP config.
SymptomLikely causeWhat to do
Startup timeout in CursorStale config, first-run install issue, or the wrong commandOpen Output, verify the command is npx -y @findtime/mcp-server, then reload Cursor after fixing the config.
initialize response failure in CodexOutdated MCP transport behavior or stale app processUpdate to the latest server code and fully quit and relaunch Codex.
Tool call returns 401Missing or wrong API keySet FINDTIME_TIME_API_KEY to a live developer key.
Hosted /mcp returns 401No OAuth token and no ftk_live_ bearer keySign in with OAuth 2.1 and PKCE, or send Authorization: Bearer with a developer key that starts with ftk_live_.
The client cannot find npxNode is missing or the desktop client has a different process environmentInstall Node 20 or newer. Configure the client to use the actual path to npx if needed, then fully restart it.
Tool call returns 429The Time API reports a rate limit or quota failureInspect the returned API error before retrying. The Time API enforces the configured per-key rate limits and quotas. Avoid immediate repeated calls.
The model searched the repo and ran local JSMCP was still unavailableTreat that as fallback behavior, not success. Fix MCP first, then retry with a fresh thread.
Behavior seems stale even though MCP is connectedThe client may still be running an older MCP package, or the latest version lookup may have failedFor the local npm package, run get_api_diagnostics. On the hosted connector, reconnect and call get_findtime_help. For local diagnostics, check mcpInstallMode first, then compare mcpVersion and mcpLatestVersion. If the latest check fails, follow the returned npm or Official MCP Registry links to verify the newest published version manually.
Expected Cursor success logs
2026-03-21 14:33:22.064 [info] Starting new stdio process with command: npx -y @findtime/mcp-server
2026-03-21 14:33:22.123 [info] Successfully connected to stdio server
2026-03-21 14:33:22.123 [info] Storing stdio client: user-findtime
2026-03-21 14:33:22.123 [info] CreateClient completed, server stored: true
Cursor gotchas:
  • Editing the wrong file is the #1 trap. Verify whether Cursor is using the global config or a repo-local config.
  • If the Output pane shows a timeout during startup, check that the command is `npx -y @findtime/mcp-server` and that Cursor reloaded after the edit.
  • If the server connects but tool calls return 401, the missing piece is usually `FINDTIME_TIME_API_KEY`.
MCP

MCP tool surface

These tools are available through the findtime MCP server. Use them directly from your client once setup is complete.

ToolParametersBest forWhy it matters
answer_time_question
Required
query
Optional
userTimezonelocalenowdate
Natural-language time questionsPreferred default for natural-language agent prompts, especially when the user says "tomorrow", "next Friday", "Tuesday", "this weekend", or another relative date. Classifies current time, conversion, DST, overlap, meeting, abbreviation, and IANA timezone questions and returns structured clarification when input is ambiguous.
time_snapshot
Required
query or locations
Optional
countryCode or countryCodesincludeTransitions
One-call time intelligenceBest default tool when you want packaged location, timezone, current time, DST, and optional transitions. Batch calls can return per-location status with retry-friendly suggestedQuery and suggestedId values instead of failing all at once.
get_current_time
Required
city or query
Optional
countryCode
Single-location time lookupsFastest current-time check when you already know the city or timezone you want and there is no natural-language date qualifier. Exact country-name queries resolve directly for single-zone countries and return explicit ambiguity for multi-zone countries.
get_api_diagnosticsnoneLocal npm version and environment debuggingAvailable only in the local npm package, not the hosted connector. Confirms the running MCP version, reports whether the client is using a repo checkout or npm package install, checks the latest published MCP version when available, and returns the active API base URL, auth state, and health result.
get_dst_schedule
Required
city, query, or timezone
Optional
countryCodeatyear
DST truthUse this when the question is specifically about DST status, last transition, next transition, or a calendar-year view and the date context is already structured. Route relative-date prompts through answer_time_question first.
convert_time
Required
fromtotimedate
Optional
fromCountryCodetoCountryCodes
One-to-many conversionConvert a source local time into one or more target locations on an explicit ISO date, for the current moment, or from a simple human time such as "3pm Tuesday". Route messier raw prompts through answer_time_question so the answer layer can classify and resolve them before conversion.
get_overlap_hours
Required
locationsdate
Optional
countryCodes
Scheduling workflowsReturns shared overlap across locations instead of leaving the caller to compute it manually. Use answer_time_question first when the user gives a relative date such as "this week", "tomorrow", or "next Friday".
find_meeting_time
Required
locations
Optional
countryCodesdate
Agent and meeting planningReturns ranked meeting suggestions and a planner link back into findtime.io. Use answer_time_question first when the user gives a relative date such as "next week" or "Friday".
check_proposed_time
Required
locationsstart
Optional
homecountryCodesdatedurationMinutes
A time the user already pickedCalls /meeting/check. Returns a verdict per city (ok, early, late, or sleep), up to three better slots, shareText to paste, and a planner link. Pass start as an ISO instant, or as a local time with home set to an IANA timezone.
are_they_awake
Required
theirCities
Optional
myTimemyTimezonemyCity
Ping timingCalls /meeting/awake. Says whether people in other cities are in work hours, awake, or asleep at one moment. myTime defaults to now. A rough moment comes with better slots and a planner link.
rank_recurring_slot
Required
locationsweekdaytimehome
Optional
occurrences
Weekly standupsCalls /meeting/recurring. Scores who a weekly wall-clock time punishes, includes a daylight-saving week when one falls in the next 26 weeks, and suggests a kinder slot.
save_team
Required
teamIdlocations
Saved groups (hosted only)Creates or replaces a homepage planner Saved group for the signed-in Google account, with the full city list. Needs meetings:plan. Hosted server only; the npm package has no team tools.
get_team
Required
teamId
Saved groups (hosted only)Loads one Saved group by its exact name. Needs time:read. Hosted server only.
list_teamsnoneSaved groups (hosted only)Lists the Saved groups of the signed-in Google account. Pass an exact name as teamId to find_meeting_time, check_proposed_time, are_they_awake, or rank_recurring_slot when the call has no locations. Needs time:read. Hosted server only.
rename_team
Required
teamIdnextName
Saved groups (hosted only)Renames a Saved group and keeps its cities. Needs meetings:plan. Hosted server only.
delete_team
Required
teamId
Saved groups (hosted only)Deletes a Saved group. A deleted group stays deleted. Needs meetings:plan. Hosted server only.
send_feedback
Required
toolquerywhatWasWrong
Optional
expectedAnswer
Reporting a wrong answerReports a wrong, incomplete, or unhelpful answer. The query text is discarded; only the tool name and error class are kept.
search_timezones
Required
query
Optional
countryCodelimit
Ambiguity handlingResolve places like Victoria or timezone abbreviations like IST before a later tool call. countryCode is a ranking hint, not a strict result filter.
get_location_by_id
Required
id
Deterministic hydrationHydrate a stable `findtime:` location id when you want exact repeatability across calls.
MCP

Booking tools

The hosted server adds tools for guests' agents and hosts' agents. A guest's agent can only request a time. The host approves or declines every request. findtime sends the host one new-request email and the guest one email saying the request was sent. The same routes are in the Booking API.

Set up in Claude (about a minute)
  1. Open Claude (desktop app or claude.ai) and go to Settings → Connectors.
  2. Click Add custom connector.
  3. Name it findtime.io and set the URL to https://mcp.findtime.io/mcp, then save.
  4. Click Connect and sign in with Google. Use your own Google account. If it asks for permission, say yes.
  5. In a chat, turn findtime.io on from the + menu → Connectors.
  6. Send a new message once it's connected.

Claude sends meeting requests in your name, using your Google email. It can't book anything; the host approves every request. To manage your own booking page, findtime shows a consent page. Click Continue only if you want Claude to act as the host.

If the findtime tools don't appear, disconnect and reconnect the connector, or start a new chat so the tool list refreshes.

To remove access later, disconnect findtime.io in Claude's connector settings.

Set up in ChatGPT
  1. Open ChatGPT on the web and go to Plugins.
  2. Select the plus button, then Add custom MCP server.
  3. Name it findtime.io. Under Connection, enter https://mcp.findtime.io/mcp as the Server URL.
  4. Choose OAuth authentication and sign in with Google when prompted.
  5. Review the risk warning, select I understand and want to continue, then Create as a plugin.
  6. Install the resulting plugin. In a chat, type @ and select it.

Workspace permissions and security settings may restrict custom MCP servers. These steps follow OpenAI's custom MCP server documentation. Creating a custom connection does not mean the connector is listed in a directory.

Use with Grok through the xAI API

xAI documents remote MCP support in its native SDK and Responses API with Streaming HTTP or SSE. In your API request, add an MCP tool with server_url set to https://mcp.findtime.io/mcp and server_label set to findtime. Supply an authorized token through authorization.

This is an API integration. The xAI remote MCP documentation does not establish a consumer connector setup flow in grok.com or a public directory submission process.

For hosts: let agents request your times

Open Booking on findtime.io while signed in. On the Hours tab in Simple mode, after the page is published, use the robot icon next to pause and lock. Off, its label is Let AI agents request times. On, it reads AI agent requests on. Click it again to turn it off. Until it is on, agents see your handle as not found.

What happens next

  • Guest: Claude shows the time back in both zones and asks you to confirm. After you say yes, it sends the request, and findtime emails you that it was sent. Nothing is on anyone's calendar yet.
  • Host: findtime sends one new-booking-request email, tagged "via AI agent". Approve or decline it in findtime.
  • On approve: findtime creates the Google Calendar event. When the guest is on the event, Google emails them the invite, with Meet when the host includes it, and findtime sends no second email. Otherwise findtime emails the guest a Confirmed email with an add-to-calendar link. If the host declines, findtime emails the guest. Check status with get_booking_status.
  • On cancel: the guest is told once. When they're on the Google Calendar event, Google's cancellation tells them. Otherwise findtime emails them, and a cancelled pending request always gets a findtime email. When the guest cancels, findtime also emails the host.
  • Paywall: each host gets a few free approved meetings. After those, approving needs the one-time $4.99 unlock in findtime. An agent can't pay; it gives you a link instead.

Try it

A guest can say: "Use findtime to book 30 minutes with findtime.io/b/hkchao next Tuesday afternoon my time." Claude finds open times, reads the choice back, then sends the request once you say yes. The host gets one findtime email and approves it in findtime.

Before you use them:
  • Every write is two steps. The first call returns a read-back and changes nothing. Call again with confirm: true only after the person says yes.
  • Host tools act only on the signed-in host's own page. Approve needs Google Calendar connected and, past the free meetings, the $4.99 unlock. The agent never pays or connects Calendar.

Parameter lists are the main ones. The tool schemas from tools/list are authoritative, including passcode, invite, meetingType, exactStart, subject and notes.

Guest tools

ToolParametersScopeWhat it does
get_host_booking_profilehandletime:readHost name, zone, meeting lengths, one meeting type (labeled Meeting), minimum notice, passcode flag.
find_host_slotshandle, durationMinutes, askerZone, dates, hours, weekdays, order, limittime:readNumbered options in the guest's zone and the host's. Option ids last about 15 minutes.
request_bookinghandle, optionId, guestName, guestZone, idempotencyKey, confirmbooking:requestSends a request for the host to approve. First call returns a read-back; call again with confirm after the guest says yes.
get_booking_statusrequestId, guestTrackingTokentime:readPending, confirmed, declined or cancelled, with the meeting link once approved.
list_my_booking_requestsguestHistoryTokentime:readEvery request this guest sent to one host.
cancel_bookingrequestId, guestTrackingToken or guestHistoryToken, reason, confirmtime:readCancels a request or approved meeting. The host is emailed. The guest gets a "You cancelled" email from findtime, unless Google's cancellation already reached them. A pending request always gets that email.
reschedule_bookingrequestId, guestTrackingToken or guestHistoryToken, optionId, confirmbooking:requestReplaces a pending request with a new time. Approved meetings need the host.

Host tools

ToolParametersScopeWhat it does
get_my_booking_pagenonebooking:hostLink, lengths, weekly hours, pause, passcode, agent switch, free meetings used and left, invite links.
list_booking_requestsstatus, from, tobooking:hostInbox with guest, times in the host's zone, a "via AI agent" tag, lifecycleVersion and olderRequests.
approve_booking_requestrequestId, lifecycleVersion, message, googleMeet, confirmbooking:hostAdds the event to Google Calendar. May return needs_calendar_connect, needs_payment, needs_sync or conflict.
decline_booking_requestrequestId, lifecycleVersion, reason, confirmbooking:hostDeclines a request.
cancel_booking_as_hostrequestId, lifecycleVersion, reason, confirmbooking:hostCancels a request or approved meeting; the status changes first, then the calendar event is removed. The guest is told once: by Google's cancellation when they're on the event, otherwise by a findtime email.
update_booking_pagedurations, defaultDuration, weeklyHours, paused, agentBooking, confirmbooking:hostChanges lengths, hours, pause, or the agent switch.
create_invite_linkguestName, guestEmail, durationMinutes, expiresInDays, confirmbooking:hostMakes a personal link for one guest. The host sends it.
revoke_invite_linklinkId, confirmbooking:hostStops a personal link from working.

If something goes wrong

  • "not taking requests" (host_not_taking_requests): the host's page is paused, or its booking window has ended. Ask the host to reopen it in findtime. Retrying won't help.
  • "host not found" (host_not_found): the handle is wrong, or the host hasn't turned on Let AI agents request times (the robot icon on Hours, after the page is published). Ask the host for their findtime.io/b/ link.
  • Permission error: If it asks for permission, say yes. If booking fails with a permission error, disconnect findtime.io, connect again, and ask again.
  • "already has a request" (existing_request): you already asked this host for an overlapping time. No new request was sent. Ask Claude to check or cancel the earlier request before asking for a new time.
  • "needs payment" (needs_payment): the host has used the free meetings. The host opens the link and unlocks in findtime, then approves.
v4.6-245-g56b668180-6693-56b6681