resend.com/docs/api-reference/introduction
Finalizing the report
Preparing the stored Is Agentic score
resend.com/docs/api-reference/introduction
Preparing the stored Is Agentic score
resend.com/docs/api-reference/introduction
These checks describe whether an ordinary agent can enter, read, and operate the public site.
Agents can reach the site
Crawler access and bot defenses.
Core content is available
Useful content remains accessible without a fragile browser-only path.
Navigation fails safely
Redirects and missing pages give agents a recoverable path.
Controls are understandable
Forms and interactive controls expose usable names and structure.
The public website is always evaluated. Optional surfaces appear when the scan finds positive evidence that they apply.
Strong
Weighted across 16 applicable checks
Needs work
Weighted across 12 applicable checks
Strong
Weighted across 3 applicable checks
Ready with gaps
Weighted across 1 applicable check
Critical access gaps come first, followed by other applicable readiness gaps.
Keep the correct HTTP 404 status. The remaining requirement is a Markdown error body when agents request Accept: text/markdown. Include at least 20 characters explaining the error and a link to your docs, sitemap, or llms.txt. Verify with curl -sS -L -i -H 'Accept: text/markdown' https://yourdomain.com/some-path-that-does-not-exist. Check both the final 404 status and the Markdown body with Content-Type: text/markdown. Checking the status alone does not verify the missing requirement.
Serve at least 500 characters of meaningful homepage content in raw HTML. Add a clear H1, keep deeper heading levels sequential, and remove excessive non-content markup.
Document your error responses in your OpenAPI spec: give 4xx and 5xx responses a typed error schema (or use RFC 9457 application/problem+json). A consistent error object with a machine-readable code and a human-readable message lets agents handle failures without guessing.
Return standard rate-limit headers on your API responses (the RFC RateLimit headers, plus Retry-After on a 429) so agents can self-throttle in real time, and document the conventions alongside your API.
Make sure your own domain ranks in the top results when people search your brand together with your main product (for example "Acme payments API"). If it does not, your brand may be too generic, conflict with a more established term, or not yet indexed. Strengthen it by describing your main product clearly in your homepage title and headings, earning press mentions that link to your domain, and avoiding redirect chains that mask your main domain in search results.
Checks are grouped by relevance for App sites.
13177 chars with H1, but 4.4% content ratio is below the 5% target
How to pass
Serve at least 500 characters of meaningful homepage content in raw HTML. Add a clear H1, keep deeper heading levels sequential, and remove excessive non-content markup.
Site accessible to 6 AI agent user-agents
No meta-refresh stubs, JavaScript-redirect stubs, or cross-domain hops across 6 checked pages
All 5 sampled pages are publicly readable (5 with substantive content)
OpenAPI spec found at https://resend.com/openapi.json (version: 3.0.3)
Canonical URL serves text/markdown and text/html via Accept negotiation with Vary: Accept
OAuth authorization server metadata at https://api.resend.com
scopes_supported declares 2 scope(s) in RFC 9728 metadata (e.g. full_access, emails:send)
API returns JSON error responses (401 at https://api.resend.com (from OpenAPI servers))
The nonexistent path https://resend.com/__ora-404-probe-z58jiaet correctly returns HTTP 404. Partial credit: no Markdown error body was detected.
How to pass
Keep the correct HTTP 404 status. The remaining requirement is a Markdown error body when agents request Accept: text/markdown. Include at least 20 characters explaining the error and a link to your docs, sitemap, or llms.txt. Verify with curl -sS -L -i -H 'Accept: text/markdown' https://yourdomain.com/some-path-that-does-not-exist. Check both the final 404 status and the Markdown body with Content-Type: text/markdown. Checking the status alone does not verify the missing requirement.
Agent discovered 1 developer-resource type by name (developer portal) across 4 pages
resend.com ranks #7 for "Resend Email API"
How to pass
Make sure your own domain ranks in the top results when people search your brand together with your main product (for example "Acme payments API"). If it does not, your brand may be too generic, conflict with a more established term, or not yet indexed. Strengthen it by describing your main product clearly in your homepage title and headings, earning press mentions that link to your domain, and avoiding redirect chains that mask your main domain in search results.
Valid sitemap found at https://resend.com/sitemap.xml with multiple sitemaps entries
Rich JSON-LD identity: Organization with name, description, url, and sameAs/logo/address (1 block)
Pricing page found at /pricing
API/docs link found on homepage and resolves: https://resend.com/docs
Agent instruction file at /.well-known/agent-skills/ but no explicit when-to-use guidance
How to pass
Tell agents when to reach for you: add a 'when to use this' section to your llms.txt (or a dedicated agent-instructions file) that names your best-fit use cases and how an agent should call you. Be specific about the jobs you are right for - generic marketing copy does not read as guidance.
All metadata signals present: canonical URL, lang="en", og:image, og:type
Organization schema complete with contactPoint and address
All trust anchor pages verified: About, Contact, Privacy
All 7 measured pages fit an agent context budget (largest ~3K tokens)
Code fences balanced across 2 markdown documents
Developer portal found at /docs
Documented REST API detected; endpoints require authentication (API key / OAuth), which is expected for agent access. Best-of-protocols score: 7/7.
Low friction onboarding verified live: free tier available, self-serve key generation, sandbox/test environment, zero-friction self-serve registration at /api/agents/register
MCP server detected at https://mcp.resend.com/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials.
How to pass
Keep authentication enabled. Verify tool listing with an authorized MCP client. This unauthenticated scan cannot establish whether protected tools are missing or unusable.
No REST rate-limit headers found on probed endpoints
How to pass
Return standard rate-limit headers on your API responses (the RFC RateLimit headers, plus Retry-After on a 429) so agents can self-throttle in real time, and document the conventions alongside your API.
No typed error model found in OpenAPI spec
How to pass
Document your error responses in your OpenAPI spec: give 4xx and 5xx responses a typed error schema (or use RFC 9457 application/problem+json). A consistent error object with a machine-readable code and a human-readable message lets agents handle failures without guessing.
Sunset or Deprecation headers found in OpenAPI spec but no URL or header versioning strategy detected
How to pass
Declare a versioning policy agents can rely on: version your API (in the URL path or a version header) and publish how you signal deprecation (a Sunset/Deprecation header or a documented timeline). Agents avoid integrating against a surface that can change without warning.
CLI package found on npm: resend-cli
99% of operations define typed response schemas, 99% use application/json
REST: schema found (83 operations) but only 0% of operations carry an operationId
How to pass
Make your API spec self-describing: a unique operationId and a description on every operation, typed parameters, and response schemas. For GraphQL, a fully typed schema with a documented cost or rate limit reads best.
Partial compatibility: 0/83 operationIds, 82/83 typed schemas
How to pass
Ensure API endpoints have unique operation IDs, typed schemas, and descriptions compatible with LLM function-calling formats.
Wikidata Q120734122 (resend) verified - draft a Wikipedia page with cited references to complete knowledge graph coverage
How to pass
Establish a Wikipedia article and a Wikidata entity for your brand, with the domain set as the official website (Wikidata property P856) and a corresponding external link on Wikipedia. Wikipedia is the largest single source of citations in ChatGPT and a primary input to Knowledge Graphs across Google, Bing, and LLM training data. Earn third-party press coverage first to satisfy notability, then draft the article with cited references rather than self-promotion.
Verified in 2 registries: Smithery (resend) [entry-to-product], npm (resend-mcp) [package-owner] - 17 agent uses
NPM package found: resend - "Node.js library for the Resend API"
MCP manifest has name and description but no icon at /.well-known/mcp/server-card.json
How to pass
Give your MCP server-card (at /.well-known/mcp/server-card.json) a display name, an icon or logo, and a description - all three together are what reads as a complete, branded listing agents can present.
Found in ChatGPT app directory: "Resend"
Agent Skills index (agentskills.io) found at /.well-known/agent-skills/index.json with 5 skill(s)
11 official skills published on skills.sh - 64,908 total installs (skills.sh/resend)
Structured pricing.md found at /pricing.md (158 lines)
MCP server discoverable via server-card.json at /.well-known/mcp/
RFC 8288 Link header advertises: api-catalog
100% of 176 sampled sitemap entries carry lastmod; newest is 11 day(s) old
Found the llms.txt at https://resend.com/llms.txt.
The llms.txt is well-formatted: 99 lines with markdown links, 7,896 characters in total.
Rich skills.sh presence - 11 skills, 64,908 installs. Agents can understand capabilities in depth
Strong entity linking via sameAs: wikidata.org, linkedin.com, crunchbase.com, github.com
Some extended schema types found: BreadcrumbList - add FAQPage, Service, or AggregateRating for full coverage
How to pass
Expand your JSON-LD beyond Organization/WebSite. Add FAQPage for common questions, Service or Product for offerings, AggregateRating or Review for social proof, and BreadcrumbList for navigation context.
1 of 5 probed llms.txt links do not resolve: https://mcp.resend.com/mcp
How to pass
Make every link your llms.txt declares resolve to real content. Verify each one with curl -L <url> - you should see the linked document, not your homepage. If your app returns the homepage shell for unknown paths (common with single-page apps), a 200 status is not proof: check the body. Fix or remove any dead link; agents that follow the index treat a broken link as a dead end.
api-catalog linkset[0] has no 'item' entries
How to pass
Publish an API catalog at /.well-known/api-catalog per RFC 9727. Serve it with Content-Type: application/linkset+json;profile="https://www.rfc-editor.org/info/rfc9727" and include a 'linkset' array with item entries pointing to your OpenAPI specs and service descriptions.
Path-suffix markdown docs served with text/markdown content-type: /auth.md
product MCP requires authentication with OAuth metadata discovery
RFC 8414 OAuth metadata for product MCP: issuer=https://api.resend.com, auth and token endpoints present; client registration: CIMD (client_id_metadata_document_supported)
OAuth metadata for product MCP supports PKCE S256 code challenge
RFC 9728 metadata: resource=https://api.resend.com, authorization_servers (1), scopes_supported (2), bearer_methods_supported
auth.md at https://resend.com/auth.md served as text/markdown; charset=utf-8 (4686 chars)
auth.md at https://resend.com/auth.md explicitly documents non-support for agentic registration (honest disclosure, not a generic auth page); 3/8 walkthrough sections (found Use credential, Errors, and Revocation)
How to pass
Structure /auth.md as the WorkOS spec prescribes: sections for Discover, Pick a method, Register, Claim, Exchange, Use the access_token, Errors, and Revocation, with spec anchor keywords (agent_auth, identity_endpoint, identity_assertion, service_auth, id-jag, WWW-Authenticate). Reference https://github.com/workos/auth.md.
Static fallback: PRM + AS metadata both reachable but AS metadata lacks an agent_auth block; walkthrough cannot identify a registration template
How to pass
Make your published auth-discovery chain traversable end to end: an agent starting at /auth.md (or your protected-resource metadata) should be able to follow the links to your authorization-server metadata and registration endpoint without hitting a dead link. Test the whole path, not just each file in isolation.
PRM + AS metadata both present (AS metadata fetched from advertised origin https://api.resend.com) but AS metadata has no agent_auth block
How to pass
Publish RFC 9728 protected-resource metadata at /.well-known/oauth-protected-resource on your resource server (the host that actually serves the API, e.g. api.<apex>) with resource and authorization_servers. Publish RFC 8414 authorization-server metadata at /.well-known/oauth-authorization-server on the AS origin, and include the WorkOS auth.md agent_auth block with identity_endpoint, identity_types_supported drawn from the spec enum (anonymous, identity_assertion, service_auth - the assertion variant, the ID-JAG URN urn:ietf:params:oauth:token-type:id-jag, belongs inside identity_assertion.assertion_types_supported, not at the top level), and the identity_assertion.assertion_types_supported block when you advertise that type, so agents can check their assertion shape is accepted before minting. Cross-link by listing the AS origin in PRM authorization_servers, and point agent_auth.skill back at your published /auth.md. Spec: https://github.com/workos/auth.md.
WebMCP mentioned in documentation at /docs but not implemented on homepage
How to pass
Expose in-page tools through WebMCP, a proposed web standard for browser agents. Register tools with document.modelContext.registerTool() and use navigator.modelContext only as a trailing compatibility fallback. Declarative forms with toolname and tooldescription provide server-rendered evidence, but remain a preview and should not be your only tool surface. Chrome's origin trial covers versions 149-156, with shipping currently targeted for 157. ChatGPT can discover and call WebMCP site tools in the desktop app's built-in browser when the feature is available.
REST Idempotency-Key header found on POST /emails in OpenAPI spec
REST pagination pattern documented at https://resend.com/openapi.yaml (REST API is auth-gated; credited via documentation).
202 Accepted responses found but no clear polling pattern (Location header, /jobs path, or job_id schema)
How to pass
For long-running operations, return 202 Accepted and point agents at where to poll for the result (a status/location reference plus a job identifier in the body), documented in your OpenAPI spec, so work that does not finish in one request is still followable.
SDK packages found across 4 ecosystems: npm, pypi, go, rubygems
REST batch / bulk endpoint documented at https://resend.com/openapi.yaml (REST API is auth-gated; credited via documentation).
105 native controls, 6 non-native div-soup affordances (95% native).
101/105 interactive elements have a computable accessible name (96%).
No hidden instruction text detected in accessibility-tree attributes or off-screen content.
What does resend.com do and who is it for? Explain it back to me.
Sign me up for Vercel product updates and marketing emails.
Unsubscribe anytime. Privacy Notice
Source: Ora API
What does resend.com do and who is it for? Explain it back to me.
14 steps3 reasoning steps4 searches
The agent successfully assembled a comprehensive explanation of Resend by combining prior knowledge of the site structure with external research. The resend.com domain itself was navigable but did not surface detailed pricing, feature comparisons, or limitations in a machine-readable form; the agent relied on web search results and third-party review sites to answer most of the task. The final response is well-grounded and addresses all four aspects of the task (what, who, pricing, differentiation), though some gaps (vague pricing boundaries, unclear marketing tier, opaque enterprise pricing) remain unresolved.