Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to the Resend MCP server

Vendor MCP
Open markdown

The Resend MCP connector routes your AI agent's tool calls to Resend's own MCP server through Scalekit. Each user connects their own Resend access token once, and Scalekit sends it with every call, so your agent never handles credentials. It comes with 94 tools.

Tools
94
What they doRead · write · destructive
38 · 37 · 1938 read37 write19 destructive
Users sign in with

Setup

  1. Install the SDK

    Terminal window
    npm install @scalekit-sdk/node dotenv
  2. Set your credentials

    Add your Scalekit credentials to your .env file. Find values in app.scalekit.com > Developers > API Credentials.

    .env
    SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
    SCALEKIT_CLIENT_ID=<your-client-id>
    SCALEKIT_CLIENT_SECRET=<your-client-secret>
  3. Create the Resend MCP connection

    In AgentKit > Connections, create a Resend MCP connection. The name you give it is the connection_name your code passes. See Configure connections.

  4. Authorize a user and make your first call

    quickstart.mts
    import { ScalekitClient } from '@scalekit-sdk/node'
    import 'dotenv/config'
    import { createInterface } from 'node:readline/promises'
    const scalekit = new ScalekitClient(
    process.env.SCALEKIT_ENVIRONMENT_URL,
    process.env.SCALEKIT_CLIENT_ID,
    process.env.SCALEKIT_CLIENT_SECRET,
    )
    const actions = scalekit.actions
    const connector = 'resendmcp'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize Resend MCP:', link)
    const rl = createInterface({ input: process.stdin, output: process.stdout })
    await rl.question('Press Enter after authorizing...')
    rl.close()
    // Make your first call
    const result = await actions.executeTool({
    connector,
    identifier,
    toolName: 'resendmcp_get_automation',
    toolInput: {},
    })
    console.log(result)
    Terminal window
    npx tsx quickstart.mts

    Each user opens the link once and enters their Resend credentials there. See Authorize a user for the full flow and statuses.

Tools

Pass the exact name to execute_tool
Try in PlaygroundRequest a tool
  • resendmcp_get_automation**Purpose:** Get details of a specific automation (with its workflow) or list all automations.Read-only

    Get Automation

    **Purpose:** Get details of a specific automation (with its workflow) or list all automations. **Modes:** - With `id`: Returns full automation details including the workflow definition. - Without `id`: Lists all automations with optional status filter and pagination. **When to use:** - User asks "show me my automations" or "what automations do I have?" - User wants to inspect a specific automation's workflow - Before update-automation, to see the current workflow

    Inputs

    afterstring
    Cursor for forward pagination (for list mode).
    beforestring
    Cursor for backward pagination (for list mode).
    idstring
    Automation ID or Resend dashboard URL (e.g. https://resend.com/automations/<id>). If omitted, lists all automations.
    limitnumber
    Number of automations to retrieve (for list mode).
    statusstring
    Filter by status (for list mode only).one of enableddisabled
  • resendmcp_get_automation_runs**Purpose:** List runs for an automation, or get details of a specific run.Read-only

    Get Automation Runs

    **Purpose:** List runs for an automation, or get details of a specific run. **Modes:** - With `runId`: Returns detailed run info with step-by-step execution status, outputs, and errors. - Without `runId`: Lists runs for the automation with optional status filter. **When to use:** - User wants to see if an automation is working - User wants to debug a failed automation run - User asks "why did this automation fail?" or "show me recent runs" **Run statuses:** running, completed, failed, cancelled **Step statuses:** pending, running, completed, failed, skipped, waiting

    Inputs

    automationIdstringrequired
    The automation ID or Resend dashboard URL (e.g. https://resend.com/automations/<id>)
    afterstring
    Cursor for forward pagination (for list mode).
    beforestring
    Cursor for backward pagination (for list mode).
    limitnumber
    Number of runs to retrieve (for list mode).
    runIdstring
    Specific run ID to get details for. If omitted, lists all runs.
    statusstring
    Filter runs by status (for list mode only).one of runningcompletedfailedcancelled
  • resendmcp_get_broadcastRetrieve full details of a specific broadcast by ID or Resend dashboard URL (e.g.Read-only

    Get Broadcast

    Retrieve full details of a specific broadcast by ID or Resend dashboard URL (e.g. https://resend.com/broadcasts/<id>), including HTML and plain text content.

    Inputs

    broadcastIdstringrequired
    Broadcast ID or Resend dashboard URL (e.g. https://resend.com/broadcasts/<id>)
  • resendmcp_get_contactGet a contact by ID or email from Resend.Read-only

    Get Contact

    Get a contact by ID or email from Resend.

    Inputs

    emailstring
    Contact email address
    idstring
    Contact ID
  • resendmcp_get_contact_importGet the status and counts of a contact import by ID.Read-only

    Get Contact Import

    Get the status and counts of a contact import by ID. Use after create-contact-import to track progress (queued, in_progress, completed, failed).

    Inputs

    idstringrequired
    Contact import ID
  • resendmcp_get_contact_propertyGet a contact property by ID from Resend.Read-only

    Get Contact Property

    Get a contact property by ID from Resend.

    Inputs

    contactPropertyIdstringrequired
    Contact property ID
  • resendmcp_get_domainGet a domain by ID from Resend.Read-only

    Get Domain

    Get a domain by ID from Resend. Returns full domain details including DNS records needed for verification.

    Inputs

    idstringrequired
    Domain ID
  • resendmcp_get_domain_claimRetrieve the latest claim for a domain by its placeholder Domain ID (the domain_id from create-domain-claim).Read-only

    Get Domain Claim

    Retrieve the latest claim for a domain by its placeholder Domain ID (the domain_id from create-domain-claim). Returns claim status and the TXT record needed to prove ownership. Poll until status is "completed".

    Inputs

    idstringrequired
    The placeholder Domain ID created by the claim