usefulapi

SendGrid MCP server. Send email and read templates, marketing contacts, lists, stats, bounces and unsubscribes.

Claude

  1. Open Settings → Connectors → Add custom connector
  2. Paste this URL:
    https://sendgrid.usefulapi.io/mcp
  3. Authenticate with SendGrid when prompted

Cursor · VS Code · Windsurf · Cline

Add to your MCP config, then reload & authorize:

{
  "mcpServers": {
    "sendgrid": {
      "url": "https://sendgrid.usefulapi.io/mcp"
    }
  }
}
live13 toolsFree 100 tool calls / monthPro $9/mo · $90/yr

Tools 13

ToolTypeWhat it does
sendgrid_pingread
Ping (health check)
Health check — verifies the API key works and returns the scopes (permissions) granted to it. SendGrid: GET /v3/scopes.
sendgrid_list_templatesread
List email templates
List your transactional email templates (Dynamic and/or Legacy). Returns { result, _metadata } — use _metadata.next / page_token to paginate. SendGrid: GET /v3/templates.
sendgrid_get_templateread
Get email template
Get a single transactional email template by id, including its versions (subject + content). SendGrid: GET /v3/templates/{template_id}.
sendgrid_list_marketing_listsread
List marketing lists
List your Marketing Campaigns contact lists, each with its id, name, and contact_count. Returns { result, _metadata }. SendGrid: GET /v3/marketing/lists.
sendgrid_get_contact_countread
Get contact count
Get the total number of Marketing Campaigns contacts on your account. Returns { contact_count, billable_count }. SendGrid: GET /v3/marketing/contacts/count.
sendgrid_search_contacts_by_emailread
Search contacts by email
Look up marketing contacts by exact email address (a read-only lookup — mutates nothing). Returns the matching contacts keyed by email. SendGrid: POST /v3/marketing/contacts/search/emails.
sendgrid_get_statsread
Get email stats
Get global email statistics over a date range (delivered, opens, clicks, bounces, spam reports, etc.), optionally grouped by day/week/month. SendGrid: GET /v3/stats.
sendgrid_list_bouncesread
List bounces
List bounced email addresses (the bounce suppression list). Returns an array of { created, email, reason, status }. SendGrid: GET /v3/suppression/bounces.
sendgrid_list_global_unsubscribesread
List global unsubscribes
List globally-unsubscribed email addresses (the global suppression list). Returns an array of { created, email }. SendGrid: GET /v3/suppression/unsubscribes.
sendgrid_send_mailwrite
Send email
Sends a real email immediately via SendGrid. Provide from_email and one or more to recipients, plus either a subject + content or a template_id (values via dynamic_template_data). Returns { status, message_id }. SendGrid: POST /v3/mail/send.
sendgrid_add_or_update_contactswrite
Add or update marketing contacts
Upserts marketing contacts (creates new ones, updates existing ones by email) and optionally adds them to lists. This is an async job — returns { job_id } you can poll. SendGrid: PUT /v3/marketing/contacts.
sendgrid_usage_statusmeta
Usage status (free-tier meter)
Report the caller's current free-tier usage this month: calls used, monthly limit, remaining, and whether the cap is reached. Read-only; does not count against the meter.
sendgrid_upgrademeta
Upgrade to Pro (unlimited)
Subscribe to the Pro plan for UNLIMITED SendGrid tool calls (the free tier caps monthly usage). Choose monthly ($9/month) or yearly ($90/year — 2 months free) billing. Returns a Stripe Checkout link to open in your browser; after payment your account upgrades automatically. Read-only; does not count against the meter.

Pricing

PlanPriceLimit
Free$0100 tool calls / month
Proper user$9/mo · $90/yrUnlimited

This is a Model Context Protocol endpoint — meant to be connected from an AI client, not opened in a browser. An invalid_token response at the URL is the auth gate working as designed; clients authenticate automatically.