Import your calendar with an AI agent
Open Calendar → Calendars → Add calendar → Use my AI agent for a request you can copy. Your agent reads a calendar it is authorized to access and sends a private snapshot to Domino. Connecting Domino does not connect your calendar provider, and this is not continuous sync.
Connect and authorize
Agent intake uses Domino's existing MCP/API access rollout. If Agent Access is unavailable for your account, use Google, a calendar link, or screenshot upload from Your calendars.
Connect to https://letsdomino.io/mcp and explicitly select Import private calendar snapshots (calendar:import). This optional permission is unchecked by default. Existing planning-write and wildcard grants do not acquire it. Reconnect if an old authorization did not request this scope. No planning, RSVP or external-commit permission is required for a calendar-only connection.
- Codex: use its MCP settings and a dedicated Domino Agent Access token with only
calendar:import. Store the token in protected environment/secret configuration, never in a chat or URL. See Codex MCP configuration and Domino token management. - Claude Mac app: open Customize → Connectors and add a custom remote connector for the MCP URL above. Use Register automatically if the client offers an OAuth identity choice; Domino supports that registration flow. Continue through Domino sign-in and explicitly select the calendar permission. Enable the connector in your conversation. See Domino OAuth setup and Claude's connector guide.
- Claude Code: not tested for this release. General MCP support does not establish this calendar workflow's acceptance.
Configuration is not verification. The authenticated connection must list domino_prepare_calendar_import, domino_get_calendar_import, domino_commit_calendar_import and domino_remove_calendar_import. Calendar sources vary by client: connect your provider separately or supply a calendar export you are allowed to use. If the agent has no source, it must ask for one or suggest Domino's screenshot flow.
Send a request
Send my busy times for the next two weeks to Domino. Read my authorized calendars, include the exact coverage and when you checked it, and omit event titles and locations. Tell me if any calendar or page is missing. Prepare and commit the private snapshot, read back its receipt, and give me the Domino management link. Do not create calendar-provider events or send invitations.
The agent may prepare and commit consecutively when your request already authorizes a complete, unambiguous import. It should ask for correction when a date, timezone, disclosure or replacement is unresolved. If you want event titles in your own Calendar view, request private titles explicitly. They never appear in agent receipts or friends' free/busy results.
Open the returned Your calendars link. Check the source and its observed time. Expand it to control Show on my calendar, Use for availability, or optional free/busy sharing. Imports are not shared with friends by default. To refresh, choose Update with my agent and send the new request. Remove deletes the Domino snapshot and its availability evidence; it does not delete events at your provider.
Freshness lasts at most 24 hours from when the agent checked the calendar. Re-importing an old snapshot does not make it fresh. Partial results can add busy evidence but cannot prove unseen time clear; retained events keep their original freshness.
Structured contract for agents
Use schemas from authenticated tools/list or the capability catalog. All four operations require calendar:import. They do not invoke a Domino model.
calendar.import.prepareaccepts asnapshotobject:schema: calendar-import.v1,owner: self,source_kind(google/outlook/ics/other),source_name, IANAtimezone, offset-bearingobserved_at,complete,calendars_included, exactcoverageintervals and resolveditems.detail_modedefaults tobusy_only; useprivate_titlesonly when requested. Each item includescalendar_key, stableoccurrence_key, optionalrecurrence_key, start/exclusive end, all-day flag and busy/available/unsure/ignore state. Different occurrences need different identities even if their times match. Do not send recurrence rules, credentials, secret feed URLs or transcripts. Unresolved items returnneeds_input.- Limits are 31 days, 1,000 incoming and retained occurrences, 100 included calendars, 31 coverage intervals and 1,000,000 bytes. Narrow oversized snapshots; never silently truncate. Failed pages/calendars mean
complete: false. No connector evidence means no import. - For an update, provide the exact
source_handleandexpected_source_revisionoutsidesnapshot. Keep the same calendar set. A different set needs a separate source. Partial updates retain omitted items. Complete updates remove omitted items only wholly inside their covered intervals. Other sources and dates remain intact. - Prepare returns an
import_handle,expected_version, optional expected source revision, replacement/removal/retained counts, coverage and owner review URL. No active availability changes yet. Commit takes these values plus a stableidempotency_key. This is an owner-private write, notactions.commitand not its 15-minute approval kernel. Drafts expire after seven days. calendar.import.gettakes exactly one import or source handle and returns a safe current receipt. Draft access/commit requires the original connection and unchanged scope; reprepare after changing either. A revoked or expired credential must be reauthorized. Retry an uncertain write with the original key and input, then read current status; a replay receipt records the original result and does not prove the source still exists.calendar.import.removerequires the exact source handle and its current expected revision, plus an idempotency key. Remove only when the user requests it.
All item and coverage boundaries should be full date-times with an explicit UTC offset (or Z), including all-day events. Convert an ICS VALUE=DATE pair such as October 16–17 into 2026-10-16T00:00:00-05:00 through 2026-10-17T00:00:00-05:00 for Chicago. The end stays exclusive. Resolve each midnight's offset separately across daylight-saving changes; an all-day event need not be exactly 24 hours. Bare dates are rejected without changing active evidence. Correct the indicated field and prepare with a new idempotency key; reserve same-key retries for unchanged input.
Saved snapshots are retained through their covered end plus 14 days unless removed earlier. Draft and revision payloads are encrypted. Source-local identifiers are HMACed for matching; event text is excluded from receipts and operational summaries. Owner review in Domino can show permitted private details. These capabilities are not exposed to SMS or the hosted Domino assistant.
Release acceptance
Protocol fixtures and actual client acceptance are separate. Verified October 13, 2026:
| Client | Calendar import evidence |
|---|---|
| Claude Mac app | Passed with a supplied fictional ICS export: prepare, safe same-key replay, commit, receipt readback and owner source controls. Busy-only privacy, bounded coverage, all-day end and observation-based freshness independently verified in production. |
| Codex CLI | Passed with a supplied fictional ICS export: prepare, commit, safe same-key commit replay, receipt readback and owner source controls. Two busy-only items, exact coverage, all-day exclusive end and observation-based freshness independently verified in production. |
| Claude Code | Untested for this release. |
This verifies the supplied-export path. Retrieval from a live Google, Microsoft or other calendar connector depends on that client's separate authorized integration and was not tested in this batch. Both fictional production sources were removed after verification; the temporary Codex test credential was revoked.