{"name":"io.github.Choppaaahh/sendgrid-mcp-secure","slug":"choppaaahh-sendgrid-mcp-secure","title":"SendGrid Secure","description":"Security-first SendGrid MCP server: dry-run default, recipient allowlists, rate caps, audit log.","url":"https://mcp.market/server/choppaaahh-sendgrid-mcp-secure","rating":null,"grade":"B","score":75,"certified":false,"status":"active","category":"email","tags":["email","security"],"presence":{"score":17,"stars":0,"forks":0,"downloads_week":20,"last_push_at":"2026-09-02T13:03:43.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"pypi","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/Choppaaahh/sendgrid-mcp-secure","website":null,"version":"0.1.0","remotes":[],"packages":[{"registryType":"pypi","identifier":"sendgrid-mcp-secure","version":"0.1.0","transport":{"type":"stdio"},"environmentVariables":[{"description":"SendGrid API key (use a restricted key with Mail Send scope only)","isRequired":true,"format":"string","isSecret":true,"name":"SENDGRID_API_KEY"},{"description":"dry-run (default) or live","format":"string","name":"SENDGRID_MCP_MODE"},{"description":"Comma-separated recipient addresses/domains allowed to receive mail","format":"string","name":"SENDGRID_MCP_RECIPIENT_ALLOWLIST"},{"description":"Hourly cap on write operations (sends)","format":"number","name":"SENDGRID_MCP_WRITES_PER_HOUR"},{"description":"Max recipients per send","format":"number","name":"SENDGRID_MCP_MAX_RECIPIENTS"},{"description":"Path to the append-only audit log","format":"string","name":"SENDGRID_MCP_AUDIT_LOG"},{"description":"BCC stays disabled unless explicitly enabled","format":"boolean","name":"SENDGRID_MCP_ALLOW_BCC"}]}],"tools":[{"name":"add_suppression","description":"Add an address to a suppression list (default: global unsubscribes). Suppressing is the SAFE direction — it stops future sends to the address.","write_action":false,"price_micros":0,"input_schema":null},{"name":"check_suppression","description":"Check whether an address appears on any suppression list. Run this before drafting mail to someone — sending to suppressed addresses hurts deliverability and may violate consent.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_domain_auth","description":"List authenticated sending domains and their DNS validity — the first thing to check when deliverability drops.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_email_stats","description":"Global email stats (requests/delivered/opens/clicks/bounces/spam) from start_date (YYYY-MM-DD). aggregated_by: day|week|month.","write_action":true,"price_micros":0,"input_schema":null},{"name":"get_template","description":"Fetch one template with its versions (subject + content preview).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_suppressions","description":"List a suppression list: unsubscribes|bounces|blocks|spam_reports|invalid_emails.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_templates","description":"List transactional email templates (dynamic + legacy).","write_action":false,"price_micros":0,"input_schema":null},{"name":"preview_email","description":"Validate and render an email WITHOUT sending it. Returns the exact payload that would go to SendGrid plus a single-use confirm_token (valid 10 minutes). Sending requires passing that token to send_email — there is no direct-send path. BCC is not accepted by design.","write_action":true,"price_micros":0,"input_schema":null},{"name":"remove_suppression","description":"Remove an address from a suppression list. DANGEROUS direction — it re-enables sending to someone who bounced or unsubscribed, which can be a compliance violation. Requires confirm=true, is rate-limited, and audited.","write_action":true,"price_micros":0,"input_schema":null},{"name":"send_email","description":"Send the email previously rendered by preview_email. Accepts ONLY a confirm token — the payload cannot be altered between preview and send. Tokens are single-use and expire after 10 minutes. In dry-run mode (the default) this simulates and audits but sends nothing.","write_action":true,"price_micros":0,"input_schema":null},{"name":"server_status","description":"This server's security posture: mode, rate-limit remaining, allowlist, caps, audit-log path, and whether an API key is present (never the key).","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":75,"grade":"B","scanned_at":"2026-11-03T19:43:06.788Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-11-03T19:43:06.734Z","components":{"code":{"score":25,"max":25,"notes":["5 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":12,"max":15,"notes":["last push 62 days ago"]},"identity":{"score":6,"max":10,"notes":["registry namespace matches repository owner"]}},"findings":[],"inputs":{"packages":[{"registryType":"pypi","identifier":"sendgrid-mcp-secure","version":"0.1.0","found":true,"weeklyDownloads":20,"license":"MIT","dependencyCount":1,"publishedAt":"2026-08-14T09:26:43.724409Z"}],"repo":{"found":true,"owner":"Choppaaahh","repo":"sendgrid-mcp-secure","archived":false,"pushedAt":"2026-09-02T13:03:43Z","stars":0,"forks":0,"openIssues":1,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/259960458?v=4","ownerCreatedAt":"2026-02-06T21:35:48Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/259960458?v=4&s=128","source":"registry","width":55,"height":55},"presence":{"stars":0,"forks":0,"downloadsWeek":20,"license":"MIT","lastPushAt":"2026-09-02T13:03:43.000Z","score":17}}}},"grade_history":[],"reviews":[]}