Solutions

Daily operations

Change the meeting, and the invites go out.

#design-teamprivate channel3 tool calls

Three names added to one occurrence of a recurring meeting, with an agenda, through Google Calendar on the asker's own account. Names become attendees through a contacts search; the change is held as a Confirm card naming the occurrence and the people; press it and the invitations go out.

design-team

Mei8:53 AM

@attest_tag add Sam, Priya and Dan to Tuesday's design review — that occurrence only — and put the agenda in: five-file review

attest_tagApp8:54 AM

  • http_request · GET www.googleapis.com/calendar/v3/…/events?q=design+review · 1 series
  • http_request · GET people.googleapis.com/v1/people:searchContacts · 3 matches
  • http_request · PATCH …/events/…_20260915T103000Z?sendUpdates=all · held

Please confirm — this needs your OK. I’ll update the Tuesday occurrence only of Design review, leaving the recurring series untouched: add the three as attendees, set the description to “Agenda: five-file review”, and send the invitations.

Waiting on a human

Update the 15 Sep occurrence of Design review

Add Sam, Priya and Dan as attendees; description “Agenda: five-file review”; invitations sent to all.
google/calendar · as MeiPATCH /calendar/v3/calendars/primary/events/…_20260915T103000Z?sendUpdates=all

Done — the Tuesday occurrence is updated, series untouched. All three got an invite; agenda set; Meet link.

google/gemini-flash5.4k in390 out$0.0029Configure

Names, figures, repositories and customers are changed; token counts and cost are illustrative. The ask, and the shape of the answer, are as they were.

How the turn went

Everyone signs in for themselves; the change is held; it runs as you.

  1. 01

    Everyone signs in for themselves

    An admin registers an OAuth client once; each person connects their own Google account from a DM. The client id and secret reach nobody’s account on their own.

  2. 02

    Names to people, the event on your calendar

    “Sam, Priya and Dan” is a contacts search; the meeting is found on the asker’s own calendar, and “that occurrence only” becomes an instance update rather than a series edit.

  3. 03

    The hold, then the update as you

    The card names the occurrence and the people. Confirm runs the PATCH out of the asker’s account, with invitations sent. An approver may press Confirm for someone else; it still runs as the asker.

What it needs

The setup, in the console.

Connection
The Google Workspace preset: an OAuth client an admin registers once, with the parts you mean to use ticked — Gmail, Calendar, Drive, Contacts — attached to the channel.
Credential
Each person's own sign-in, from a Connect button the bot DMs them, held per user. No shared token exists for a channel to spend.
Writes policy
confirm. Reads — the calendar, free/busy, contacts — run; every change shows the card.

What it will not do

Enforced outside the model.

  • It cannot touch a calendar that is not the asker's; there is no token for one.

  • Free/busy is read freely even though it answers to POST: the proxy knows that path is a read, because a card people press in order to look at something teaches them to press without reading.

Try it

Say it in a channel it is in.

The sentence as it was typed. It works in any channel the bot has been invited to that carries the connection above — no command syntax, no form, and follow-ups in the thread need no mention.

@attest_tag add Sam, Priya and Dan to Tuesday's design review — that occurrence only — and put the agenda in: five-file review

  • Google Calendar
  • http_request

Bring the channel this would live in.

Sign up, connect the service above in one channel, and type this sentence yourself — or run the same binary on your own infrastructure.

All solutions