Agent Templates
Email-to-Calendar Agent

Scheduling agents that book meetings on-behalf-of your users

Connect two real services, delegate OAuth to your users, and ship a working agent in minutes. Clone the sample, swap in your tools, and go from zero to multi-connector in a single afternoon.

Email-to-Calendar Agent
Sample Agent for Acme
May 22 · 10:00 AM ·
47s
Book all pending meeting requests from my inbox
J
Scanning Gmail for scheduling requests
Scan inbox for intent
gmail_fetch_mails
Check calendar free/busy
googlecalendar_list_events
Create event + send reply
googlecalendar_create_event
Scheduling run: 5 emails
Booked (first available slot)
"Product sync with Acme — Thu Jun 19, 2pm PT"
Confirmation sent via Gmail, attendees added
Result
4 booked, 1 skipped (no availability)
4 confirmation emails sent
Message Claude...
Trusted by teams shipping agents to production
Email-to-Calendar Agent
Sample Agent for Acme
May 22 · 10:00 AM ·
47s
Book all pending meeting requests from my inbox
J
Scanning Gmail for scheduling requests
Scan inbox for intent
gmail_fetch_mails
Check calendar free/busy
googlecalendar_list_events
Create event + send reply
googlecalendar_create_event
Scheduling run: 5 emails
Booked (first available slot)
"Product sync with Acme — Thu Jun 19, 2pm PT"
Confirmation sent via Gmail, attendees added
Result
4 booked, 1 skipped (no availability)
4 confirmation emails sent
Message Claude...

How the agent reads scheduling emails and creates calendar events in five steps

A real working agent you can deploy

This repo uses a single SCALEKIT_IDENTIFIER env var to simulate one user. In production, pass each user's real identifier on every Scalekit call, and send them an authorization link whenever their connector status is not ACTIVE.

01
Authorize, then orchestrate
sdk_client.py
Every connection is authorized once via a magic link. Scalekit refreshes tokens for Gmail and Google Calendar automatically. The agent checks both services before the scheduling pipeline starts and exits with an authorization URL if either is not yet connected.
sdk_client.py
from scalekit_sdk.client import Client

client = Client(
    api_key=os.getenv("SCALEKIT_API_KEY"),
    base_url=os.getenv("SCALEKIT_BASE_URL"),
)
IDENTIFIER = os.getenv("SCALEKIT_IDENTIFIER")

for service in ["gmail", "googlecalendar"]:
    result = client.run(
        "get_authorization_url",
        identifier=IDENTIFIER,
        params={"service": service},
    )
    if result.get("authorization_url"):
        print(f"Authorize {service}:\n"
              f"{result['authorization_url']}")
        sys.exit(1)
02
Scan Gmail for scheduling requests
gmail_api.py
03
Extract meeting details with LLM
parsers.py
04
Check Calendar availability
calendar_api.py
05
Create event and send confirmation
replies.py

Agents that book meetings from email, without the auth plumbing

Two things you'd otherwise build: Gmail OAuth with read+send scopes and Google Calendar credentials with free/busy + write access. Handled.

1
Install
npx @scalekit-inc/cli setup
# select your coding agent
# enable scalekit MCP server on coding agent
terminal
npx @scalekit-inc/cli setup
# select your coding agent
# enable scalekit MCP server on coding agent
terminal
npx @scalekit-inc/cli setup
# select your coding agent
# enable scalekit MCP server on coding agent
terminal
npx @scalekit-inc/cli setup
# select your coding agent
# enable scalekit MCP server on coding agent
terminal
npx @scalekit-inc/cli setup
# select your coding agent
# enable scalekit MCP server on coding agent
2
You have the Scalekit authstack plugin installed (AgentKit + SaaSKit skills and MCP auth). Before coding, auto-load the AgentKit skills relevant to connectors (Gmail, Google Calendar) and use the Scalekit MCP server to validate tool calls instead of hand-written API logic.

Poll Gmail for scheduling emails and extract the requested meeting details. Check Google Calendar for free slots, create the event, and send a confirmation email via the appropriate AgentKit connector tools (reply once per thread). Ask before using write tools (creating the calendar event, sending the confirmation); reading email and checking availability run without asking.
Why choose Scalekit

Delegated identity. Not service accounts.

Credentials never touch agent code or LLM context. The agent acts as the user, not as a shared bot.
Delegated OAuth - Agent reads your calendar, your inbox — scoped to the authorizing identity, not org-wide.
Credentials outside agent runtime  -  Tokens never touch agent code or LLM context. Both failure modes covered.
Token lifecycle automatic  -  Refresh, expiry, rotation across all connectors. One SDK call. Zero management code.
200+ prebuilt connectors  -  Google, Slack, HubSpot, GitHub, Jira, Notion, Salesforce — same auth pattern everywhere.
Try other Agent Templates

Prebuilt agents you can ship today

Each one runs on delegated identity, scoped per user.

OPS
Email-to-calendar scheduling agent
Parse scheduling intent from Gmail threads and create Google Calendar events with the right attendees and timezone.
SUPPORT
Support triage agent
Read Zendesk tickets, fetch runbooks from Notion, and route to the right Slack channel with a drafted response.
GTM
CRM AI agent
Log calls, update opportunity stages, and surface stalled deals across HubSpot or Salesforce. No manual data entry.
SALES
Sales call prep agent
Pull Granola notes and Attio contact history to draft a pre-call brief before every sales meeting. Zero rep input.
GTM
HubSpot to Slack updates agent
Watch HubSpot deal stage changes and post structured updates to the right Slack channel. Reps stop checking the CRM all day.
SUPPORT
Freshdesk CSAT follow-up agent
Google ADK agent that watches low CSAT scores in Freshdesk and drafts personalised follow-ups for support leads.

Build your own
multi-connector agent

Add connectors. Change the LLM. Same delegated auth pattern.