SMTP2GO

Live

API KEY

EMAIL DELIVERY

Communication

SMTP2GO gives your agent authenticated access to email delivery, sender domains, and suppression lists, with every send attributed to a real user.

  • Per-user credentials: each call uses the actual user's token, never a shared bot.
  • Encrypted per-tenant vault: AES-256, resolved at request time, never in LLM context.
  • Scoped before every call: pre-call scope check, 90-day SIEM-exportable audit chain.
SMTP2GO
agent · Acme Q3
Run
Did yesterday's release notice actually deliver?
S
smtp2go_search_email_history
76ms
Email agent
1,842 sent, 1,821 delivered, 14 soft bounced, 7 suppressed. Delivery rate 98.9%.
Sources: 1,842 messages, Aug 16
smtp2go
1,842 sent
18:29
Message Claude...

Tools your agent reaches for on SMTP2GO, scoped per user.

CALL ANY TOOL
Send email, inspect delivery history, and manage sender domains and suppression lists with the signed-in user's own SMTP2GO access.
smtp2go_add_allowed_recipients
Add allowed recipients
Add email addresses and/or domain names to this SMTP2GO account's Allowed Recipients list — an account-level allowlist governing which recipient addresses/domains mail may be sent to. Optionally control whether the list is currently enforced when sending, and optionally act on behalf of a subaccount.
Parameters
Name
Type
Required
Description
allowed_recipients
array
Required
Array of email addresses and/or domain names to add to the Allowed Recipients list. Example: ["user@example.com", "example.com"].
enabled
boolean
Optional
Whether the Allowed Recipients list is taken into account when sending mail. If omitted, the account's current setting is left unchanged.
subaccount_id
string
Optional
If provided, makes this API call on behalf of the specified subaccount instead of the main account.
smtp2go_add_api_key
Add api key
smtp2go_add_ip_allow_list
List add ip allow
smtp2go_add_single_sender_email
Add single sender email
smtp2go_add_subaccount
Add subaccount
smtp2go_close_subaccount
Close subaccount
smtp2go_edit_api_key
Edit api key
smtp2go_edit_subaccount_access
Edit subaccount access
smtp2go_email_cycle_report
Email cycle report
smtp2go_email_spam_report
Email spam report
smtp2go_enable_ip_allow_list
List enable ip allow
smtp2go_patch_api_key
Patch api key
smtp2go_remove_allowed_recipients
Remove allowed recipients
smtp2go_remove_api_key
Remove api key
smtp2go_remove_scheduled_emails
Remove scheduled emails
smtp2go_remove_smtp_user
Remove smtp user
smtp2go_reopen_subaccount
Reopen subaccount
smtp2go_search_activity
Search activity
smtp2go_search_email_templates
Search email templates
smtp2go_send_email
Send email
smtp2go_send_mime_email
Send mime email
smtp2go_update_allowed_recipients
Update allowed recipients
smtp2go_update_email_template
Update email template
smtp2go_verify_sender_domain
Verify sender domain
smtp2go_view_allowed_senders
View allowed senders
smtp2go_view_archived_email
View archived email
smtp2go_view_ip_auth
View ip auth
smtp2go_view_sender_domains
View sender domains
smtp2go_view_single_sender_emails
View single sender emails
smtp2go_view_suppressions
View suppressions

For more tools, view docs.

Build your Agent
Same auth pattern across LangChain, OpenAI, Anthropic, and Google ADK.
Python · LlamaIndex
import { ScalekitClient } from "@scalekit-sdk/node";
import { createReactAgent } from "@langchain/langgraph/prebuilt";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);

// SMTP2GO tools scoped to this user
const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["smtp2go"], toolNames: [
    "smtp2go_add_allowed_recipients",
    "smtp2go_add_api_key",
    "smtp2go_add_ip_allow_list"] },
  pageSize: 100,
});

const agent = createReactAgent({ llm, tools });
await agent.invoke({ messages: [{ role: "user", content: "Is the Salesforce sync healthy?" }] });
import OpenAI from "openai";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);
const openai = new OpenAI();

const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["smtp2go"] }, pageSize: 100,
});

const res = await openai.chat.completions.create({
  model: "gpt-5",
  messages: [{ role: "user", content: "Which data sources are connected?" }],
  tools,
});

// Execute the tool call with the user's vaulted SMTP2GO credential
await sk.tools.executeTool(res.choices[0].message.tool_calls[0], "user_123");
import Anthropic from "@anthropic-ai/sdk";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);
const anthropic = new Anthropic();

const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["smtp2go"] }, pageSize: 100,
});

const msg = await anthropic.messages.create({
  model: "claude-sonnet-5",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Pull open Zendesk tickets created this week." }],
  tools,
});

// Tool call runs with the user's vaulted SMTP2GO credential
await sk.tools.executeTool(msg.content, "user_123");
import { Agent } from "@google/adk/agents";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);

const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["smtp2go"] }, pageSize: 100,
});

const agent = new Agent({
  name: "smtp2go_agent",
  model: "gemini-2.5-pro",
  instruction: "Work with SMTP2GO for the signed-in user.",
  tools,
});

