# How to connect Google Calendar to Hermes Agent

> Let Hermes Agent read your Google Calendar, find free time, add events and answer invites, or keep it read-only. No Google Cloud project to set up.

Updated 2026-10-17 · https://upsy.ai/guides/hermes/google-calendar

## Short answer

Hermes Agent's bundled Google Workspace skill can list, create and delete Google Calendar events once you've set up a Google Cloud project and an OAuth client, and the same sign-in also opens your Gmail. Its hosted connectors may offer Calendar too. To let Hermes see your schedule without changing it, or to find free time, move events and answer invitations, connect Google Calendar in Upsy and sign Hermes in with `hermes mcp login upsy`. It takes about five minutes.

## The built-in way

### Calendar in the Google Workspace skill

The [google-workspace skill](https://github.com/NousResearch/hermes-agent/blob/main/skills/productivity/google-workspace/SKILL.md) has three calendar commands:

- **list** events, the next 7 days by default, on your main calendar or one you name
- **create** an event, with a place and guests
- **delete** an event

It has nothing to move or rename an event, answer an invitation or look for free time. Times must carry a UTC offset, such as `2026-03-01T10:00:00-06:00`: the [skill's docs](https://hermes-agent.nousresearch.com/docs/user-guide/skills/google-workspace) warn that a time without one is read as UTC.

Setup is the one described in the [Gmail guide](/guides/hermes/gmail): a Cloud project, six APIs, a Desktop app OAuth client, yourself as a test user, then a browser approval. The script asks Google for everything in one go: full Calendar access along with reading, sending and changing mail, and full Drive. With a personal Gmail the app is External, and while it's in Testing, Google [expires the sign-in after 7 days](https://developers.google.com/identity/protocols/oauth2).

### Hosted connectors

Since [v0.22.0](https://github.com/NousResearch/hermes-agent/releases/tag/v0.22.0), Hermes reaches hosted apps through the Nous tool gateway after one browser sign-in. Nous's docs give Gmail as the example, and Hermes's code also has a label for Google Calendar, so run `hermes connectors list` to see whether it's offered to you. The docs don't describe its actions or a read-only mode.

### Google's Calendar MCP server

Google's [Calendar MCP server](https://developers.google.com/workspace/calendar/api/guides/configure-mcp-server) lists, creates, updates and deletes events, answers invitations and suggests times. It's in a developer preview that needs enrollment, a Cloud project and your own OAuth client, and as of October 2026 Hermes can't complete its sign-in ([issue #137289](https://github.com/NousResearch/hermes-agent/issues/137289)).

### Google Meet calls

Hermes's [google_meet plugin](https://github.com/NousResearch/hermes-agent/tree/main/plugins/google_meet) joins a Meet call from a link you give it and transcribes the captions. By design, it doesn't scan your calendar. Upsy reads the Meet link on an event, so Hermes can find the meeting first.

If you already run the skill and only need to list and add events in one account, it's enough.

### Where Upsy fits

- **No Cloud project or test users,** and no Testing app that signs you out every week.
- **Read-only:** Hermes lists events, opens them and finds free time, and can't change anything.
- **More actions:** free time, moving and renaming events, changing guests, and answering invitations.
- **Calendar apart from Gmail,** each with its own level, such as Gmail read-only and Calendar full.
- **Up to five Google accounts,** so a work and a personal calendar side by side.

## What you need

- A working Hermes Agent install with a model configured. These steps were checked against [v0.22.2](https://github.com/NousResearch/hermes-agent/releases).
- A Google account. On Google Workspace, your admin may [limit outside apps](https://knowledge.workspace.google.com/admin/apps/control-which-apps-access-google-workspace-data).
- A free Upsy account.
- If Hermes runs on a server, read the sign-in tip under Troubleshooting first.

## Connect Google Calendar to Hermes Agent

1. Create your account at [upsy.ai](https://upsy.ai) with **Set up Upsy**.
2. On the **Apps** page, click **Connect an app**, then **Connect** on Google Calendar. A page explains that Google Calendar goes through Composio for the time being; click **Continue** and sign in with the Google account whose calendar Hermes should see.
3. Optional: use **Add another account** on Google Calendar for a second Google account, such as work next to personal.
4. Already use Upsy in Hermes, for Gmail say? A newly connected app starts at Full access for your assistants, so just run `/reload-mcp` in Hermes and lower the level on Hermes Agent's page if you want. Otherwise, carry on.
5. Under **Assistants**, click **Add assistant** and choose **Hermes** under **Which assistant?**.
6. Save Upsy in Hermes's config:

   ```
   hermes config set mcp_servers.upsy.url https://upsy.ai/connect && hermes config set mcp_servers.upsy.auth oauth
   ```

7. Run `hermes mcp login upsy`. On the Upsy page that opens, sign in and keep Google Calendar ticked. Pick **Read-only** if Hermes should only look, or **All** if it may add and change events, then click **Allow**. Hermes waits five minutes for this.
8. Run `hermes mcp test upsy`, and `/reload-mcp` in any open Hermes chat.

Using Hermes from Telegram or another platform? Its gateway picks up new servers from `config.yaml` within about a minute, but never opens a browser, so run step 7 in a terminal. More in the [MCP server guide](/guides/hermes/add-mcp-server).

## Check that it works

`hermes mcp test upsy` should list `calendar_list_events`, `calendar_get_event` and `calendar_find_free_time`, plus the tools that change events if you chose All. Then ask:

> Using upsy, what's on my calendar tomorrow, and where do I have a free hour?

Hermes should call `mcp_upsy_calendar_list_events`, then `mcp_upsy_calendar_find_free_time`. On Read-only, ask it to add a test event: with one Calendar account, the create tool isn't listed, so Hermes says it can't.

## What Hermes can do with Google Calendar

| Tool | What it does | On Read-only |
|---|---|---|
| `calendar_list_events` | Events in a range (next 7 days by default), up to 100 at a time, with a text filter | Yes |
| `calendar_get_event` | One event: description, organizer, guests and their answers, your answer, Meet link | Yes |
| `calendar_find_free_time` | Gaps of at least a given length, optionally only within working hours | Yes |
| `calendar_create_event` | A timed or all-day event, with a time zone, place, description and up to 50 guests | No |
| `calendar_update_event` | Changes only what's given: time, title, place, description, guests added or removed | No |
| `calendar_delete_event` | Deletes an event | No |
| `calendar_respond` | Accepts, declines or answers maybe | No |

Worth knowing:

- Upsy uses your main calendar unless Hermes passes another calendar's id. Free time is always worked out on the main one.
- In free time, events you declined or marked as free don't count as busy, while an all-day event shown as busy, like a vacation, blocks the whole day.
- Google emails the guests whenever Hermes creates, changes or deletes an event they're on, and tells the organizer when Hermes answers an invite.
- Upsy doesn't add a Meet link to the events it creates.
- With several accounts, each tool takes an `account`. Without it, Upsy uses the first one you connected.

The levels are **Full access**, **Read-only** (the "Yes" rows), **Pick actions** and **No access**. Pick actions lets you allow, say, answering invites but never deleting.

## Prompts to try

- "Using upsy, list next week's meetings and flag any that overlap."
- "Find two 45-minute slots on Thursday between 10:00 and 16:00, UTC+3."
- "Read Ana's email about the offsite and add both days to my calendar as all-day events."
- "Decline the 8:00 sync on Friday and accept the design review."
- "Every Sunday at 18:00, send me next week's schedule from my work and personal calendars."
- "Get the Meet link for my 15:00 call and join it." This needs the Meet plugin.

## Troubleshooting

### Signing in when Hermes runs on a server

`hermes mcp login upsy` waits for the browser on a local port of the machine Hermes runs on. Over SSH, open the link on your own computer, approve, and paste the full URL from the address bar at Hermes's "paste the redirect URL here" prompt. Or pin the port with `oauth.redirect_port` and forward it with `ssh -N -L <port>:127.0.0.1:<port> user@host` ([Hermes's MCP docs](https://hermes-agent.nousresearch.com/docs/user-guide/features/mcp)).

### Calendar tools don't show up in Hermes

Upsy lists Calendar's tools only when Hermes may use Calendar, and Hermes keeps the list it got when it connected. After connecting Calendar or changing its level, run `/reload-mcp`. If they're still missing, check that Calendar is on for Hermes Agent in Upsy.

### Hermes on Telegram stopped using Upsy

The gateway can't open a browser. If the Upsy sign-in lapses, Hermes parks the server until you run `hermes mcp login upsy` in a terminal.

### Events are hours off

Give the time with your time zone or offset ("15:00 Berlin time"). Better, tell Hermes to remember your time zone once, so every later request uses it.

### Guests were emailed before you were ready

Google mails every guest as soon as an event with them is created or changed. Have Hermes show you the draft event first, or leave create and update out under Pick actions.

### A shared calendar is missing

Give Hermes the calendar's id from Google Calendar's settings. Without one, Upsy reads your main calendar.

### Google's sign-in names Composio

Expected for now: while Google reviews Upsy's own Google app, Calendar signs in through Composio's verified one.

## Security and privacy

- **Hermes holds only an Upsy token.** It calls Upsy's tools, and Upsy calls Google Calendar.
- **Read-only is enforced by Upsy,** not by the model: the tools that add, change or delete events aren't listed, and Upsy refuses them if called.
- **Scheduled tasks run while you're away.** For a recurring job that only reports, keep Calendar on Read-only.
- **History** shows each calendar action under Hermes Agent, with the event's name.
- **Alerts** email you if one assistant deletes 50 or more items in 10 minutes, deleted events included, and when a new assistant or app connects.
- **Turning it off:** set Google Calendar to No access for Hermes, or click **Remove Hermes Agent**. Disconnecting the calendar on the Apps page removes it for every assistant, and at Composio too.

## FAQ

### Can Hermes Agent use Google Calendar?

Yes. Its google-workspace skill lists, creates and deletes events after a Google Cloud setup, and `hermes connectors list` shows whether a hosted Calendar connector is open to you. Through Upsy, Hermes also finds free time, changes events and answers invites, at the level you set.

### Can Hermes Agent use Gmail and Calendar together?

Yes, both ways. The skill signs in once for both. In Upsy they're separate apps with their own levels, and Hermes can read an email and put its dates in your calendar in one request. See [Gmail with Hermes Agent](/guides/hermes/gmail).

### Can Hermes add events to my Google Calendar?

Yes, with Calendar on Full access in Upsy, or on Pick actions with creating ticked. Google then sends the guests their invitations as usual.

### Can I keep Hermes read-only on my calendar?

With Upsy, yes. Set Google Calendar to Read-only and Hermes can list events, open them and find free time, but not change anything.

### Can Hermes find a time that suits other people?

Upsy finds free time on your own calendars, not other people's. With several accounts connected, Hermes can check each of yours.

### Can Hermes read my Google Drive files too?

Yes, Drive is a separate app in Upsy. See [Google Drive, Docs and Sheets with Hermes Agent](/guides/hermes/google-drive), and every guide in the [Hermes Agent hub](/guides/hermes).

---

Upsy connects personal AI assistants (Muse, Grok, ChatGPT, Claude, Cursor, Claude Code, Codex, Devin) to your Gmail, Google Calendar, Google Drive, Slack, Notion and other apps through one MCP server, with a shared memory, files and a cloud browser signed in to your sites. You choose what each assistant may do in each app, see everything it did, and turn it off in one click. Upsy is free. To add Upsy to an assistant, add a remote MCP server (Streamable HTTP) named Upsy at https://upsy.ai/connect. It signs in with OAuth; there is no API key.
