Privacy policy
Last updated: 24 August 2026
FlyCal is a small calendar product. This page explains which personal data the service needs, why it needs it, where it lives, and how you can ask for it to be corrected or deleted.
If you connect Google, the disclosures that Google OAuth verification requires are in section 3 (Google user data): what is accessed, how it is used, with whom it is shared, how it is protected, and retention and deletion.
1. Controller
The controller of personal data processed through FlyCal is:
Antonio Molinari
Via Caselle 6
26032 Ostiano (CR), Italy
Email: support@m6i.it
Site: https://m6i.it
Service: https://app.flycal.it
In this document “FlyCal”, “I”, and “the service” refer to that person acting as a natural person, not as a company.
2. What FlyCal does
FlyCal helps you see when you are free or busy, using Google Calendar as the source of truth. You can sketch availability, look at the same answers from a command-line tool, call an HTTP API, or connect an assistant through the Model Context Protocol (MCP).
A free plan is available. A paid plan with extra features is planned. When billing starts, this policy and the terms will say which payment provider is used. Card numbers will not be stored on FlyCal’s servers.
3. Google user data
This section describes Google user data accessed through Google Sign-In and the Google Calendar API. FlyCal’s use of information received from Google APIs adheres to the Google API Services User Data Policy, including the Limited Use requirements.
FlyCal requests read-only Calendar access. It does not request permission to create, update, share, or delete events or calendars in your Google account, and it does not write back to Google Calendar.
3.1 What Google user data is accessed
After you choose to connect Google, FlyCal requests only these OAuth scopes:
-
https://www.googleapis.com/auth/calendar.readonly— see and download calendars you can access, including event details (read-only). -
https://www.googleapis.com/auth/userinfo.email(also requested asemail) — the email address of the Google account you sign in with. -
https://www.googleapis.com/auth/userinfo.profile(also requested asprofile) — basic profile such as display name and profile picture URL.
From those APIs FlyCal may receive, and in some cases store, the following:
- Identity: Google account email, display name, and profile picture URL used to create or match your FlyCal account.
-
OAuth credentials: access token, refresh token, and expiry, so FlyCal can call the
Calendar API on your behalf until you disconnect. The flycal command-line tool, if you use it, keeps
equivalent tokens on your own computer (usually under
~/.flycal/). - Calendar list: calendar identifiers, names, descriptions, whether a calendar is primary, and which calendars you select in FlyCal.
- Event data as returned by Google for the calendars you select, typically including event identifiers, titles (summaries), start and end times, all-day flags, time zones, descriptions, locations, organiser, and attendee names or email addresses when Google includes them, plus busy/free status used to compute availability.
FlyCal does not request Gmail, Drive, Contacts, or other Google products. It does not access Google user data until you complete Google’s consent screen.
3.2 How Google user data is used
Google user data is used only to operate FlyCal for you:
- sign you in (or link an existing FlyCal account) with Google;
- list the calendars you can choose, and remember which ones you selected;
- read events on those calendars to show busy time and compute free slots in the web app, the CLI, the HTTP API, and MCP tools you authorise;
- cache event results for a short time (minutes) so repeated queries are faster and use fewer API calls;
- diagnose faults that affect your connection (for example an expired token), including error reports that may contain identifiers such as user id or email.
FlyCal does not use Google user data to:
- serve advertising or build advertising profiles;
- sell or rent the data;
- determine creditworthiness or lend it to others for that purpose;
- train, develop, or improve generalized or non-personalized artificial intelligence or machine-learning models;
- create, update, or delete events in your Google Calendar.
Human access by the operator is limited to providing the service, support you request, and security or abuse investigation.
3.3 With whom Google user data is shared, transferred, or disclosed
I do not sell Google user data. I do not share it with advertisers or data brokers. It is disclosed only as follows:
- You — in the FlyCal web app, CLI, API, and any MCP client you connect, as availability and related answers derived from your calendars.
- The operator (Antonio Molinari) — as controller, with access limited to running the service, support, and security.
- Hetzner Online GmbH — hosting in Germany. The application database (including OAuth tokens and calendar metadata) and operational logs live on that server.
- Google — FlyCal sends OAuth tokens back to Google to fetch calendar data. Google remains the independent controller of your Google account.
- Functional Software, Inc. (Sentry) — error monitoring. Crash reports may include user identifiers, request path, and, incidentally, fragments of request data. They are used to fix faults, not to reuse calendar contents.
- MCP or API clients you authorise — those clients receive the answers you ask for (typically free/busy or slot results). After data leaves FlyCal, that client’s own terms apply.
- Legal obligation — if a competent authority lawfully requires disclosure, or if it is strictly necessary to protect the service or users against abuse or crime.
Google Fonts and jsDelivr may receive your IP address when the web interface loads typefaces or scripts. That is ordinary page delivery, not a transfer of Calendar event contents.
3.4 Data protection for Google user data (including sensitive calendar content)
Calendar events can contain sensitive personal information (for example meeting titles, attendees, or descriptions). FlyCal treats Google Calendar data as confidential account data and applies these measures:
- Encryption in transit: HTTPS/TLS between your browser or CLI and FlyCal, and between FlyCal and Google’s APIs.
- Access control: production server and database access is limited to the operator. Your calendar data is tied to your FlyCal account; other users cannot read it through the product.
- Credential hygiene: account passwords and API keys are stored hashed. Google OAuth tokens are stored on the EU host for the web app (or only on your machine for CLI-only use) and are not published.
- Minimisation: only the scopes listed above are requested. Event payloads are kept to operate availability features and a short cache, not a long-term archive of every historical event.
- Environment: the app runs on a dedicated Hetzner server in Germany, with a local SQLite database on disk and TLS at the reverse proxy. There is no separate analytics warehouse of calendar contents.
- Revocation: you can disconnect Google in FlyCal and revoke access in your Google Account permissions.
No method of storage or transmission is perfectly safe. If a breach affecting Google user data is confirmed, I will notify you and the authorities when the law requires it.
3.5 Retention and deletion of Google user data
While connected: OAuth tokens, the list of calendars you selected, and related account links are kept for as long as the Google connection (and your FlyCal account) exists, so the product can keep showing availability. Event data fetched from Google is used on demand and may be cached for a short period (on the order of minutes) and then discarded or overwritten.
CLI: tokens stored under ~/.flycal/ remain on your computer until you log out,
uninstall the tool in a way that removes them, or delete those files yourself.
How to delete Google user data from FlyCal without closing the Google account itself:
- In FlyCal, disconnect Google from your profile. That revokes the app’s stored refresh and access tokens on the server and stops further Calendar API calls.
- Optionally revoke FlyCal in Google Account → Third-party access so Google also invalidates the grant.
- To erase the FlyCal account and remaining copies (selected calendars, availability sketches, API keys), use Delete account on your profile, or email support@m6i.it from the address on the account. After identity checks (when you write in), deletion from live systems starts without undue delay.
Residual backups of the server disk may hold copies for a short technical window; they are not put back into ordinary use and expire with the backup cycle. FlyCal does not delete events from your Google Calendar when you disconnect: those events stay in Google unless you change them there.
4. Other categories of data
Account
Email address, name, password hash (if you register with email), profile picture URL if Google Sign-In provides one, language preference, and role metadata (for example whether the account is an administrator).
Google Calendar connection
See section 3. In short: OAuth tokens, selected calendars, and event fields needed to compute free/busy, under read-only Calendar scope.
Availability you draw
Time windows you sketch in the web app, plus the generated text summary stored with your account.
API keys, CLI, and MCP
Hashed API keys if you create them. OAuth client registrations, authorisation codes, and access or refresh
tokens if you connect an MCP client. The flycal command-line tool keeps Google tokens on your own computer
(usually under ~/.flycal/) unless you also use the web app with the same Google account.
Technical and security data
IP address, browser and device information, requested URLs, timestamps, and diagnostic logs needed to run and protect the service. Invitation codes may be stored in a technical cookie while you sign up.
FlyCal is not meant for health data, judicial data, biometric data, or data about children as an ordinary use of the product. Do not upload that kind of material.
5. Purposes and legal bases
- Running the account and the product (sign-in, calendars, slots, availability, CLI, API, MCP): performance of a contract, Art. 6(1)(b) GDPR.
- Connecting Google Calendar: you start that connection yourself; processing follows from the contract and from the permission you grant in Google’s consent screen.
- Security, abuse prevention, error diagnosis: legitimate interest in keeping the service usable and safe, Art. 6(1)(f) GDPR.
- Answering support requests: contract and, where needed, legitimate interest.
- Legal duties (for example tax records once paid plans exist): Art. 6(1)(c) GDPR.
- Optional tracking: none is active today. If non-essential cookies are added later, they will run only with consent, Art. 6(1)(a) GDPR. See the cookie policy.
Calendar data is used to show you (and tools you authorise) when you are free or busy. It is not used for advertising, resale, or training general-purpose models. Details for Google user data are in section 3.2.
6. Where data is processed
The application runs on a dedicated server in Germany, operated by Hetzner. The stack is a containerised Ruby on Rails app with a local SQLite database on disk, TLS at the reverse proxy, and background jobs on the same host. There is no separate analytics warehouse.
Some processing happens at other providers because the product cannot work without them, as listed below. I prefer to keep the primary copy of account and calendar data in the EU.
7. Recipients and processors
I do not sell personal data. Access is limited to me, to you (for your own account), and to the providers needed to deliver FlyCal. Those providers act as processors or as independent controllers, depending on the service. Recipients of Google user data are listed in section 3.3.
Hetzner Online GmbH
Role: hosting and infrastructure in Germany.
Data: the application database, files, and operational logs.
Location: Germany (EU).
Role: Sign-In and Calendar API. Google is an independent controller of your Google account.
FlyCal uses Google as a source of identity and calendar events after you authorise it.
Data: profile and email on sign-in; OAuth tokens; calendar lists and events as returned by the API. See section 3.1.
Location: processing may occur in the EEA and in other countries, under Google’s terms and the transfer tools Google publishes (including adequacy decisions or standard contractual clauses where they apply).
Functional Software, Inc. (Sentry)
Role: error monitoring so crashes can be fixed.
Data: stack traces, request path, and, with personally identifiable information enabled, identifiers such as user id, email, IP address, and user agent. Request parameters may be included; they are minimised where practical.
Location: the project is configured to send events to Sentry’s European ingest endpoint. Residual processing outside the EEA cannot be excluded and, if it occurs, relies on the safeguards Sentry documents for that transfer.
Google Fonts and jsDelivr
The web interface loads the Lato typeface from Google’s font servers and, on screens that show a calendar, the FullCalendar library from the jsDelivr content network. Those requests can expose your IP address and user agent to the respective operator. They are used only to render the interface, not to profile you for FlyCal.
Assistants you connect (MCP)
If you authorise a third-party client (for example a desktop assistant) to call FlyCal over MCP, that client receives the calendar-derived answers you ask for. After the data leaves FlyCal, that provider’s own terms apply. Disconnect the client if you no longer want it to have access.
Future payment provider
When a paid plan is offered, checkout will be handled by a specialised billing provider. FlyCal will receive status of the subscription, not the full card number. This section will name the provider before paid checkout goes live.
8. International transfers
Hosting is in Germany. Google Sign-In, Google Calendar, font delivery, the JavaScript CDN, and error monitoring may involve processing outside the EEA. Where that happens, the transfer rests on an adequacy decision, standard contractual clauses, or another mechanism allowed by Chapter V GDPR, as published by the relevant provider.
9. Retention
- Account, calendar connection, and availability: kept while the account exists. Google-specific retention and deletion are in section 3.5.
- API keys and MCP tokens: kept until you revoke them or the account is closed.
- Technical logs and error events: kept only as long as useful for security and debugging, then overwritten or deleted.
- Invitation cookie: until it is used or you clear site data.
- Backups of the server disk may retain copies for a short technical window after deletion from the live database.
You can disconnect Google from your profile, or delete the whole account from the profile page. To delete the account another way, write to support@m6i.it from the address on the account. After identity checks, erasure from live systems starts without undue delay. Residual backup copies are not put back into ordinary use and disappear when the backup cycle ends. Legal retention (for example invoices, once billing exists) is limited to that purpose.
10. Your rights
If GDPR applies to you, you may request access, rectification, erasure, restriction, objection, and portability, and you may withdraw consent where processing is based on consent, without affecting earlier lawful use. You may also lodge a complaint with the Italian Data Protection Authority (Garante per la protezione dei dati personali) or with the authority of your EU/EEA country of residence.
Use support@m6i.it. I will answer within one month, with the extensions GDPR allows for complex cases.
11. Children
FlyCal is not directed at people under 16. I do not knowingly collect their data. If you think a child created an account, contact me and I will delete it.
12. Security
Traffic to the app is encrypted in transit (HTTPS). Passwords are stored as hashes. API keys are stored hashed. Production access is limited to the operator. Error reports help detect failures. Measures specific to Google user data are in section 3.4. No method of storage or transmission is perfectly safe.
13. Related documents
Use of the product is also governed by the terms and conditions. Cookies and similar storage are described in the cookie policy.
14. Changes
This page will change when the product, the hosting, or the law requires it. The date at the top is the current version. Continued use after an update means you have seen the new text; if a change is material, I will try to flag it in the app or by email when I have an address for you.