Agent Templates
Meeting prep

Meeting prep agents that act on-behalf-of your users

Connect four 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.

Meeting prep
Sample Agent for Acme
May 22 · 10:00 AM ·
47s
Prep me for my 10:00 with Acme corp
J
Pulling your next meeting
Next calender event
google_calender
Contact & deal stage
hubspot_search
Recent threads
gmail_messages
Brief - Jane smith - Acme corp
Email (may 18)
"Re: Scalekit eval": token isolation Q
Send arch diagram before call
Talking points
Lead with token isolation
Auth depth vs connector breadth
Message Claude...
Trusted by teams shipping agents to production
Meeting prep
Sample Agent for Acme
May 22 · 10:00 AM ·
47s
Prep me for my 10:00 with Acme corp
J
Pulling your next meeting
Next calender event
google_calender
Contact & deal stage
hubspot_search
Recent threads
gmail_messages
Brief - Jane smith - Acme corp
Email (may 18)
"Re: Scalekit eval": token isolation Q
Send arch diagram before call
Talking points
Lead with token isolation
Auth depth vs connector breadth
Message Claude...

How agent builders go from zero to user-authorized in seven steps

A real working agent you can deploy

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

01
Authorize, then orchestrate
main.py
Every connection is authorized once via a one-time link. After that Scalekit refreshes tokens for you. main.py checks all four, then runs the per-meeting loop.
Main.py
import os
from scalekit import ScalekitClient
from langchain.agents import create_tool_calling_agent

client = ScalekitClient(
    env_url=os.environ["SCALEKIT_ENV_URL"],
    client_id=os.environ["SCALEKIT_CLIENT_ID"],
    client_secret=os.environ["SCALEKIT_CLIENT_SECRET"],
)

# LangChain-compatible tools scoped to this user
tools = client.actions.langchain.get_tools(
    identifier="user@example.com",
    connection_names=["granolamcp"],
)

agent = create_tool_calling_agent(llm, tools, prompt)
02
Filter external meetings
filter_meetings.py
03
Lookup the contact
lookup_contact.py
04
Pull email history
lookup_gmail.py
05
Read slack channel
lookup_slack.py
06
Deliver the brief
deliver_brief.py
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.

Agents that do real work, without the auth plumbing

Three things you'd otherwise build: OAuth, token storage, refresh. Handled.

OAuth flow per connector
One SDK call returns a delegated token for any connector. Google, HubSpot, Slack, same pattern across all 200+ connectors
token = client.agents.get_token(
user_id, "gmail"
)
Secure token vault  
Scalekit stores OAuth credentials outside agent code and outside LLM context. Both are separate failure modes. Both covered
# No token table.
# No secrets in .env.
# No DB columns for refresh tokens
Token refresh logic
Token lifecycle handled automatically — expiry, rotation, re-auth — across every connector. Agent runs in 6 months. Same call works
# No cron jobs for refresh.
# No try/except on 401s.
# No expiry checks.
Try other Agent Templates

Prebuilt agents you can ship today

Each one runs on delegated identity, scoped per user.

Competitor Watch
Weekly intel on named competitors
Deal Review
Pipeline context before every forecast
Onboarding Brief
Day-1 context for every new customer
RFP Tracker
Auto-draft answers from past RFPs
Weekly Digest
Account pulse every Monday at 9am
Customize the sample

Clone it and own it with connectors you choose

Don't sweat the integration. Point a coding agent at the repo. It clones, swaps in your connectors, and adds new steps for you.

1
Install a coding agent
terminal
# Claude Code
npm install -g @anthropic-ai/claude-code
# in your project folder
claude
terminal
# Claude Code
npm install -g @anthropic-ai/claude-code
# in your project folder
claude
terminal
# Claude Code
npm install -g @anthropic-ai/claude-code
# in your project folder
claude
terminal
# Claude Code
npm install -g @anthropic-ai/claude-code
# in your project folder
claude
terminal
# Claude Code
npm install -g @anthropic-ai/claude-code
# in your project folder
claude
2
Give it this prompt
Clone github.com/scalekit-inc/meeting-prep-agent-example and adapt it to my stack.

Tools I use: Google Calendar, HubSpot, Gmail, Slack

Trigger: before every external meeting. Deliver: post the brief to my Slack

Steps:

1. Create a Scalekit AgentKit account. For each tool, add a Connection named meeting-prep-{tool} — the code resolves connections by name.

2. For any tool I've changed, mirror an existing lookup_*.py module: get_or_create_connected_account → execute_tool(tool_name, identifier, connected_account_id, tool_input) → read resp.data. Find exact tool names at docs.scalekit.com/agentkit.

3. Keep delegated identity — every call passes identifier=SCALEKIT_USER_ID. No service accounts, no shared tokens.

4. Wire each new step into process_meeting() in main.py.

5. Run python main.py, open the printed authorization links once, then send a test brief to my Slack channel.

Build your own
multi-connector agent

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