npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

myagentmail-mcp

v0.7.0

Published

Model Context Protocol server for myagentmail. Lets Claude Desktop, Cursor, Windsurf, Cline, and any MCP-compatible client drive email (inboxes, threads, drafts, custom domains), LinkedIn (sessions, DMs, connections, posts, intent signals), and server-sid

Readme

myagentmail-mcp

Model Context Protocol server for myagentmail. Lets Claude Desktop, Cursor, Windsurf, Cline, Continue, and any other MCP-compatible client drive both email and LinkedIn workflows against the myagentmail API:

  • Email — provision inboxes, send / reply / forward, work with threads, drafts and attachments, register custom domains, manage workspaces and webhooks.
  • LinkedIn — connect accounts, send connection requests + DMs, read inbox + threads, list 1st-degree connections + sent invitations, publish posts (text + image), search content, and create recurring intent signals (keyword, engagement, watchlist, connection_accepted, message_received) with webhook delivery.
  • Cadences — server-side outreach sequences. Define an ordered list of steps (LinkedIn invite → wait → DM → email → ...), enroll leads, and the platform runs them end-to-end with branching on real-world events (invite accepted, lead replied). The runtime is on MyAgentMail's side; your app just calls the API and listens for webhook events.

Install

npm install -g myagentmail-mcp

Or use with npx (no install required):

npx myagentmail-mcp

Install the Claude skill (optional but recommended)

The MCP server gives a Claude / Cursor / Windsurf agent the tools. The Claude skill gives it the playbook — auth model, capability map, working recipes, and the deliberate omissions (we don't ship enrichment or ICP search). With both installed, an agent self-orients and starts shipping correct code on its first try.

One command drops SKILL.md and the three reference docs into a Claude skills directory:

# In the project you're working in:
npx myagentmail-mcp install-skill

# Or globally for every Claude session on this machine:
npx myagentmail-mcp install-skill --global

This writes to ./.claude/skills/myagentmail/ (project) or ~/.claude/skills/myagentmail/ (global). Add --force to overwrite an existing install.

Setup

You need a myagentmail API key. Get one from https://myagentmail.com/dashboard.

The server reads it from the MYAGENTMAIL_KEY environment variable. Each MCP client has its own way of injecting env vars — see below.

Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "myagentmail": {
      "command": "npx",
      "args": ["-y", "myagentmail-mcp"],
      "env": {
        "MYAGENTMAIL_KEY": "tk_your_key_here"
      }
    }
  }
}

Restart Claude Desktop. The myagentmail tools appear in the tool picker.

Cursor

Edit ~/.cursor/mcp.json (or your project's .cursor/mcp.json):

{
  "mcpServers": {
    "myagentmail": {
      "command": "npx",
      "args": ["-y", "myagentmail-mcp"],
      "env": { "MYAGENTMAIL_KEY": "tk_your_key_here" }
    }
  }
}

Windsurf

Edit ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "myagentmail": {
      "command": "npx",
      "args": ["-y", "myagentmail-mcp"],
      "env": { "MYAGENTMAIL_KEY": "tk_your_key_here" }
    }
  }
}

Cline / Continue / other MCP clients

Same pattern: configure a server named myagentmail, command npx, args ["-y", "myagentmail-mcp"], env {"MYAGENTMAIL_KEY": "..."}.

Tools exposed

This server wraps the most useful subset of the myagentmail REST API. The LLM sees a JSON Schema for each tool and can call it directly via MCP.

Inboxes

  • create_inbox — provision a new mailbox with IMAP/SMTP credentials
  • list_inboxes — list all inboxes
  • get_inbox — fetch one inbox with its address list and credentials
  • delete_inbox — soft-delete

Messages

  • send_message — send a new email
  • reply_to_message — reply in-thread (preserves headers)
  • reply_all_to_message — reply-all, dropping self addresses
  • forward_message — forward to new recipients
  • list_messages — paginated listing, filterable by direction
  • get_message — full body + attachment metadata
  • mark_message_read — flip the read flag
  • delete_message — soft-delete

Threads

  • list_threads — paginated listing
  • get_thread — every message in a thread, ordered

Drafts

  • create_draft — start a draft with partial fields
  • update_draft — merge-patch any field
  • send_draft — send and atomically delete the draft
  • list_drafts — list unsent drafts
  • delete_draft — discard a draft

Attachments

  • list_attachments — metadata for a message
  • download_attachment — returns base64-encoded bytes

Custom domains

  • register_domain — register and get DNS records to set
  • verify_domain — re-check DNS status
  • list_domains — list registered domains
  • delete_domain — remove
  • add_inbox_address — attach a verified custom-domain alias to an existing inbox

