New — LinkedIn outreach API now live

Outreach infrastructure for AI agents

Email and LinkedIn outreach via REST API, TypeScript SDK, and MCP tools. One API key, one client, both channels.

7-day free trial · Card required · Cancel anytime before day 7

The platform under the hood

REST API
TypeScript SDK
MCP server
Multi-tenant
Webhooks
Encrypted at rest

Two channels. One platform.

Subscribe to either or both. Email-only customers stay email-only. LinkedIn-only customers stay LinkedIn-only. Customers who do multi-channel outreach get one bill, one SDK, one MCP server.

EMAIL

MyAgentMail

Email infrastructure for AI agents

  • Provision inboxes on demand on myagentmail.com or your custom domain
  • Send via REST or SMTP, receive via webhook or IMAP, threads preserved
  • Workspace isolation for resellers — one tenant, many end-customers
From $5/mo
Learn more
LINKEDIN

LinkedIn Outreach

Login, search, connect — all programmatic

  • Email + password login with PIN and mobile-app verification handled for you
  • Keyword post search — find people posting about your topic in the last 24h
  • Send personalized connection requests. AES-256-GCM encrypted at rest
From $29/mo
Learn more

How agents use it

Same SDK call shape, different channel. Switch channels by changing one method name.

1

Install one SDK

`npm install myagentmail`, or `npm i -g myagentmail-cli && myagentmail login` for shell + agent loops, or wire the MCP server into Claude Desktop / Cursor / Windsurf and skip the code path entirely.

2

Authenticate the channel

Provision an email inbox in one call, or sign in to LinkedIn with email + password (we handle challenges).

3

Outreach

`client.email.send(...)` for email. `client.linkedin.connections.send(...)` for LinkedIn. One key, one client.

import { MyAgentMail } from "myagentmail";

const mam = new MyAgentMail({ apiKey: process.env.MYAGENTMAIL_KEY! });

// Email
const inbox = await mam.inboxes.create({ username: "scout" });
await mam.messages.send(inbox.id, {
  to: "[email protected]",
  subject: "Saw your post on AI agents",
  plainBody: "Hey — would love 15 minutes...",
  verified: true,
});

// LinkedIn — same key, same client
const { sessionId } = await mam.linkedin.sessions.import({ liAt, jsessionId });
const { posts } = await mam.linkedin.search.content({
  sessionId, keyword: "AI agents", datePosted: "past-24h",
});
for (const p of posts) {
  await mam.linkedin.connections.send({
    sessionId, target: p.authorProfileUrl,
    message: `Hey ${p.authorName.split(" ")[0]} — saw your post...`,
  });
}

Why one platform, not two

Outreach is rarely single-channel. Buying email and LinkedIn from one vendor saves operational glue and billing overhead — and your agent gets a uniform interface.

One API key

The same tenant key authorizes both products. No juggling credentials per channel.

One agent loop

Same SDK, same MCP tools, same response shapes. Switching channels is a method name, not a refactor.

Independent billing

Subscribe to either product alone or both together. Cancel one without affecting the other.

Already using an email API? MyAgentMail vs Resend · MyAgentMail vs SendGrid · MyAgentMail vs Instantly

Start with whichever channel you need first.

Email is $5/mo. LinkedIn is $29/mo. Add the other later — your existing API key automatically picks it up.