Checks email quality before sending via Mailgun Inspect API. Use when previewing emails across clients, checking accessibility (WCAG), validating links, validating images, or analyzing email HTML/CSS compatibility.
From sinch-claude-pluginnpx claudepluginhub sinch/sinch-plugins --plugin sinch-claude-pluginThis skill uses the workspace's default tool permissions.
references/api-endpoints.mdGuides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Details PluginEval's skill quality evaluation: 3 layers (static, LLM judge), 10 dimensions, rubrics, formulas, anti-patterns, badges. Use to interpret scores, improve triggering, calibrate thresholds.
Mailgun Inspect (by Sinch) is an email pre-send quality control API. Five capabilities:
| Capability | Base Path | Input |
|---|---|---|
| Accessibility | /v1/inspect/accessibility | html + encoded |
| Link Validation | /v1/inspect/links | links URL array (or /html-validate for HTML) |
| Image Validation | /v1/inspect/images | links URL array (or /html-validate / /upload) |
| Code Analysis | /v1/inspect/analyze | html (no encoded field) |
| Email Previews | /v1/preview/tests (V1) / /v2/preview/tests (V2) | varies |
For full endpoint tables and request schemas, see references/api-endpoints.md.
"Complete" or "Completed"; treat "Failed" as terminal error.POST /v2/preview/tests can trigger accessibility, link validation, image validation, and code analysis in a single call by adding content-checking fields to the body. Use this when the user wants previews + quality checks together.See the sinch-authentication skill. HTTP Basic Auth -- username api, password = Mailgun Private API key.
| Region | Endpoint |
|---|---|
| US | api.mailgun.net |
| EU | api.eu.mailgun.net |
Create responses may return "status": "Processing" or "Completed" depending on endpoint/workload. You must poll the GET endpoint until status is "Complete" or "Completed" (treat "Failed" as terminal error) to get actual results.
# 1. Create test (returns 201 + test ID)
curl --user 'api:YOUR_API_KEY' \
-X POST https://api.mailgun.net/v1/inspect/accessibility \
-H "Content-Type: application/json" \
-d '{"html": "<html><body><h1>Hello</h1><img src=\"logo.png\"></body></html>", "encoded": false}'
# 2. Poll for results (repeat until status is "Complete" or "Completed"; "Failed" = error)
curl --user 'api:YOUR_API_KEY' \
https://api.mailgun.net/v1/inspect/accessibility/TEST_ID
All other endpoints follow the same create-then-poll pattern. Adapt the path and request body per the capability table above.
Each capability accepts different input types. Pick the right one:
html field directly. For accessibility, set encoded: false. For links/images, use the /html-validate sub-endpoint. For code analysis, POST to /v1/inspect/analyze.links array of URLs -- no HTML needed./v1/inspect/images/upload.encoded: true. Code analysis does not use an encoded boolean; use supported request fields (html/url/mime/transfer_encoding/charset).These paths are commonly confused:
/v1/inspect/analyze -- NOT /v1/inspect/code/v1/preview/tests and /v2/preview/tests -- NOT /v1/inspect/preview/html-validate sub-endpoint -- the base POST takes a URL array{"meta": {"status": "Processing"}, "items": {"id": "abc123", ...}}"Complete" or "Completed" (treat "Failed" as terminal error)Accessibility POST returns 201. All other POSTs return 200.
For a complete email quality check, fire all four HTML-based tests in parallel, then poll each:
POST /v1/inspect/accessibility -- body: {"html": "...", "encoded": false}POST /v1/inspect/links/html-validate -- body: {"html": "..."}POST /v1/inspect/images/html-validate -- body: {"html": "..."}POST /v1/inspect/analyze -- body: {"html": "..."}GET /v1/inspect/{category}/{test_id} until completeV2 shortcut: If also generating email previews, POST /v2/preview/tests can trigger all four content checks in one call by including content-checking fields in the request body. See references/api-endpoints.md § Email Previews.
Create test, poll until complete, parse results, fail build on critical issues. See the canonical example above for the create-and-poll pattern. Use jq to extract status and results for scripting.
After validating images, optimize them:
POST /v1/inspect/images/{id}/optimize -- optimize all images in a testPOST /v1/inspect/images/{id}/optimize/{image_id} -- optimize a single imageFilter results by client support when retrieving code analysis:
GET /v1/inspect/analyze/{id}?support_type=n&application_type=web
Values: support_type = y/a/n/u (yes/anomaly/no/unknown), application_type = web/mobile/desktop.
application/json (not form data like Mailgun Send)."Processing" or "Completed" depending on endpoint/workload. Always check the status before assuming results are available.html + encoded. Links and images take a links URL array. Code analysis takes html without encoded. Using the wrong body silently fails./html-validate for HTML input -- If you have HTML (not URLs), use the /html-validate sub-endpoint for links and images.limit (max 1000, default 100) and skip (default 0).