Workspaces (multi-tenant)

  • list_workspaces — list isolation containers in your tenant
  • create_workspace — provision a new workspace
  • issue_workspace_key — mint a wk_ key scoped to one workspace

Webhooks

  • create_webhook / list_webhooks / delete_webhook

Metrics

  • get_metrics — sent / received / bounced counts and resource totals

Utility

  • verify_email — pre-flight MX check on one or more recipient addresses

LinkedIn — Sessions

  • linkedin_login — start email/password login (may return a challenge)
  • linkedin_verify_pin — submit the email/SMS PIN if challenged
  • linkedin_poll_mobile_approval — collect a mobile-app approval challenge
  • linkedin_import_session — import li_at + JSESSIONID cookies (escape hatch)
  • linkedin_list_sessions / linkedin_get_session / linkedin_revoke_session
  • linkedin_sessions_utilization — per-session daily quota usage

LinkedIn — Outreach

  • linkedin_lookup_profile — resolve a profile URL to its profileId, name, headline
  • linkedin_send_connection_request — send an invite (with optional note)
  • linkedin_list_connections — list 1st-degree connections
  • linkedin_list_sent_invitations — list pending outbound invites
  • linkedin_send_message — DM a 1st-degree connection (find-or-create thread)
  • linkedin_list_conversations — list inbox threads
  • linkedin_read_conversation — read messages in a thread

LinkedIn — Posts

  • linkedin_create_post — publish a feed post (text + optional image)
  • linkedin_list_posts_by_author — recent posts by a profile / company
  • linkedin_list_post_comments — commenters + bodies
  • linkedin_list_post_reactions — reactors + reactionType
  • linkedin_search_content — raw keyword post search

LinkedIn — Historical search (with classifier)

  • linkedin_search_history — one-shot historical search with firing rule + classifier verdict per result
  • linkedin_search_history_list / linkedin_search_history_get

LinkedIn — Signals (real-time intent watchers)

  • linkedin_signal_create — keyword | engagement | job_change_watchlist | connection_accepted | message_received
  • linkedin_signal_create_engagement / linkedin_signal_create_watchlist — kind-specific helpers
  • linkedin_signal_list / linkedin_signal_get / linkedin_signal_update / linkedin_signal_delete
  • linkedin_signal_run — force-poll now
  • linkedin_signal_matches — historical match list
  • linkedin_signal_deliveries — webhook delivery log
  • linkedin_signal_test_webhook — fire a synthetic test event
  • linkedin_signal_watchlist_list / linkedin_signal_watchlist_add / linkedin_signal_watchlist_remove — manage watchlist signal entries

Cadences — server-side outreach sequences

  • cadence_create — create with optional inline steps array
  • cadence_list / cadence_get / cadence_update / cadence_delete
  • cadence_replace_steps — atomically replace the step list
  • cadence_enroll_lead — enroll a lead (idempotent on (cadenceId, leadExternalId))
  • cadence_list_enrollments — filter by state (active / paused / completed / replied / ...)
  • cadence_run_now — force a runner tick (debug)
  • enrollment_get — one enrollment + step-run history
  • enrollment_patch — pause / resume / unenroll

Key tiers

myagentmail has four key types — pick the narrowest that fits the job:

| Prefix | Scope | Use | |---|---|---| | tk_ | Tenant master — every workspace | Server-side admin, dev | | wk_ | Workspace master — one workspace | Reseller customers | | ak_ | Inbox scoped — one inbox | Production agent runtimes | | mam_ | Legacy inbox key | Backwards compat |

For local Claude Desktop / Cursor use, a tk_ key is fine. For deployed agents, prefer ak_ to limit blast radius.

Develop locally

git clone https://github.com/kamskans/myagentmail
cd myagentmail/mcp
npm install
npm run build

# Test interactively
MYAGENTMAIL_KEY=tk_... node dist/index.js

The server speaks JSON-RPC over stdio. Use the MCP Inspector for interactive testing during development.

Architecture

This package is a thin wrapper. The actual API lives at https://myagentmail.com/v1 — every tool here just translates an MCP tool call into a fetch against the matching REST endpoint and returns the JSON response.

If you don't want the MCP layer, you can call the same endpoints directly:

curl -H "X-API-Key: $MYAGENTMAIL_KEY" https://myagentmail.com/v1/inboxes

See the full API reference and the knowledge base for concept guides.

SDK

For programmatic use in your own code, install the SDK instead: npm install myagentmail (npm).

License

MIT