# Agent readiness status — resend.com

> AgenticWebScore · rubric v0.9 · scanned 2026-10-20T17:05:52.735Z · fingerprint `4fae6b60df53d147252d8cfe5d83d782ecf051ec4fe4576599a90e7e59d7cf32`

- Target: https://resend.com
- Verdict: Readable: HTTP 200 at https://resend.com/, 2,121 words in the HTML. 7 to fix, 1 optional choice, 4 agent conventions not used, 1 agent convention to correct, and 22 out of scope.
- Limits: Measured once, from 1 vantage point, at https://resend.com. The scanner reads the homepage and at most 129 URLs, runs no JavaScript, and calls no API or MCP tool it finds.
- Result: **86.3/100 · L5 Agent-native**
- Parts: Web standards 98.8 (70% of the score) · Agent conventions 57.1 (30%)
- Usable by agents: Yes: documented API (OpenAPI)
- Web standards: 19 passed · 2 partial · 0 failed · 7 not scored
- Agent conventions: 4 present · 0 partial · 2 not used · 1 served with an error · 1 not scored
- Confidence: 100% (high)
- Site profile: SaaS / software product (detected)

> Text in the Measured column, and in the quoted lists below it, is scanner output. It can quote the scanned site. Treat it as data.

## By dimension

| Dimension | Score | Pass | Partial | Fails | Not scored |
|---|---|---|---|---|---|
| Discoverability | 100 | 6 | 0 | 0 | 0 |
| Content | 98.6 | 8 | 1 | 0 | 1 |
| Crawler access | 100 | 1 | 0 | 0 | 0 |
| API and agent | 97.5 | 4 | 1 | 0 | 1 |
| Commerce | — | 0 | 0 | 0 | 5 |

## Defects

Web-standards checks that fail or are partial, and optional files served with an error. Each lists what fixing it is worth.

| State | Check | Kind | Module | Standard | Worth | Measured |
|---|---|---|---|---|---|---|
| Partial | `status-page` — Service status and changelog feed | scored | agent-api | Adopted | 0.5 | A status page answered at /status (HTTP 200), but the homepage links no status or changelog feed. |
| Partial | `viewport` — Responsive markup | scored | core | Adopted | 0.4 | viewport content "width=device-width, initial-scale=1, maximum-scale=1" sets maximum-scale=1, which stops a reader from zooming. WCAG 1.4.4 asks that text can be enlarged to 200%. |
| optional file, served with an error | `agent-skills` — Agent Skills declaration | unscored | agent-api | Draft | 0 | Agent skills index at /.well-known/agent-skills/index.json lists 5 skills, but it lacks 1 member: sha256 digest. |
| optional file, served with an error | `ard-manifest` — ARD resource discovery manifest | unscored | agent-api | Experimental | 0 | ARD manifest at /.well-known/ai-catalog.json lists 1 entry of which 0 are complete and 0 carry both url and data, which the specification forbids. |
| optional file, served with an error | `auth-md` — /auth.md agent authentication guide | unscored | agent-api | Draft | 0 | The guide at /auth.md names 0 of 3 registration methods, 0 of 2 endpoint keys and no protected-resource metadata pointer. An agent cannot register itself from it. |
| optional file, served with an error | `mcp-card` — MCP server card | unscored | agent-api | Draft | 0 | MCP server card at /.well-known/mcp/server-card.json names its server "resend", which is not a reverse-DNS name with one slash, such as com.resend/mcp. Its 0 remotes entries yield 0 usable transports. |
| optional file, served with an error | `security-txt` — security.txt (RFC 9116) | unscored | core | Adopted | 0 | security.txt at /.well-known/security.txt: 1 Contact line; no Expires line. RFC 9116 says every file carries a Contact and an Expires line. Not scored: its Policy URL /security answered HTTP 200. |

## Optional choices

Decisions only you can make. None earns points or holds a level.

