API KEY
EMAIL DELIVERY
SMTP2GO handles the sending, the bounces, and the delivery record for your product email. SMTP2GO MCP gives your agent authenticated access scoped to the user who authorized it.
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 MCP tools, scoped to the signed-in user
const { tools } = await sk.tools.listScopedTools("user_123", {
filter: { connectionNames: ["smtp2gomcp"], toolNames: [
"smtp2gomcp_execute_request",
"smtp2gomcp_get_endpoint",
"smtp2gomcp_get_server_variables"
] },
pageSize: 100,
});
const agent = createReactAgent({ llm, tools });
await agent.invoke({ messages: [{ role: "user", content: "Why did last night's receipts batch bounce?" }] });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);
// SMTP2GO MCP tools, scoped to the signed-in user
const { tools } = await sk.tools.listScopedTools("user_123", {
filter: { connectionNames: ["smtp2gomcp"], toolNames: [
"smtp2gomcp_execute_request",
"smtp2gomcp_get_endpoint",
"smtp2gomcp_get_server_variables"
] },
pageSize: 100,
});
const openai = new OpenAI();
const res = await openai.responses.create({
model: "gpt-5",
tools: tools.map((t) => t.openai),
input: "Why did last night's receipts batch bounce?",
});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);
// SMTP2GO MCP tools, scoped to the signed-in user
const { tools } = await sk.tools.listScopedTools("user_123", {
filter: { connectionNames: ["smtp2gomcp"], toolNames: [
"smtp2gomcp_execute_request",
"smtp2gomcp_get_endpoint",
"smtp2gomcp_get_server_variables"
] },
pageSize: 100,
});
const anthropic = new Anthropic();
const msg = await anthropic.messages.create({
model: "claude-opus-4-6",
max_tokens: 1024,
tools: tools.map((t) => t.anthropic),
messages: [{ role: "user", content: "Why did last night's receipts batch bounce?" }],
});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);
// SMTP2GO MCP tools, scoped to the signed-in user
const { tools } = await sk.tools.listScopedTools("user_123", {
filter: { connectionNames: ["smtp2gomcp"], toolNames: [
"smtp2gomcp_execute_request",
"smtp2gomcp_get_endpoint",
"smtp2gomcp_get_server_variables"
] },
pageSize: 100,
});
const agent = new Agent({
name: "smtp2gomcp_agent",
model: "gemini-2.5-pro",
instruction: "Act as the messaging agent for the signed-in user.",
tools,
});
await agent.run("Why did last night's receipts batch bounce?");// shared token
audit → bot_service_account
user_filter → broken
// scalekit
audit → user_abc
scope → enforced ✓