await agent.run("What auth does the Shopify connector need?");
Try these prompts
Paste any prompt into your agent to get started.
Deliverability
Copy the prompt
Copied
What was our delivery rate yesterday?
Copy the prompt
Copied
Show me the bounces from the last 24 hours.
Copy the prompt
Copied
Which sender domains are failing verification?
Sending
Copy the prompt
Copied
Send this release notice to the announce list.
Copy the prompt
Copied
List the email templates available to me.
Copy the prompt
Copied
Add a new single sender email and verify it.
Hygiene
Copy the prompt
Copied
List the addresses currently suppressed.
Copy the prompt
Copied
Remove this address from the suppression list.
Copy the prompt
Copied
Show me the API keys active on this account.
SEE HOW AUTH WORKS
Your users connect SMTP2GO once. Their credentials stay vaulted, every call is scope checked, and every send is logged.
1
Authorize
Your user connects
SMTP2GO
once. We tie it to their identity and the meetings they approved — no shared bot account, no org-wide access
Who:
user ‘A’
when:
Once per user
access:
Limited to user
2
Store
Their
SMTP2GO
token lives in a vault scoped to them. User A's meetings are never reachable by an agent acting for user B, even on the same connection
vault:
encrypted
scope:
per-user
tokens:
auto-refreshed
3
Resolve
When your agent calls a
SMTP2GO
tool, we fetch the right token server-side. It never touches your agent, never appears in the LLM context, never shows up in your logs
speed:
~40ms
check:
before every call
seen by:
nobody
4
Audit
Every
SMTP2GO
tool call is logged — who triggered it, which meeting was fetched, what came back. 90 days of history, tied to the user who authorized it
history:
90 days
export:
SIEM-ready
logged:
every call
Test other agents
See the same per-user auth pattern across other connectors.
Support and Ops Teams
Email-to-calendar agent
Reads scheduling intent out of Gmail threads, resolves the times everyone actually has free, and creates the event on the user's own Google Calendar. No shared service account.
Engineering Teams
DevOps assistant agent
Polls GitHub for failing checks and stale PRs, opens Linear issues for the ones that need work, and posts a daily digest to Slack. It acts as the engineer, not a shared service account.
Engineering Teams
Engineering standup agent
Pulls commits from GitHub and GitLab, tracks issue movement in Jira, and posts a per-engineer standup brief to Slack. Each engineer's activity is read on their own delegated OAuth.
Engineering Teams
Slack triage
Polls Slack for new messages, classifies bugs and support requests with a LangGraph router, files GitHub issues or Zendesk tickets, and confirms in the thread.
Test other agents
See the same per-user auth pattern across other connectors.
OPS
Email-to-calendar scheduling agent
Read scheduling intent out of Gmail threads, resolve mutual free time, and create the Google Calendar event.
ENGINEERING
DevOps assistant agent
Poll GitHub for failing checks and stale pull requests, open Linear issues for the ones that need work, and digest to Slack.
ENGINEERING
Engineering standup agent
Pull commits from GitHub and GitLab, track Jira issue movement, and post a per-engineer standup brief to Slack.
ENGINEERING
Slack triage agent
Classify new Slack messages as bugs or support requests, file the GitHub issue or Zendesk ticket, and reply in the thread.
Why Scalekit
Secure your agent's access. Connectors ship in minutes
01.
Shared tokens break per-user analytics
A shared SMTP2GO token looks fine in a demo. In production every action looks like one service account, and you cannot tell who wired a source or ran a query. Scalekit resolves the credential of the actual user who triggered the agent, never a shared bot.
// shared token
audit → bot_service_account

// scalekit
audit → user_abc ✓
02.
Authentication is not authorization
03.
Multi-tenancy is architectural
04.
SMTP2GO today. Ten connectors tomorrow.
“Our agents act across Salesforce, Gong, Google Drive, and more, on behalf of every customer. Scalekit behind the scenes meant we can keep adding tools without ever rebuilding how credentials or tool calling work.”
Venu Madhav Kattagoni
Head of Engineering / Von
FAQs
Frequently Asked Questions
Can I stop the agent from sending mail while still reading stats?
Yes. Scope the connection to the search and list tools. Send stays unavailable and the check happens before the API call, not in a prompt.
Who shows up in the audit trail for a send?
The user who triggered the agent. Scalekit resolves their credential rather than a shared service key.
How many SMTP2GO tools are available?
74 across sending, email history, sender domains, subaccounts, suppressions, and API keys. The page shows a representative 30.
Does this cover subaccounts?
Yes. Subaccount add, edit, and access tools are exposed, subject to the scope you grant.
How are API keys stored?
Encrypted per tenant with AES-256, resolved at request time, never placed in LLM context.
Start in your coding agent
Up and running in one command
Install the Scalekit skill in your editor of choice. Connector, auth, tools, prompt, all wired up
Claude Code REPL
/plugin marketplace add scalekit-inc/claude-code-authstack
/plugin install agentkit@scalekit-auth-stack
Cursor Code REPL
# ~/.cursor/mcp.json
{
""mcpServers"": {
""smtp2go"": {
""url"": ""https://mcp.scalekit.com/smtp2go"",
""headers"": { ""Authorization"": ""Bearer $SCALEKIT_TOKEN"" }
}
}
}
Codex Code REPL
# ~/.codex/config.toml
[mcp_servers.smtp2go]
url = ""https://mcp.scalekit.com/smtp2go""
auth_env = ""SCALEKIT_TOKEN""
Copilot Code REPL
# .vscode/mcp.json
{
""servers"": {
""smtp2go"": {
""url"": ""https://mcp.scalekit.com/smtp2go"",
""type"": ""http""
}
}
}