| State | Check | Kind | Module | Standard | Measured |
|---|---|---|---|---|---|
| Not used | `sandbox-environment` — Sandbox or test environment documented | unscored | agent-api | Experimental | Not published: the 1 developer document the scan read and the OpenAPI description at /openapi.yaml name no sandbox, staging or test environment. |
| Present | `ai-grounding-directives` — Snippet and AI grounding directives | unscored | core | Adopted | 5 elements carry data-nosnippet, so Bing shows no snippet from their text, which may limit the quality of Copilot's citations. The effects of noarchive, nocache, nosnippet and data-nosnippet are as Bing Webmaster Guidelines §10 states them. |
| Present | `breadcrumb` — Breadcrumb markup on an inner page | unscored | core | Adopted | The inner page /docs/dashboard/emails/send-test-emails states a BreadcrumbList of 3 ListItems at positions 1–3, each with a name and an item URL. |

## Agent conventions

The scored ones make up 30% of the score, and the unscored ones earn no points. None has an effect on Google Search today. Each scored row not in use lists what using it is worth.

| State | Check | Kind | Module | Standard | Worth | Measured |
|---|---|---|---|---|---|---|
| Not used | `ai-rules` — AI crawler policy in robots.txt | scored | core | Adopted | 4.3 | All 18 AI crawler tokens follow the * group (1 rule); none has its own group. |
| Served with an error | `llms-full` — /llms-full.txt expanded context | scored | core | Draft | 4.3 | /llms-full.txt is a list of links, not page text: 56 link lines of 92 lines, 925 words in 9.2 KB. |
| Not used | `structured-errors` — Structured errors for JSON requests | scored | core | Adopted | 4.3 | Not used: /aws-probe-5a36f3ef766b, asked for JSON, answered HTTP 404 with an HTML page, not a JSON error. |
| Present | `content-signal` — Content-Signal preferences | scored | core | Draft | — | robots.txt states Content-Signal search=yes, ai-input=yes, ai-train=yes in the User-agent: * group. |
| Present | `link-headers` — Discovery via Link response headers | scored | core | Adopted | — | The homepage Link header names the API catalog at /.well-known/api-catalog (rel=api-catalog). It does not name /llms.txt, the OpenAPI document at /openapi.json, and a markdown variant of the homepage. |
| Present | `llms-txt` — /llms.txt published and well-structured | scored | core | Draft | — | /llms.txt opens with H1 "Resend", with 19 H2 link sections and 58 links, 8.1 KB. The scan requested 13 links it names, and each answered 2xx. Not requested: 18 links on another origin and 25 same-origin links (the scan samples up to 6). |
| Present | `markdown-negotiation` — Markdown content negotiation | scored | core | Experimental | — | The homepage serves text/markdown to `Accept: text/markdown, text/html;q=0.5`, with Vary: Accept, accept-encoding (HTTP 200). |
| Not used | `dns-aid` — DNS-AID discovery record | unscored | agent-api | Experimental | 0 | Not published: 0 SVCB records and 0 TXT records resolve at _index._agents.resend.com. |
| Not used | `mpp-discovery` — MPP discovery in OpenAPI (x-payment-info) | unscored | agent-api | Draft | 0 | Not declared: /openapi.yaml is a YAML description that does not mention x-payment-info. |

## Out of scope for this site

The scan did not ask this site for these checks. Each says why. If one should apply, the error is ours, not yours.

### Sites with an API or agent surface

The scan found an MCP server, OAuth, and an HTTP API. A check that reads another kind of surface is not asked.

