Skip to content
Agentmart
Submit a tool

sendgrid

Send transactional email through SendGrid.

Skill by HaraldeRoessler

IndexedMIT
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/haralderoessler-sendgrid

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Send transactional email through SendGrid. Use when the user asks to send an email, notification, alert, or message via email (and their agent has a SendGrid API key configured). Triggers on mentions of email, send mail, notification email, reminder email, alert. Requires SENDGRID_API_KEY and SENDGRID_FROM_EMAIL env vars on the agent.

Use cases: backend, productivity, agent-building

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/sendgrid

What's inside

Skill name
sendgrid
Description
Send transactional email through SendGrid. Use when the user asks to send an email, notification, alert, or message via email (and their agent has a SendGrid API key configured). Triggers on mentions of email, send mail, notification email, reminder email, alert. Requires SENDGRID_API_KEY and SENDGRID_FROM_EMAIL env vars on the agent.
License
MIT
Compatibility
Requires curl (bundled in image). Works on Linux.
Instructions
130 lines in SKILL.md · view on GitHub

Before installing

  • Instructions call the network

Files (1)

  • SKILL.md

SKILL.md (first lines)

# SendGrid Skill

Send email via the SendGrid v3 REST API. Uses curl directly — no SDK dependency.

## Prerequisites

Two environment variables must be set on the agent (configure from the portal Settings → Skills → SendGrid):

- `SENDGRID_API_KEY` — a key from https://app.sendgrid.com/settings/api_keys with at least `Mail Send` permission.
- `SENDGRID_FROM_EMAIL` — a verified sender address. Must match a Single Sender or authenticated domain in your SendGrid account.

If either is missing, every send below returns an HTTP error — surface the exact response body to the user so they know what to fix.

## Simple send

```bash
curl -sS -w "\nHTTP %{http_code}\n" -X POST https://api.sendgrid.com/v3/mail/send \
  -H "Authorization: Bearer ${SENDGRID_API_KEY}" \
  -H "Content-Type: application/json" \
  --data @- <<JSON
{
  "personalizations": [{"to": [{"email": "recipient@example.com"}]}],
  "from": {"email": "${SENDGRID_FROM_EMAIL}"},
  "subject": "Hello from ownify",
  "content": [{"type": "text/plain", "value": "This is the body of the message."}]
}
JSON
```

A successful send returns `HTTP 202` with an empty body. Anything else (400 bad request, 401 unauthorized, 403 forbidden) — check the JSON body.

## HTML + plain-text multipart

```bash
curl -sS -w "\nHTTP %{http_code}\n" -X POST https://api.sendgrid.com/v3/mail/send \
  -H "Authorization: Bearer ${SENDGRID_API_KEY}" \
  -H "Content-Type: application/json" \
  --data @- <<JSON
{
  "personalizations": [{"to": [{"email": "recipient@example.com", "name": "Jane Doe"}]}],
  "from": {"email": "${SENDGRID_FROM_EMAIL}", "name": "ownify agent"},
  "reply_to": {"email": "${SENDGRID_FROM_EMAIL}"},
  "subject": "Weekly summary",
  "content": [
    {"type": "text/plain", "value": "Plain-text fallback goes here."},
    {"type": "text/html",  "value": "<p>The <strong>HTML</strong> version.</p>"}
  ]
}
JSON
```

`text/plain` MUST come before `text/html` in the `content` array — SendGrid requires that order.

## Multiple recipients + CC / BCC

```bash
curl -sS -X POST https://api.sendgrid.com/v3/mail/send \
  -H "Authorization: Bearer ${SENDGRID_API_KEY}" \
  -H "Content-Type: application/json" \
  --data @- <<'JSON'
{
  "personalizations": [{
    "to":  [{"email": "alice@example.com"}, {"email": "bob@example.com"}],
    "cc":  [{"email": "team-lead@example.com"}],
    "bcc": [{"email": "archive@example.com"}]
  }],
  "from": {"email": "SENDER_PLACEHOLDER"},
  "subject": "Group update",
  "content": [{"type": "text/plain", "value": "See above."}]
}
JSON
```
(Substitute `SENDER_PLACEHOLDER` with `${SENDGRID_FROM_EMAIL}` at send time — heredoc with `'JSON'` is quoted so no shell expansion; switch to unquoted `JSON` if you need expansion.)

## Send with attachment

Attach a file by base64-encoding its bytes and including it in the `attachments` array:

```bash
ATTACH_B64=$(base64 -w 0 /path/to/report.pdf)
python3 - <<PY
import json, os
payload = {
  "personalizations": [{"to": [{"email": "recipient@example.com"}]}],
  "from": {"email": os.environ["SENDGRID_FROM_EMAIL"]},
  "subject": "Monthly report",
  "content": [{"type": "text/plain", "value": "Report attached."}],
  "attachments": [{
    "content": "${ATTACH_B64}",
    "filename": "report.pdf",
    "type": "application/pdf",
    "disposition": "attachment"
  }]
}
print(json.dumps(payload))
PY
```

Pipe the resulting JSON to `curl --data @- ...` as in the simple-send example. Attachment size limit is 30 MB per email combined.

## Templates

If the user manages dynamic templates in SendGrid, send by template ID:

```bash
curl -sS -X POST https://api.sendgrid.com/v3/mail/send \
  -H "Authorization: Bearer ${SENDGRID_API_KEY}" \
  -H "Content-Type: application/json" \
  --data @- <<JSON
{
  "personalizations": [{
    "to": [{"email": "recipient@example.com"}],
    "dynamic_template_data": {"firstName": "Alice", "orderId": "ORD-0421"}
  }],
  "from": {"email": "${SENDGRID_FROM_EMAIL}"},
  "template_id": "d-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
JSON
```

From HaraldeRoessler/ownify-microclaw, MIT.

More from HaraldeRoessler/ownify-microclaw

Signals

Stars
0
Forks
0
Open issues
1
Last commit (this folder)
May 2, 2026 (6 months ago)
Last release
Jun 7, 2026 (4 months ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from HaraldeRoessler

Cite this page

sendgrid skill. Agent Mart. https://agentmart.dev/skills/haralderoessler-sendgrid (last updated 2026-10-24)