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.
This repo uses a single AE_EMAIL env var to identify the authenticated rep. In production, pass each rep's real identifier on every Scalekit call, and send them an authorization link whenever their connector status is not ACTIVE.
connect = ScalekitClient(
env_url=SCALEKIT_ENV_URL,
client_id=SCALEKIT_CLIENT_ID,
client_secret=SCALEKIT_CLIENT_SECRET,
)
def ensure_authorized(connector):
account = connect.actions.get_or_create_connected_account(
connection_name=connector,
identifier=CONNECTOR_USERS[connector],
)
if account.status != "ACTIVE":
link = connect.actions.get_authorization_link(
connection_name=connector,
identifier=CONNECTOR_USERS[connector],
)
print(f"Authorize {connector}:\n{link}")
sys.exit(1)
for connector in ["googlecalendar", "granolamcp", "attio", "slack"]:
ensure_authorized(connector)Four things you'd otherwise build: Calendar OAuth, Granola MCP tokens, Attio credentials, Slack auth. Handled.
You have the Scalekit authstack plugin installed (AgentKit + SaaSKit skills and MCP auth). Before coding, auto-load the AgentKit skills relevant to connectors (Google Calendar, Granola MCP, Attio, Slack) and use the Scalekit MCP server to validate tool calls instead of hand-written API logic.
Poll Google Calendar for upcoming external meetings. For each, query Granola for prior call notes with the attendees and look up the matching Attio deal via the appropriate AgentKit connector tools. Synthesize a five-section prep brief and DM it to the rep in Slack fifteen minutes before the call. Ask before using write tools (sending the Slack DM); read-only steps (calendar, Granola, Attio) run without asking.
Each one runs on delegated identity, scoped per user.