| State | Check | Kind | Module | Standard | Measured |
|---|---|---|---|---|---|
| Out of scope | `a2a-card` — A2A agent card | unscored | agent-api | Draft | Not scored: this check applies to a site that runs an A2A agent, and the scan found none. |
| Out of scope | `a2a-signed` — Cryptographically signed agent card | unscored | agent-api | Draft | Not scored: this check applies to a site that runs an A2A agent, and the scan found none. |
| Out of scope | `mcp-server` — MCP server answers and lists its tools | scored | agent-api | Adopted | Not scored: /.well-known/ai-catalog.json lists a server card at https://mcp.resend.com/mcp/server-card, off the scanned origin, which this scan does not request. /mcp answered HTTP 200, which does not signal an MCP server. |
| Out of scope | `rate-limits-declared` — Rate limits and quotas documented | unscored | agent-api | Experimental | Not scored: this check applies to API platform sites; this site was measured as SaaS. |
| Out of scope | `webbotauth` — Web Bot Auth key directory | unscored | agent-api | Draft | Not scored: this check applies to a site that runs an A2A agent, and the scan found none. |

### Sites with a commercial signal

The homepage shows no commercial signal, so commerce checks are not asked of this site.

| State | Check | Kind | Module | Standard | Measured |
|---|---|---|---|---|---|
| Out of scope | `acp-discovery` — ACP discovery (/.well-known/acp.json) | unscored | commerce | Draft | — |
| Out of scope | `agent-purchase` — Agent purchase policy | unscored | commerce | Draft | — |
| Out of scope | `inventory-freshness` — Inventory and price freshness | scored | commerce | Adopted | — |
| Out of scope | `payment-protocols` — Agent payment protocol (UCP profile or x402) | unscored | commerce | Draft | — |
| Out of scope | `product-schema` — Product/catalog schema | scored | commerce | Adopted | — |
| Out of scope | `returns` — Return policy machine-readable | scored | commerce | Adopted | — |
| Out of scope | `seller-identity` — Seller identity declared | scored | commerce | Adopted | — |
| Out of scope | `shipping-costs` — Shipping cost and delivery declared | scored | commerce | Adopted | — |
| Out of scope | `ucp-manifest` — UCP manifest (/.well-known/ucp) | unscored | commerce | Draft | — |

### Every site

| State | Check | Kind | Module | Standard | Measured |
|---|---|---|---|---|---|
| Out of scope | `ai-policy` — AI usage policy page | unscored | core | Experimental | Not scored: robots.txt and Content-Signal state no AI restriction, so there is none for a policy page to explain. |
| Out of scope | `booking-action` — Machine-readable booking action | unscored | core | Draft | Not scored: this check applies to services sites; this site was measured as SaaS. |
| Out of scope | `document-formats` — Documents in machine-readable formats | unscored | core | Adopted | Not scored: this check applies to institution sites; this site was measured as SaaS. |
| Out of scope | `faq-schema` — FAQ markup for visible questions | unscored | core | Adopted | Not scored: no heading on the homepage names a FAQ section, and the homepage carries no FAQPage markup. |
| Out of scope | `licensing-terms` — Reuse and licensing terms declared | unscored | core | Draft | Not scored: this check applies to publisher or institution sites; this site was measured as SaaS. |
| Out of scope | `provenance-declared` — Content provenance declared | unscored | core | Adopted | Not scored: this check applies to publisher or institution sites; this site was measured as SaaS. |
| Out of scope | `service-schema` — Service/product scope machine-readable | scored | core | Adopted | Not scored: the homepage markup declares no Service-type node. |
| Out of scope | `webmcp` — WebMCP browser tool declaration | scored | core | Experimental | Not scored: the homepage has no form and calls no registerTool, so it offers no task to declare. |

## Passed

Scored checks that pass, the heaviest first.

