---
title: "Twilio SendGrid MCP server for AI agents - actionlake"
description: "Give Claude 391 Twilio SendGrid actions through one MCP server: messaging, infrastructure. Your agent never holds the credential. 100,000 calls a month free."
canonical: https://actionlake.com/connectors/twilio-sendgrid
updated: 2026-10-10
---

Connectors · Email & messaging

# Twilio SendGrid MCP server for AI agents.

actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to Twilio SendGrid and the rest of your systems. It gives your agent 391 Twilio SendGrid actions (193 reads, 131 writes and 67 that wait for a confirmation) and holds the Twilio SendGrid credential itself, so the agent never does. It paces Twilio SendGrid's limits and records every call.

[Connect Twilio SendGrid free](https://actionlake.com/console?start=sandbox) [See pricing](https://actionlake.com/pricing)

100,000 free calls a month. No card, no email, no password: press Start a free sandbox on the next screen and keep the key it shows you.

`claude mcp add --transport http actionlake https://connect.actionlake.com/mcp`

the first call

```
do {
  action: "sendgrid.user_account_get",
  intent: "check which Twilio SendGrid account is connected"
}
# Get a user's account information. · read · 1 upstream call
```

- 391 actions in one signed file
- 193 read look, never change
- 131 write create and update
- 67 wait for a yes destructive, confirmed first

Set up

## Connect Twilio SendGrid in three steps.

1. 01
   ### Add actionlake to Claude.
   Run the command once in Claude Code; its consent page can create a free sandbox: 100,000 calls a month, no card. In the Claude app, add a custom connector with the URL below and paste your key on the consent page. Creating a new sandbox from the Claude app is not yet tested by us.
   `https://connect.actionlake.com/mcp`
2. 02
   ### Connect Twilio SendGrid.
   API key. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead. actionlake stores what you paste write-only, sealed under your tenant's key.
   - `api_key` Twilio SendGrid API key
   - `api_base` Where your Twilio SendGrid lives: your api base
   ```
   account { op: "connections.requirements", service: "sendgrid" }
   # free: exactly what to paste, and what is found for you
   ```
3. 03
   ### Make the first call. Check before a write.
   Ask in plain words; Claude picks the action. Before anything changes, `check` validates the call and prices it, for free.
   ```
   do    { action: "sendgrid.user_account_get" }
   # get a user's account information. · read · 1 upstream call
   check { action: "sendgrid.subusers_create", input: { … } }
   # free: inputs, permissions, cost and confirmations, nothing sent
   ```

Twilio SendGrid at a glance

**Sign-in**

API key. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead.

**You provide**

`api_key`

**Setup fields**

`api_base`

**Limits we pace to**

600 calls a minute, per connection

**API covered**

Twilio SendGrid API v3`api.sendgrid.com`

**Built from**

Twilio SendGrid's documentation, read 19 September 2026[GitHub](https://github.com/twilio/sendgrid-oai/tree/main/spec/json)

**Service file**

Version 1.0.0, signed (Ed25519)

**Cached reads**

190 of 193 reads, for up to an hour; a write clears what it affects

**Ready-made plans**

9 in the store

**Shared entities**

4, so ask can line Twilio SendGrid up with your other systems

**Data**

Processed and stored in Sydney, Australia. No US region yet

Capabilities

## What an AI agent can do in Twilio SendGrid.

391 actions in 8 areas. Every one carries its effect, so a key can allow the reads and hold the rest.

- **193** read look, never change
- **131** write create and update
- **67** destructive wait for a confirmation

1. ### Messaging
   94
   40 read · 41 write · 13 destructive
   Filter all messages · Retrieve all Campaigns · Get All Single Sends · Get Single Sends Search
2. ### Infrastructure
   88
   43 read · 27 write · 18 destructive
   Get a List of Subusers Assigned to an IP · Retrieve the lists that a recipient is on · Retrieve recipients · Search recipients
3. ### Contacts
   47
   23 read · 14 write · 10 destructive
   Get All Lists · Get Sample Contacts · Retrieve all lists · Create a List
4. ### General
   45
   24 read · 16 write · 5 destructive
   Update your account email address · Update a user's profile · Update your username · Retrieve all suppression groups associated with the user.
5. ### Accounts
   42
   15 read · 20 write · 7 destructive
   Retrieve all teammates · List all Subusers · Create an SSO Teammate. · Create Subuser
6. ### Suppressions
   28
   16 read · 2 write · 10 destructive
   Retrieve all suppressions for a suppression group · Search for suppressions within a group · Retrieve all suppressions · Retrieve all blocks
7. ### Integrations
   24
   10 read · 10 write · 4 destructive
   Retrieves Inbound Parse Webhook statistics. · Retrieve all webhook security policies for your account · Create a new Event Webhook · Create a parse setting
8. ### Reporting
   23
   22 read · 1 write · 0 destructive
   Get All Automation Stats · Get All Single Sends Stats · Get Automation Stats by ID · Get Automation Click Tracking Stats by ID

Top actions

## The Twilio SendGrid API, shaped for agents.

The ids your agent types, what each does, and the one name it shares with other systems. 158 of Twilio SendGrid's 162 action names are shared with at least one other connector, so an agent learns them once.

| Action | What it does | Effect | Same name in |
| --- | --- | --- | --- |
| `sendgrid.teammates_get` Retrieve all teammates | Retrieve all teammates | read | `identity.user.list` 474 connectors |
| `sendgrid.marketing_lists_get` Get All Lists | Get All Lists | read | `comm.audience.list` 26 connectors |
| `sendgrid.marketing_contacts_get` Get Sample Contacts | Get Sample Contacts | read | `comm.audience_member.list` 23 connectors |
| `sendgrid.subusers_get` List all Subusers | List all Subusers | read | `identity.user.list` 474 connectors |
| `sendgrid.messages_get` Filter all messages | Filter all messages | read | `comm.delivery_event.list` 16 connectors |
| `sendgrid.subusers_create` Create Subuser | Create Subuser | write | `identity.user.create` 262 connectors |
| `sendgrid.sso_teammates_create` Create an SSO Teammate. | Create an SSO Teammate. | write | `identity.user.create` 262 connectors |
| `sendgrid.user_email_put` Update your account email address | Update your account email address | write | `identity.user.update` 280 connectors |
| `sendgrid.asm_groups_get` Retrieve all suppression groups associated with the user. | Retrieve all suppression groups associated with the user. | read | `comm.audience.list` 26 connectors |
| `sendgrid.contactdb_recipients_get` Retrieve recipients | Retrieve recipients | read | `comm.audience_member.list` 23 connectors |
| `sendgrid.teammates_by_username_delete` Delete teammate | Delete teammate | destructive | `identity.user.delete` 253 connectors |
| `sendgrid.campaigns_get` Retrieve all Campaigns | Retrieve all Campaigns | read | `comm.campaign.list` 41 connectors |

Try it

## Prompts to paste into Claude.

Each one names the Twilio SendGrid actions it will call, so you know what it reads and what it changes before you send it.

1. Read read
   Who has access in Twilio SendGrid? List every user and their role.
   calls `sendgrid.teammates_get`
2. Plan destructive
   Check every suppression list for one address, then clear it after approval in Twilio SendGrid. Ask me before anything is sent or changed.
   calls `sendgrid.suppression_blocks_get` `sendgrid.suppression_bounces_get` `sendgrid.suppression_invalid_emails_get` `sendgrid.suppression_spam_reports_get` `sendgrid.suppression_blocks_by_email_delete` +1 more
3. Plan read
   Trace one message that a customer says never arrived in Twilio SendGrid.
   calls `sendgrid.messages_get` `sendgrid.messages_by_msg_id_get` `sendgrid.logs_by_sg_message_id_get` `sendgrid.suppression_blocks_get` `sendgrid.suppression_bounces_get` +1 more
4. Write write
   Create Subuser in Twilio SendGrid. Show me exactly what you will send before you save it.
   calls `sendgrid.subusers_create`

The plan store

## Ready-made plans for Twilio SendGrid.

9 plans in the store. Install one and your agent runs it by name; the reply says which connections are still missing. A schedule can run a plan on a timetable. There are no triggers or webhooks, by design.

1. ### Validate a sample of contacts before a campaign goes out
   Use it when A marketing list is about to be mailed and you want to check address quality before spending reputation on it.
   **Effect**
   read
   **Steps**
   4 · loops
   **Needs**
   list id
   **Install**
   `sendgrid-validate-list-before-send`
2. ### Pull a weekly deliverability picture across stats and suppressions
   Use it when Someone wants a read-only weekly summary of SendGrid sending health before a reputation or deliverability discussion.
   **Effect**
   read
   **Steps**
   5
   **Needs**
   categories, end date and start date
   **Install**
   `sendgrid-deliverability-weekly-review`
3. ### Trace one message that a customer says never arrived
   Use it when A customer reports an email never arrived and you need the delivery story for that one message.
   **Effect**
   read
   **Steps**
   6
   **Needs**
   msg id, query, recipient and sg message id
   **Install**
   `sendgrid-trace-failed-message`
4. ### Add a new version to a transactional template and activate it after sign-off
   Use it when Marketing or engineering has new copy for a transactional email and the change must be reviewed before it goes live.
   A person decides Activate template version _version name_ on _template id_ so live transactional mail uses it.
   **Effect**
   write
   **Steps**
   4
   **Needs**
   html content, subject, template id and version name
   **Install**
   `sendgrid-publish-template-version`
5. ### Authenticate a new sending domain and validate it once DNS is published
   Use it when A new domain needs SendGrid authentication and someone else has to publish the DNS before sending can start.
   **Effect**
   write
   **Steps**
   5
   **Needs**
   dns recipient, domain and domain id
   **Install**
   `sendgrid-onboard-sending-domain`
6. ### Create an event webhook, test it, and confirm it is recorded
   Use it when A new endpoint needs to receive SendGrid delivery events and you want it created and proven in one pass.
   **Effect**
   write
   **Steps**
   5
   **Needs**
   friendly name and url
   **Install**
   `sendgrid-wire-event-webhook`
7. ### Review a departing teammate's access, then remove it with approval
   Use it when Someone has left the team and their SendGrid access needs reviewing and revoking with a record of what they had.
   A person decides Revoke SendGrid access for _username_ and cancel their pending invitation.
   **Effect**
   destructive
   **Steps**
   5
   **Needs**
   pending token and username
   **Install**
   `sendgrid-offboard-teammate`
8. ### Empty and delete a sending IP pool after approval
   Use it when A sending IP pool is no longer used and should be emptied and removed with sign-off on which IPs it held.
   A person decides Empty and permanently delete IP pool _poolid_ and the IPs it holds.
   **Effect**
   destructive
   **Steps**
   5
   **Needs**
   ips and poolid
   **Install**
   `sendgrid-retire-ip-pool`
9. ### Check every suppression list for one address, then clear it after approval
   Use it when A recipient reports they stopped receiving email and you need to find and clear the suppression holding them back.
   A person decides Clear every suppression holding _email_ so mail resumes to that address.
   **Effect**
   destructive
   **Steps**
   7
   **Needs**
   email
   **Install**
   `sendgrid-clear-suppressed-address`

install a plan

```
account { op: "plans.install", slug: "sendgrid-validate-list-before-send" }
# then ask for it by name; a schedule can run it on a timetable
```

Governance for Twilio SendGrid

## Destructive actions wait for a yes.

67 Twilio SendGrid actions are destructive. The first 10:

- Delete teammate `sendgrid.teammates_by_username_delete`
- Delete a subuser `sendgrid.subusers_by_subuser_name_delete`
- Delete Multiple lists `sendgrid.contactdb_lists_delete`
- Delete a list `sendgrid.marketing_lists_by_id_delete`
- Delete a Suppression Group `sendgrid.asm_groups_by_group_id_delete`
- Delete a List `sendgrid.contactdb_lists_by_list_id_delete`
- Delete Contacts `sendgrid.marketing_contacts_delete`
- Delete Recipients `sendgrid.contactdb_recipients_delete`
- Remove Contacts from a List `sendgrid.marketing_lists_by_id_contacts_delete`
- Delete a Recipient `sendgrid.contactdb_recipients_by_recipient_id_delete`

A destructive action runs only with `confirm: true`. Under the `human` policy the agent cannot confirm for itself: the run stops until a named person approves, in the console or from a signed link in an email. The cap on a key is refused before the call is sent, never after.

do sendgrid.teammates_by_username_delete confirm_policy: **human**

Delete teammate?

**intent:** the user asked me to delete teammate

run suspended · waiting for a named person · key _sendgrid-agent_ cannot confirm itself

In the console, or from an emailed signed link.

a key for this connector

```
account {
  op: "keys.create", name: "sendgrid-agent",
  allowed_actions: ["sendgrid.*"], cap_calls: 2000,
  confirm_policy: "human_for_writes",
  approval_rules: [
    { match: "sendgrid.teammates_by_username_delete", approver: "lead@example.com" },
    { match: "sendgrid.subusers_by_subuser_name_delete", approver: "lead@example.com" },
    { match: "sendgrid.contactdb_lists_delete", approver: "lead@example.com" }
  ]
}
```

Illustrative. Scoped to Twilio SendGrid only, capped at 2,000 upstream calls, every write confirmed, and the destructive ones approved by a named person.

Cost

## What Twilio SendGrid costs on actionlake.

Every Twilio SendGrid action is one upstream call, the only thing actionlake bills. Searching, `check`, `cost`, `account` and any call Twilio SendGrid refused with 401, 403, 429 or a 5xx are free. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

- 1 upstream call per action all 391 Twilio SendGrid actions
- 52 actions page each page of a long list is one call
- 190 reads can be cached a cache hit costs nothing
- 100,000 calls a month, free paid plans from US$49 a month for 250,000

[See pricing](https://actionlake.com/pricing)

Action index

## Every Twilio SendGrid action.

391 actions by area: the id your agent calls, what it does, and its effect.

**Messaging 94**

- `sendgrid.campaigns_get` Retrieve all Campaigns read
- `sendgrid.marketing_singlesends_get` Get All Single Sends read
- `sendgrid.marketing_singlesends_search_create` Get Single Sends Search read
- `sendgrid.messages_get` Filter all messages read
- `sendgrid.campaigns_by_campaign_id_delete` Delete a Campaign destructive
- `sendgrid.campaigns_by_campaign_id_get` Retrieve a single campaign read
- and 88 more in this area

**Infrastructure 88**

- `sendgrid.contactdb_recipients_by_recipient_id_lists_get` Retrieve the lists that a recipient is on read
- `sendgrid.contactdb_recipients_get` Retrieve recipients read
- `sendgrid.contactdb_recipients_search_create` Search recipients read
- `sendgrid.contactdb_recipients_search_get` Search recipients read
- `sendgrid.send_ips_ips_by_ip_subusers_get` Get a List of Subusers Assigned to an IP read
- `sendgrid.access_settings_activity_get` Retrieve all recent access attempts read
- and 82 more in this area

**Contacts 47**

- `sendgrid.contactdb_lists_create` Create a List write
- `sendgrid.contactdb_lists_get` Retrieve all lists read
- `sendgrid.marketing_contacts_get` Get Sample Contacts read
- `sendgrid.marketing_lists_get` Get All Lists read
- `sendgrid.contactdb_lists_by_list_id_delete` Delete a List destructive
- `sendgrid.contactdb_lists_by_list_id_get` Retrieve a single list read
- and 41 more in this area

**General 45**

- `sendgrid.asm_groups_get` Retrieve all suppression groups associated with the user. read
- `sendgrid.user_email_put` Update your account email address write
- `sendgrid.user_profile_update` Update a user's profile write
- `sendgrid.user_username_put` Update your username write
- `sendgrid.alerts_by_alert_id_delete` Delete an alert destructive
- `sendgrid.alerts_by_alert_id_get` Retrieve a specific alert read
- and 39 more in this area

**Accounts 42**

- `sendgrid.sso_teammates_create` Create an SSO Teammate. write
- `sendgrid.subusers_create` Create Subuser write
- `sendgrid.subusers_get` List all Subusers read
- `sendgrid.teammates_get` Retrieve all teammates read
- `sendgrid.api_keys_by_api_key_id_delete` Delete API keys destructive
- `sendgrid.api_keys_by_api_key_id_get` Retrieve an existing API Key read
- and 36 more in this area

**Suppressions 28**

- `sendgrid.asm_groups_by_group_id_suppressions_get` Retrieve all suppressions for a suppression group read
- `sendgrid.asm_groups_by_group_id_suppressions_search_create` Search for suppressions within a group read
- `sendgrid.asm_suppressions_get` Retrieve all suppressions read
- `sendgrid.suppression_blocks_get` Retrieve all blocks read
- `sendgrid.asm_groups_by_group_id_suppressions_by_email_delete` Delete a suppression from a suppression group destructive
- `sendgrid.asm_groups_by_group_id_suppressions_create` Add suppressions to a suppression group write
- and 22 more in this area

**Integrations 24**

- `sendgrid.user_webhooks_event_settings_create` Create a new Event Webhook write
- `sendgrid.user_webhooks_parse_settings_create` Create a parse setting write
- `sendgrid.user_webhooks_parse_stats_get` Retrieves Inbound Parse Webhook statistics. read
- `sendgrid.user_webhooks_security_policies_get` Retrieve all webhook security policies for your account read
- `sendgrid.marketing_integrations_by_id_get` GetIntegration read
- `sendgrid.marketing_integrations_by_id_update` UpdateIntegration write
- and 18 more in this area

**Reporting 23**

- `sendgrid.marketing_stats_automations_by_id_get` Get Automation Stats by ID read
- `sendgrid.marketing_stats_automations_by_id_links_get` Get Automation Click Tracking Stats by ID read
- `sendgrid.marketing_stats_automations_get` Get All Automation Stats read
- `sendgrid.marketing_stats_singlesends_get` Get All Single Sends Stats read
- `sendgrid.browsers_stats_get` Retrieve email statistics by browser. read
- `sendgrid.clients_by_client_type_stats_get` Retrieve stats by a specific client type. read
- and 17 more in this area

This index shows a sample of each area. All 391 actions, with their inputs and prices, are in the [catalogue](https://actionlake.com/console/catalogue), which a free sandbox key can search.

Questions

## The Twilio SendGrid MCP server, answered.

**Is there a Twilio SendGrid MCP server for Claude?**

Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 391 Twilio SendGrid actions across messaging, infrastructure, contacts and general, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by Twilio SendGrid.

**What do I need to connect Twilio SendGrid?**

Twilio SendGrid API key. Plus your api base. The free call account { op: "connections.requirements", service: "sendgrid" } lists exactly what to paste.

**Can an AI agent delete or change things in Twilio SendGrid?**

Only if its key allows it, and only with an explicit confirmation. 67 Twilio SendGrid actions are destructive, including delete teammate, delete a subuser and delete Multiple lists. Each runs only with confirm: true. Under the human confirm policy, or an approval rule on the key, the run waits until a named person approves it.

**Will an AI agent use up my Twilio SendGrid API limit?**

actionlake paces every call to the limits in the Twilio SendGrid service file: 600 calls a minute per connection. Repeated reads are answered from cache (190 Twilio SendGrid actions can be), which never reaches Twilio SendGrid.

**What does a Twilio SendGrid action cost?**

One upstream call, the only unit actionlake bills. A list that pages bills one call per page (52 Twilio SendGrid actions page). Cache hits, searches, dry runs and calls Twilio SendGrid refused with 401, 403, 429 or a 5xx are free. The Free plan includes 100,000 calls a month with no card. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

**Which Twilio SendGrid API does it cover?**

The Twilio SendGrid API v3 at api.sendgrid.com by default, or the base URL set when you connect. It is built from Twilio SendGrid's documentation as read on 19 September 2026. 391 actions in 8 areas, each one in the signed service file (version 1.0.0).

**Does actionlake keep my Twilio SendGrid data, and where?**

actionlake processes and stores data in Sydney, Australia; there is no US region yet. Reads may be cached for up to an hour, and a write clears the reads it affects. Each run's request and response is kept, sealed, for your plan's trace window: 1 day on Free, 3 days on Starter, 7 days on Pro, 14 days on Team, 30 days on Business and 30 days on Enterprise. Your Twilio SendGrid credential is sealed under your tenant's key, never logged and never returned. Your traffic is not used to train models.

**Which AI clients can use it?**

Claude Code, tested by us end to end, and the Claude app as a custom connector, tested by us with an existing key. Other MCP clients that support remote servers over Streamable HTTP (MCP revisions 2025-06-18 and 2025-11-25) and OAuth dynamic client registration, or a bearer header, should connect the same way; we have not tested them. Or plain REST, under the same action names.

## More connectors like Twilio SendGrid

Shares the most action names with

- [Mailgun 69](https://actionlake.com/connectors/mailgun)
- [Resend 55](https://actionlake.com/connectors/resend)
- [Sinch Mailjet 48](https://actionlake.com/connectors/sinch-mailjet)
- [Elastic Email 46](https://actionlake.com/connectors/elastic-email)
- [Customer.io 39](https://actionlake.com/connectors/customer-io)
- [MailerSend 33](https://actionlake.com/connectors/mailersend)

Joins with, on shared entities

- [Docebo 2](https://actionlake.com/connectors/docebo)
- [ActiveCampaign 2](https://actionlake.com/connectors/activecampaign)
- [Twilio Segment 2](https://actionlake.com/connectors/twilio-segment)
- [beehiiv 2](https://actionlake.com/connectors/beehiiv)
- [Nutshell CRM 2](https://actionlake.com/connectors/nutshell-crm)
- [Atlassian Statuspage 2](https://actionlake.com/connectors/atlassian-statuspage)

Browse

- [All Email & messaging connectors](https://actionlake.com/connectors/category/email-and-messaging)
- [All connectors](https://actionlake.com/connectors)
- [How actionlake compares](https://actionlake.com/compare)

actionlake is independent. It is not made or endorsed by Twilio SendGrid; the name is the vendor's own. Counts are from the Twilio SendGrid service file, version 1.0.0.

## Give your agent Twilio SendGrid today.

[Connect Twilio SendGrid free](https://actionlake.com/console?start=sandbox) [See pricing](https://actionlake.com/pricing)

Start free - 100,000 calls/month, no card. No signup. Hard caps on every key. Cached answers are free.

---

Source: https://actionlake.com/connectors/twilio-sendgrid
More: https://actionlake.com/llms.txt
