Agent Templates
Sales Call Prep Agent

Sales call 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.

Sales Call Prep Agent
Sample Agent for Acme
May 22 · 10:00 AM ·
47s
Prep me for my 2pm call with Datadog
J
Pulling your next meeting
Upcoming calendar event
google_calendar_events
Prior Granola notes
granola_get_notes
Deal context in Attio
attio_search_deal
Brief: Alex Chen at Datadog
Attio deal (last updated)
"Deal: $45k Enterprise. Stage: Proposal."
Open question: SIEM integration timeline
Talking points
Lead with token isolation architecture
Address latency questions from last call
Message Claude...
Trusted by teams shipping agents to production
Sales Call Prep Agent
Sample Agent for Acme
May 22 · 10:00 AM ·
47s
Prep me for my 2pm call with Datadog
J
Pulling your next meeting
Upcoming calendar event
google_calendar_events
Prior Granola notes
granola_get_notes
Deal context in Attio
attio_search_deal
Brief: Alex Chen at Datadog
Attio deal (last updated)
"Deal: $45k Enterprise. Stage: Proposal."
Open question: SIEM integration timeline
Talking points
Lead with token isolation architecture
Address latency questions from last call
Message Claude...

How the agent assembles per-rep context and delivers a brief in five 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. Scalekit refreshes tokens for you across all four connectors. main.py checks each connector's ACTIVE status, generates authorization links for any that are not, then polls Google Calendar every 15 minutes and runs the brief pipeline for upcoming external meetings.
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=["googlecalendar", "granolamcp", "attio", "slack"],
)

agent = create_tool_calling_agent(llm, tools, prompt)
02
Poll calendar for upcoming meetings
poll_calendar.py
03
Fetch prior Granola notes
fetch_granola.py
04
Look up Attio deal context
lookup_attio.py
05
Deliver brief via Slack DM
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 prep every call, without the auth plumbing

Four things you'd otherwise build: Calendar OAuth, Granola MCP tokens, Attio credentials, Slack auth. Handled.

OAuth flow per connector
One SDK call returns a delegated token for any connector. Google, HubSpot, Slack, same pattern across all 200+ connectors
tools = client.actions.langchain.get_tools(
    identifier=user_id,
    connection_names=["googlecalendar", "granolamcp", "attio"],
)
agent = create_tool_calling_agent(llm, tools, prompt)
Secure token vault  
Scalekit stores OAuth credentials outside agent code and outside LLM context. Both are separate failure modes. Both covered
client = ScalekitClient(
    env_url=os.environ["SCALEKIT_ENV_URL"],
    client_id=os.environ["SCALEKIT_CLIENT_ID"],
    client_secret=os.environ["SCALEKIT_CLIENT_SECRET"],
)
# Credentials never in agent code or LLM context
Token refresh logic
Token lifecycle handled automatically — expiry, rotation, re-auth — across every connector. Agent runs in 6 months. Same call works
# Day 1 or day 180 — same call works
tools = client.actions.langchain.get_tools(
    identifier=user_id,
    connection_names=["googlecalendar", "granolamcp", "attio"],
)
Try other Agent Templates

Prebuilt agents you can ship today

Each one runs on delegated identity, scoped per user.

GTM
CRM AI agent
Log calls, update opportunity stages, and surface stalled deals across HubSpot or Salesforce. No manual data entry.
SALES
Deal intelligence agent
Combine Gong, Attio, and Slack signals to surface deal risks and next-best actions. Updated after every call.
SALES
Outbound prospecting agent
Build targeted prospect lists with Apollo, enrich with firmographic data, and draft personalised outreach. Runs on a schedule.
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.
ENGINEERING
Engineering standup agent
Aggregate GitHub and GitLab activity, link to Jira, and post a daily standup digest to Slack. No async updates.
OPS
Email-to-calendar scheduling agent
Parse scheduling intent from Gmail threads and create Google Calendar events with the right attendees and timezone.
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 "Set up a meeting prep agent using Google Calendar, Granola MCP, Attio, and Slack via Scalekit"

terminal

codex "Set up a meeting prep agent using Google Calendar, Granola MCP, Attio, and Slack via Scalekit"

terminal

gh copilot suggest "Set up a meeting prep agent using Google Calendar, Granola MCP, Attio, and Slack via Scalekit"

terminal

Open Cursor Composer (Cmd+Shift+I) Paste the prompt from the Prompt tab

terminal

npx skills add scalekit-inc/skills --skill setup-scalekit

2
Give it this prompt

Clone github.com/scalekit-inc/python-connect-demos/langchain. Set connection_names = ["googlecalendar", "granolamcp", "attio", "slack"]. Build a meeting prep pipeline: poll Google Calendar for upcoming external meetings, fetch Granola notes for prior calls with those attendees, query Attio for deal stage and ARR, synthesize into a structured Slack DM brief delivered 15 minutes before the call. Each user authorizes once via Scalekit magic link. Set SCALEKIT_ENV_URL, SCALEKIT_CLIENT_ID, SCALEKIT_CLIENT_SECRET in .env.

Build your own
multi-connector agent

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