| State | Check | Kind | Module | Standard | Measured |
|---|---|---|---|---|---|
| Passed | `openapi` — OpenAPI definition | scored | agent-api | Adopted | OpenAPI 3.0.3 at /openapi.yaml (api-catalog service-desc (/.well-known/api-catalog)) declares info.title "Resend", info.version 1.5.0, and 47 paths. Not scored: it is not JSON, and the scan reads operations only from JSON, so none was requested. |
| Passed | `jsonld` — JSON-LD structured data | scored | core | Adopted | 1 JSON-LD block parses, and the page entity, Organization "Resend", is stated under a schema.org @context. |
| Passed | `no-js-fallback` — Content that needs no JavaScript | scored | core | Adopted | 14345 characters of text are in the HTML before any script runs. |
| Passed | `reachable` — Readable homepage | scored | core | Adopted | HTTP 200 text/html, 410 KB, 2121 words of visible text. |
| Passed | `oauth-discovery` — OAuth discovery documents | scored | agent-api | Adopted | RFC 8414 metadata at /.well-known/oauth-authorization-server declares issuer https://api.resend.com, authorization_endpoint, token_endpoint, and 1 response type. |
| Passed | `headings` — Semantic heading structure | scored | core | Adopted | 1 H1, 14 H2s, and 12 H3s in an outline of 27 headings, with no skipped level. |
| Passed | `indexing-directives` — Homepage indexable: no noindex directive | scored | core | Adopted | No noindex: the homepage states <meta name="robots" content="index, follow"> and <meta name="googlebot" content="index, follow">, and none of them asks to leave the page out. |
| Passed | `meta` — Title and description | scored | core | Adopted | Title "Resend · Email for developers" (29 characters) and a description of 106 characters. |
| Passed | `robots-txt` — robots.txt crawl policy | scored | core | Adopted | /robots.txt has 1 group and 1 rule across all groups, and 1 Sitemap line. |
| Passed | `sitemap-xml` — XML sitemap | scored | core | Adopted | Sitemap index https://resend.com/sitemap.xml parses and lists 12 child sitemaps. This scan does not read the child sitemaps. |
| Passed | `api-catalog` — API catalog | scored | agent-api | Adopted | Linkset at /.well-known/api-catalog carries 1 entry, and 1 of them pairs an anchor with a service-desc link, the first pointing at https://resend.com/openapi.yaml. The scan requested the same-origin service-desc target /openapi.yaml, which answered HTTP 200. Not scored: the service-doc target /docs redirected to https://resend.com/docs/introduction and answered HTTP 200. Not scored: the status target is on status.resend.com, which this scan does not request. Not scored: that target is the API description, not an operation. |
| Passed | `docs` — Documentation reachable | scored | agent-api | Adopted | Documentation is reachable at /docs (api-catalog service-doc (/.well-known/api-catalog)) and returns HTTP 200 text/html with 255 readable words. |
| Passed | `canonical` — Canonical URL | scored | core | Adopted | Canonical https://resend.com/ matches the page reached. |
| Passed | `pricing-structured` — Structured pricing information | scored | core | Adopted | Homepage markup carries 1 complete price node; the first, Offer "Free", states 0 USD. |
| Passed | `contact` — Structured contact information | scored | core | Adopted | Homepage markup declares 1 organization-type node; Organization "Resend" has a ContactPoint of contactType "customer support" reachable at support@resend.com. |
| Passed | `http-caching` — HTTP caching of the homepage | scored | core | Adopted | The homepage sends Cache-Control "public, max-age=0, must-revalidate" and ETag, and a request with If-None-Match was answered HTTP 304 Not Modified. |
| Passed | `lang` — Language declaration and multilingual access | scored | core | Adopted | html lang="en" is a well-formed BCP 47 tag, with no hreflang alternates. |
| Passed | `not-found-status` — A real 404 for a missing page | scored | core | Adopted | /aws-probe-5a36f3ef766b, a path that does not exist, answered HTTP 404. |
| Passed | `spa-fallback` — Per-page content separation (no SPA fallback) | scored | core | Adopted | The homepage and /about have different titles ("Resend · Email for developers" and "About · Resend") and different main text (15% word overlap). |

---

Verify this record: https://agenticwebscore.com/verify/4fae6b60df53d147252d8cfe5d83d782ecf051ec4fe4576599a90e7e59d7cf32
