Amazon SES
aws.amazon.com/ses
70Score 70 out of 100/100
108.1 of 155 points.
Missed 46.9 points:
An AI agent's path through Amazon SES
- FindCan an agent get in and find what it needs?81/100
4 of 5 pass · 1 gap
- ReadCan it read what it finds?79/100
7 of 13 pass · 6 gaps
- ActCan it do something with your product?Weakest step45/100
4 of 9 pass · 5 gaps
GoalAn agent uses Amazon SES
Wider segments are worth more points. The overall adds up every check's points, so it isn't the average of the three parts. 4 checks don't count here: see why.
Easy to find, fairly easy to read and use.
Amazon SES passes 4 of 5 Find checks, 7 of 13 Read checks and 4 of 9 Act checks. The weakest step is Act. One more fails there, but we'd skip it for now.
- Rank
- 15 of 15 · Email APIs15th of 15 Email APIsOn our 9 Nov 2026 scan
- Checks passed
- 15 of 27 counted
- This scan
From our 9 Nov 2026 scan.
Board results come from one dated scan, so every company is compared on the same day. A live scan reads the site as it is now.
- Details
4 checks don't count here:
- 2 need an OpenAPI spec, and we didn't find one.
- 1 is about sign-in our stand-in can't judge: signed or body-key.
- 1 needs an OAuth sign-in to judge, and there isn't one.
Domain-level checks read aws.amazon.com, which hosts Amazon SES.
1What to fixPart 1 of 4
11 gaps to fix
Most points for the least effort. Each sits next to the file the best email API on our board shipped, as of 9 Nov 2026. One more check fails with no example to follow yet; it's below the fixes.
All 31 checks15 pass · 12 fail
Find
Read
- ✓Docs readable without a login (LG-READ-01), PassPass
- ✓Real 404s (AR-READ-02), Pass15 of 15 pass
- ✓llms.txt (AR-READ-07), Pass14 of 15 pass
- ✓Meta description (AR-READ-03), Pass15 of 15 pass
- ✓Structured docs page (AR-READ-04), Pass13 of 15 pass
- ✓Readable pricing (AR-READ-11), Pass15 of 15 pass
- ✓Structured data (AR-READ-08), Pass13 of 15 pass
Act
- ✓MCP server or CLI (AR-ACT-10), Pass12 of 15 pass
- –Auth an agent can follow (proxy) (AR-ACT-01), Not countedNot counted
- –Every operation has an operationId (LG-ACT-01), Not countedNot counted
- ✓MCP server (AR-ACT-03), Pass14 of 15 pass
- –Errors have a schema (LG-ACT-02), Not countedNot counted
- ×Tools for browser agents (AR-ACT-07), Fail0 of 15 pass
- ✓An agent skill is published (LG-ACT-03), PassPass
- –Sign-in an MCP client can use (LG-ACT-04), Not countedNot counted
Fix 1: Your pages don't point agents at your llms.txt
Do this: Point agents at your llms.txt from your homepage and docs page: a plain link like <a href="/llms.txt">llms.txt</a> in the footer, or <link rel="llms-txt" href="/llms.txt"> in the <head>.
llms.txt linked from your pages: a link on your pages to your llms.txt, so agents know it's there.
×FailWhat we read on Amazon SES (2)
- GEThttps://aws.amazon.com/ses/HTTP 200homepage: no pointer to llms.txt
- GEThttps://docs.aws.amazon.com/ses/latest/dg/Welcome.htmlHTTP 200docs page: no pointer to llms.txt (it does point agents at: <link rel="alternate" type="text/markdown" to https://docs.aws.amazon.com/ses/latest/dg/Welcome.md>)
✓PassFrom Mailtrap, on our email API board, as of 9 Nov 2026
- GEThttps://mailtrap.io/HTTP 200homepage: a Link header to https://mailtrap.io/llms.txt
- GEThttps://mailtrap.io/llms.txtHTTP 200an llms.txt with markdown links
What the leader shippedView their file ↗
1a Link header: https://mailtrap.io/llms.txtWhy it might matter
An agent mostly finds files by following links, so it may never try /llms.txt if your pages don't point to it.
Our call · Worth doing.
A link in your footer or <head>, and agents find your llms.txt without guessing its address.
Our judgement.
How we test this
- We read your homepage and your docs page and look for a pointer to an llms.txt: a link to it, a <link> tag, a Link header with rel="llms-txt" or an X-Llms-Txt header, or a line on the page naming /llms.txt.
- It passes when one points at an llms.txt that answers with markdown links.
- AFDocs checks the same (llms-txt-directive).
1 more fails, with no example yet: Tools for browser agents
Nobody on the board passes our check yet
No email API on our board passes our check on these yet, so there's no example to show.
We didn't find tools for browser agents in your homepage's HTML or inline scripts
Tools for browser agents: tools your web page offers to AI agents that work in a browser (a proposed standard).
It costs a point, but it's only worth building if agents need to operate forms on your site. If they do, a browser agent may find no tools to call and have to click through instead.
Don't do it for the score. It's still a proposed standard, and almost nobody on our boards passes our check, though Bird, Postmark and CrewAI load it from a script our check doesn't read. Build it only if agents need to operate forms on your site. Our judgement.
Show every address our checks read
Where our checks looked
Every address our checks read in our 9 Nov 2026 scan, by host. What each check read, not a recording of a visit, so there's no order.
✓ passes on this address alone× fails: select it to open the fix· also read here
aws.amazon.com
- /robots.txt200 OK·AI agents allowed, homepage reachable: also read here
- /ses/200 OK·Our scanner gets in: also read here✓Meta description: Pass✓Structured data: Pass–Every operation has an operationId: Not counted–Errors have a schema: Not counted×Tools for browser agents: Fail
- /sitemaps/index/200 OK✓Sitemap: Pass
- /ses/getting-started/200 OK·Docs readable without a login: also read here
- /leaderfile-check-404404 · expected, it's a probe✓Real 404s: Pass
- /llms.txt404 not found·llms.txt: also read here
- /ses/pricing/200 OK✓Readable pricing: Pass✓Free tier in emails: Pass
- /.well-known/oauth-authorization-server404 not found–Sign-in an MCP client can use: Not counted
- /.well-known/oauth-protected-resource404 not found
- /.well-known/openid-configuration404 not found
- /.well-known/api-catalog404 not found
- /.well-known/agent-card.json404 not found
- /openapi.json404 not found
- /openapi.yaml404 not found
docs.aws.amazon.com
- /robots.txt200 OK·AI agents allowed, homepage reachable: also read here
- /ses/latest/dg/Welcome.html200 OK·Our scanner gets in: also read here✓Docs page: Pass·Docs readable without a login: also read here✓Structured docs page: Pass
- /ses/latest/dg/agent-setup-guide.html200 OK·Docs readable without a login: also read here✓MCP server: Pass✓An agent skill is published: Pass
- /index.html200 OK·Docs readable without a login: also read here
- /ses/index.html200 OK·Docs readable without a login: also read here
- /ses/latest/dg/send-email-smtp.html200 OK·Docs readable without a login: also read here
- /ses/latest/APIReference-V2/200 OK·Docs readable without a login: also read here
- /llms.txt200 OK·llms.txt: also read here
- /ses/latest/dg/send-personalized-email-api.html200 OK✓MCP server or CLI: Pass
- /openapi.json404 not found
- /openapi.yaml404 not found
- /ses/latest/APIReference/CommonParameters.htmlno answer–Auth an agent can follow (proxy): Not counted
11 checks in red are your fixes. Select one to open it.Auth an agent can follow (proxy), Every operation has an operationId, Errors have a schema and Sign-in an MCP client can use weren't counted.
Want a hand fixing this?
Leave your email and we'll reply about the gaps on aws.amazon.com. One reply, no newsletter.
We store your email, this domain and its gaps, to reply. Nothing else. To be removed, email rahulu626@gmail.com
2How it comparesPart 2 of 4
How Amazon SES compares
Score after each fix
Mailtrap, the leader, at 99ScoreRank
- Nowscore 70rank 15
- +1 fixscore 74rank 14past Azure Communication Services Email
- +2 fixesscore 79rank 14
- +3 fixesscore 80rank 14
One fix at a time, in the order above. Full scores and ranks on our 9 Nov 2026 board: our maths, not a forecast.
11 gaps with a real example to follow.
Find, Read and Act against the other 14 email APIs
Out of 100. On each bar, the light mark is their median and the dark one their best.
YouMedianBest
- Find81100100Find: 81, median 100, best 100.
- Read7995100Read: 79, median 95, best 100.
- Act458396Act: 45, median 83, best 96.
0100
Where Amazon SES stands
On our board
The 15 email APIs on our board average 88, and the top score is 99.
Neighbours on the board
ScoreVs Amazon SES
- MailerSend82+12
- Azure Communication Services Email72+2
- Amazon SES70
MailerSend 12 and Azure Communication Services Email 2 ahead.
Email APIs, our 9 Nov 2026 board. Our maths, not a forecast.
What Amazon SES does well
The checks Amazon SES passes that are rarest among the 15 email APIs on our board.
- ✓MCP server or CLIAR-ACT-10 · 12 of 15 on our board pass this
- ✓Structured docs pageAR-READ-04 · 13 of 15 on our board pass this
- ✓Free tier in emailsEM-03 · 13 of 15 on our board pass this
Compare Amazon SES with rivals
3Every checkPart 3 of 4
What these checks can't tell you
- Whether an agent can sign up and get a key. One registry found 30 of 100 developer tools blocked it.
- Whether coding agents write current code for your API. In our small test, a 96 and a 71 came out the same: what we found.
- Whether your bot protection lets an agent in when a person sends one. Check your CDN settings.
- Whether ChatGPT recommends you. That depends on far more than these files.
- What another scanner would give you. They ask different questions and weigh them differently: why the numbers differ.
All 31 checks
15 pass, 12 fail, 0 couldn't check, 4 not counted. The count on each row is how many of the 15 email APIs on our board pass that check.
Find · 4 of 5 pass · 29 of 36 points
✓PassAI agents allowed, homepage reachableAR-FIND-01checked /ses/; none of the user or search agents is blocked; checked /ses/latest/dg/Welcome.html; none of the user or search agents is blocked10 of 10 points · 15 of 15 pass
10 of 10 points · Gate, worth 10
- GEThttps://aws.amazon.com/robots.txtHTTP 200checked /ses/; none of the user or search agents is blocked
- GEThttps://docs.aws.amazon.com/robots.txtHTTP 200checked /ses/latest/dg/Welcome.html; none of the user or search agents is blocked
What our check kept, up to 60 lines or 6 KB
User-agent: AdsBot-Google User-agent: AdsBot-Google-Mobile Allow: /pm/ Disallow: /alexaforbusiness/ Disallow: /blogs/ Disallow: /*/blogs/ Disallow: /solutions/case-studies/ Disallow: /*/solutions/case-studies/ Allow: /solutions/case-studies/sustainability-emea/ Allow: /*/solutions/case-studies/sustainability-emea/ Allow: /solutions/case-studies/innovators/innovators-eu/ Allow: /*/solutions/case-studies/innovators/innovators-eu/ Allow: /solutions/case-studies/generative-ai-ekacare/ Allow: /cn/solutions/case-studies/generative-ai-ekacare/ Allow: /solutions/case-studies/generative-ai-mindtickle/ Allow: /cn/solutions/case-studies/generative-ai-mindtickle/ Allow: /solutions/case-studies/generative-ai-invideo/ Allow: /solutions/case-studies/generative-ai-mitsui/ Allow: /solutions/case-studies/generative-ai-national-australia-bank/ Allow: /solutions/case-studies/generative-ai-ntu/ Allow: /solutions/case-studies/generative-ai-qarc/ Allow: /solutions/case-studies/generative-ai-swimming-australia/ Allow: /cn/solutions/case-studies/generative-ai-swimming-australia/ Allow: /solutions/case-studies/generative-ai-thematic/ Allow: /cn/solutions/case-studies/generative-ai-thematic/ Allow: /solutions/case-studies/generative-ai-turing/ Allow: /solutions/case-studies/generative-ai-stockmark/ Allow: /*/solutions/case-studies/generative-ai-turing/ Allow: /*/solutions/case-studies/generative-ai-stockmark/ Allow: /solutions/case-studies/generative-ai-starhub/ Allow: /solutions/case-studies/generative-ai-bolttech/ Allow: /*/solutions/case-studies/generative-ai-starhub/ Allow: /*/solutions/case-studies/generative-ai-bolttech/ Allow: /solutions/case-studies/nba-migration-case-study/ User-agent: * # Block old What's New posts to preserve crawl budget for current content Disallow: /about-aws/whats-new/200 Disallow: /about-aws/whats-new/201 Disallow: /about-aws/whats-new/2020 Disallow: /about-aws/whats-new/2021 Disallow: /about-aws/whats-new/2022 Disallow: /about-aws/whats-new/2023 Disallow: /about-aws/whats-new/2024 # Block tag Disallow: /*/blogs/*/tag/ Disallow: /blogs/*/tag/ # Other Disallow: */confirmation/ Disallow: */registration-confirmation/ Disallow: /about-aws/launch-a-website-in-minutes-tutorial/ Disallow: /about-aws/media-coverage/2011/08/17/rhat-support-for-sap-solutions-running-on-rhel-on-amazon-ec2/ Disallow: /activate/accelerators Disallow: /activate/accelerators/* Disallow: /activate/accelerators/confirmation/ Disallow: /activate/china-portfolio-signup/ Disallow: /activate/cloudkata/ Disallow: /activate/event/ Disallow: /activate/event/*How we test this:
- We read robots.txt and check it doesn't disallow / for the agents that fetch for a user or find sites for AI search: ChatGPT-User, OAI-SearchBot, Claude-User, Claude-SearchBot, Perplexity-User, PerplexityBot (no robots.txt counts as allowed).
- We show blocks on GPTBot (OpenAI model training), not scored; ClaudeBot (Anthropic model training), not scored; Google-Extended (Gemini training and grounding), not scored in v1; CCBot (Common Crawl's open dataset), not scored: blocking them is the site's own call.
- Whether Google-Extended should be scored is a rubric v2 question, and we'll announce it before changing anything.
- Then we fetch your homepage as LeaderfileBot and check it returns 2xx after redirects, with no challenge page.
✓PassOur scanner gets inLG-FIND-01homepage: a real answer (200); docs page: a real answer (200)10 of 10 points
10 of 10 points · Gate, worth 10
- GEThttps://aws.amazon.com/ses/HTTP 200homepage: a real answer (200)
- GEThttps://docs.aws.amazon.com/ses/latest/dg/Welcome.htmlHTTP 200docs page: a real answer (200)
How we test this:
- We fetch your homepage and your docs page as LeaderfileBot, our own scanner, and check neither answers with a challenge page, or a 401 or 403 that a normal browser gets past.
- One blocked page is a fail; both caps your score at 39.
- Firewalls often let in crawlers they can verify, so ChatGPT or Claude may still get in where our scanner can't.
✓PassDocs pageAR-FIND-02docs page, linked from https://docs.aws.amazon.com/ses/latest/dg/send-email-api.html7 of 7 points · 15 of 15 pass
7 of 7 points · High, worth 7
- GEThttps://docs.aws.amazon.com/ses/latest/dg/Welcome.htmlHTTP 200docs page from our board config, linked from https://docs.aws.amazon.com/ses/latest/dg/send-email-api.html
How we test this:
- We look for your docs page: the first homepage link to a docs., dev. or developer(s). subdomain of your domain, or to a /docs or /developer(s) path; with none, we try https://docs.<host>/ then https://<host>/docs.
- It passes if that page returns 200.
- Board companies use a docs URL we confirmed by hand.
×Failllms.txt linked from your pagesLG-FIND-02Your pages don't point agents at your llms.txt0 of 7 points
Your pages don't point agents at your llms.txt. An agent mostly finds files by following links, so it may never try /llms.txt if your pages don't point to it.
0 of 7 points · High, worth 7
- GEThttps://aws.amazon.com/ses/HTTP 200homepage: no pointer to llms.txt
- GEThttps://docs.aws.amazon.com/ses/latest/dg/Welcome.htmlHTTP 200docs page: no pointer to llms.txt (it does point agents at: <link rel="alternate" type="text/markdown" to https://docs.aws.amazon.com/ses/latest/dg/Welcome.md>)
How we test this:
- We read your homepage and your docs page and look for a pointer to an llms.txt: a link to it, a <link> tag, a Link header with rel="llms-txt" or an X-Llms-Txt header, or a line on the page naming /llms.txt.
- It passes when one points at an llms.txt that answers with markdown links.
- AFDocs checks the same (llms-txt-directive).
✓PassSitemapAR-FIND-03sitemap listed in robots.txt, <sitemapindex> root2 of 2 points · 15 of 15 pass
2 of 2 points · Low, worth 2
- GEThttps://aws.amazon.com/sitemaps/index/HTTP 200sitemap listed in robots.txt, <sitemapindex> root
What our check kept, up to 60 lines or 6 KB
<?xml version="1.0" encoding="UTF-8"?> <sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <sitemap> <loc>https://aws.amazon.com/sitemaps/sitemap_marketing/</loc> <lastmod>2026-11-09T00:00:50Z</lastmod> </sitemap> <sitemap> <loc>https://aws.amazon.com/sitemaps/sitemap_blogs/index/</loc> <lastmod>2026-11-09T00:00:50Z</lastmod> </sitemap> <sitemap> <loc>https://aws.amazon.com/sitemaps/sitemap_germany/</loc> <lastmod>2026-11-09T00:00:50Z</lastmod> </sitemap> <sitemap> <loc>https://aws.amazon.com/sitemaps/sitemap_japan/</loc> <lastmod>2026-11-09T00:00:50Z</lastmod> </sitemap> <sitemap> <loc>https://aws.amazon.com/sitemaps/sitemap_taiwan/</loc> <lastmod>2026-11-09T00:00:50Z</lastmod> </sitemap> <sitemap> <loc>https://aws.amazon.com/sitemaps/sitemap_portugal/</loc> <lastmod>2026-11-09T00:00:50Z</lastmod> </sitemap> <sitemap> <loc>https://aws.amazon.com/sitemaps/sitemap_russia/</loc> <lastmod>2026-11-09T00:00:50Z</lastmod> </sitemap> <sitemap> <loc>https://aws.amazon.com/sitemaps/sitemap_vietnam/</loc> <lastmod>2026-11-09T00:00:50Z</lastmod> </sitemap> <sitemap> <loc>https://aws.amazon.com/sitemaps/sitemap_turkey/</loc> <lastmod>2026-11-09T00:00:50Z</lastmod> </sitemap> <sitemap> <loc>https://aws.amazon.com/sitemaps/sitemap_thailand/</loc> <lastmod>2026-11-09T00:00:50Z</lastmod> </sitemap> <sitemap> <loc>https://aws.amazon.com/sitemaps/sitemap_korea/</loc> <lastmod>2026-11-09T00:00:50Z</lastmod> </sitemap> <sitemap> <loc>https://aws.amazon.com/sitemaps/sitemap_france/</loc> <lastmod>2026-11-09T00:00:50Z</lastmod> </sitemap> <sitemap> <loc>https://aws.amazon.com/sitemaps/sitemap_china/</loc> <lastmod>2026-11-09T00:00:50Z</lastmod> </sitemap> <sitemap> <loc>https://aws.amazon.com/sitemaps/sitemap_spain/</loc> <lastmod>2026-11-09T00:00:50Z</lastmod> </sitemap> <sitemap> <loc>https://aws.amazon.com/sitemaps/sitemap_italy/</loc>How we test this:
- We fetch the Sitemap: URL from robots.txt, else /sitemap.xml, and check it returns 200 with a <urlset> or <sitemapindex> root element.
Read · 7 of 13 pass · 59.1 of 75 points
◐PartlyReadable without JavaScriptAR-READ-011 of the 8 pages we read is thin before JavaScript runs; the rest have real content8.8 of 10 points · 12 of 15 pass
1 of the 8 pages we read is thin before JavaScript runs; the rest have real content. An agent that doesn't run JavaScript may see an almost empty page where your content should be.
8.8 of 10 points · Gate, worth 10 · 88% credit
- GEThttps://aws.amazon.com/ses/HTTP 200homepage: 1104 words in the raw HTML
- GEThttps://docs.aws.amazon.com/ses/latest/dg/Welcome.htmlHTTP 200docs page: 612 words in the raw HTML
- GEThttps://aws.amazon.com/ses/getting-started/HTTP 200docs surface: 940 words in the raw HTML
- GEThttps://docs.aws.amazon.com/ses/latest/dg/agent-setup-guide.htmlHTTP 200docs surface: 835 words in the raw HTML
- GEThttps://docs.aws.amazon.com/index.htmlHTTP 200linked from the docs page: 4553 words in the raw HTML (redirected to https://docs.aws.amazon.com/)
- GEThttps://docs.aws.amazon.com/ses/index.htmlHTTP 200linked from the docs page: 258 words in the raw HTML (redirected to https://docs.aws.amazon.com/ses/)
- GEThttps://docs.aws.amazon.com/ses/latest/dg/send-email-smtp.htmlHTTP 200linked from the docs page: 743 words in the raw HTML
- GEThttps://docs.aws.amazon.com/ses/latest/APIReference-V2/HTTP 200linked from the docs page: 4 words in the raw HTML, a JavaScript shell
How we test this:
- We count the visible words in the raw HTML (no JavaScript run) of your homepage and your docs page, and check each has at least 150.
- With no docs page found (AR-FIND-02), the homepage is judged alone.
✓PassDocs readable without a loginLG-READ-01docs page: readable without a login; docs surface: readable without a login; linked from the docs page: readable without a login10 of 10 points
10 of 10 points · Gate, worth 10
- GEThttps://docs.aws.amazon.com/ses/latest/dg/Welcome.htmlHTTP 200docs page: readable without a login
- GEThttps://aws.amazon.com/ses/getting-started/HTTP 200docs surface: readable without a login
- GEThttps://docs.aws.amazon.com/ses/latest/dg/agent-setup-guide.htmlHTTP 200docs surface: readable without a login
- GEThttps://docs.aws.amazon.com/index.htmlHTTP 200linked from the docs page: readable without a login (redirected to https://docs.aws.amazon.com/)
- GEThttps://docs.aws.amazon.com/ses/index.htmlHTTP 200linked from the docs page: readable without a login (redirected to https://docs.aws.amazon.com/ses/)
- GEThttps://docs.aws.amazon.com/ses/latest/dg/send-email-smtp.htmlHTTP 200linked from the docs page: readable without a login
- GEThttps://docs.aws.amazon.com/ses/latest/APIReference-V2/HTTP 200linked from the docs page: readable without a login
How we test this:
- We read your docs page and up to 7 more docs pages (the ones we read for other checks, then links on your docs page).
- A page fails when it answers 401 or 403 to a normal browser too, redirects to a sign-in page, or is a sign-in form with little else on it.
- A redirect counts as a sign-in when it adds one: a sign-in path the page didn't have, a login subdomain, or an identity provider's site such as Okta's when the page was on another site.
- A sign-up page, one whose title or main heading says sign up or create an account, isn't a login.
- A refusal only to automated readers is our scanner being blocked, not a login.
- A login on your docs page caps your score at 39; across the pages, a share of 25% or less caps it at 39, 50% or less at 59.
✓PassReal 404sAR-READ-02returned 404 for a page that doesn't exist10 of 10 points · 15 of 15 pass
10 of 10 points · Must, worth 10
- GEThttps://aws.amazon.com/leaderfile-check-404HTTP 404returned 404 for a page that doesn't exist (redirected to https://aws.amazon.com/leaderfile-check-404/)
How we test this:
- We fetch /leaderfile-check-404, a page that shouldn't exist, and check it returns 404 or 410 after redirects.
- Off the board, if that address refuses automated readers, we try /leaderfile-check-404.html.
✓Passllms.txtAR-READ-07text file with markdown links7 of 7 points · 14 of 15 pass
7 of 7 points · High, worth 7
- GEThttps://aws.amazon.com/llms.txtHTTP 404returned 404
- GEThttps://docs.aws.amazon.com/llms.txtHTTP 200text file with markdown links
What our check kept, up to 60 lines or 6 KB
# Amazon Web Services (AWS) Documentation > This file provides structured access to AWS service documentation for large language models. Each section represents a service landing page with links to key documentation resources. ## Guides - [Amazon Linux 2 Release Notes](https://docs.aws.amazon.com/AL2/latest/relnotes/relnotes-al2.md): Find the release notes for Amazon Linux 2, which provide information about new features, updates, and fixes. [llms.txt](https://docs.aws.amazon.com/AL2/latest/relnotes/llms.txt) - [AWS Resource Groups Resource Groups API Reference](https://docs.aws.amazon.com/ARG/latest/APIReference/Welcome.md): AWS Resource Groups lets you organize AWS resources such as Amazon Elastic Compute Cloud instances, Amazon Relational Database Service databases, and Amazon Simple Storage Service buckets into groups using criteria that you define as tags. [llms.txt](https://docs.aws.amazon.com/ARG/latest/APIReference/llms.txt) - [AWS Resource Groups User Guide](https://docs.aws.amazon.com/ARG/latest/userguide/resource-groups.md): Learn about AWS Resource Groups and how resource groups can help you organize and manage your AWS resources. [llms.txt](https://docs.aws.amazon.com/ARG/latest/userguide/llms.txt) - [AWS CloudFormation API Reference](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/Welcome.md): AWS CloudFormation allows you to create and manage AWS infrastructure deployments predictably and repeatedly. [llms.txt](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/llms.txt) - [AWS CloudFormation Template Reference](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/introduction.md): Find reference information for the resource types, resource properties, resource attributes, intrinsic functions, and transforms that you can use in CloudFormation templates. [llms.txt](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/llms.txt) - [AWS CloudFormation User Guide](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.md): Use CloudFormation to model, provision, and manage AWS and third-party resources by treating infrastructure as code. [llms.txt](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/llms.txt) - [Amazon Elastic Compute Cloud API Reference](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Welcome.md): This is the Amazon EC2 API Reference. [llms.txt](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/llms.txt) - [Amazon Elastic Compute Cloud User Guide](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.md): Use Amazon EC2 for scalable computing capacity in the AWS Cloud so you can develop and deploy applications without hardware constraints. [llms.txt](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/llms.txt) - [Amazon Simple Queue Service API Reference](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/Welcome.md): Welcome to the Amazon SQS API Reference. [llms.txt](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/llms.txt) - [Amazon Simple Queue Service Developer Guide](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.md): Learn about the advantages of using Amazon SQS, such as reliability, scalability, and cost-effectiveness for decoupling application components. [llms.txt](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/llms.txt) - [Amazon CloudFront Developer Guide](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.md): Speed up distribution of your static and dynamic web content to end user with the Amazon CloudFront web service. [llms.txt](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/llms.txt) - [Amazon CloudWatch API Reference](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/Welcome.md): Amazon CloudWatch enables you to publish, monitor, and manage various metrics, as well as configure alarm actions based on data from metrics. [llms.txt](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/llms.txt) - [Amazon CloudWatch Command Line Reference](https://docs.aws.amazon.com/AmazonCloudWatch/latest/cli/Welcome.md): Lists the syntax and definitions of the Amazon CloudWatch command line interface (CLI) commands. [llms.txt](https://docs.aws.amazon.com/AmazonCloudWatch/latest/cli/llms.txt) - [Amazon CloudWatch Logs User Guide](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.md): Describes the fundamentals, concepts, and terminology you need to know for using CloudWatch Logs to monitor, store, and access log files from Amazon Elastic Compute Cloud and AWS CloudTrail. [llms.txt](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/llms.txt) - [Amazon CloudWatch User Guide](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.md): Monitor your AWS resources and applications using Amazon CloudWatch to collect and track metrics on performance. [llms.txt](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/llms.txt) - [Amazon CloudWatch Logs API Reference](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/Welcome.md): You can use Amazon CloudWatch Logs to monitor, store, and access your log files from EC2 instances, AWS CloudTrail, and other sources. [llms.txt](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/llms.txt) - [Amazon Elastic Container Registry API Reference](https://docs.aws.amazon.com/AmazonECR/latest/APIReference/Welcome.md): Amazon Elastic Container Registry (Amazon ECR) is a managed container image registry service. [llms.txt](https://docs.aws.amazon.com/AmazonECR/latest/APIReference/llms.txt) - [Amazon ECR Public User Guide](https://docs.aws.amazon.com/AmazonECR/latest/public/what-is-ecr.md): Amazon ECR is a managed AWS container image registry service. [llms.txt](https://docs.aws.amazon.com/AmazonECR/latest/public/llms.txt) - [Amazon ECR User Guide](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.md): Amazon ECR is an AWHow we test this:
- We read llms.txt at your site root and, if your docs live on another host, at your docs root, and check one returns 200, isn't HTML and has at least one markdown link.
- Off the board, we also try your docs. host and /docs/llms.txt.
- We read the first 2 MB: a larger file is judged on that part, and the result says "read the first 2 MB; the file is larger".
×Failllms.txt links work, and it fitsLG-READ-02Your llms.txt has broken links, or it's too long for an agent to read0 of 7 points
Your llms.txt has broken links, or it's too long for an agent to read. An agent trusts the links in your llms.txt; a broken one sends it to a dead end, and a file past its context gets cut off.
0 of 7 points · High, worth 7
- GEThttps://docs.aws.amazon.com/llms.txtHTTP 200411,658 characters, 2234 links; too long for an agent to read whole, so we didn't open the links
How we test this:
- We read the llms.txt AR-READ-07 passes on (the first with markdown links) and fetch up to 12 of its links, spread through the file, two at a time.
- A link is broken when it answers 404 or 410, or its host doesn't exist.
- A 2xx after redirects resolves, and so does an answer like 400, 405 or 406 that shows the address is there (an MCP endpoint answers a plain GET with 405).
- A refusal, a 429 or a server error isn't judged.
- The credit is the share that resolve, halved when the file runs to 50,000 characters or more, and nothing past 100,000: AFDocs' size bands.
- With no llms.txt it isn't counted: AR-READ-07 counts that.
◐PartlyDocs pages fit an agent's contextLG-READ-04Some of your docs pages are too long for an agent to read whole6.5 of 7 points
Some of your docs pages are too long for an agent to read whole. An agent cuts off a page past its limit, so the part it needed may never reach it.
6.5 of 7 points · High, worth 7 · 93% credit
- GEThttps://docs.aws.amazon.com/ses/latest/dg/Welcome.htmlHTTP 200docs page: 3,780 characters of text
- GEThttps://aws.amazon.com/ses/getting-started/HTTP 200docs surface: 6,424 characters of text
- GEThttps://docs.aws.amazon.com/ses/latest/dg/agent-setup-guide.htmlHTTP 200docs surface: 5,408 characters of text
- GEThttps://docs.aws.amazon.com/index.htmlHTTP 200linked from the docs page: 31,953 characters of text, 56,116 in its Markdown copy, long (redirected to https://docs.aws.amazon.com/)
- GEThttps://docs.aws.amazon.com/ses/index.htmlHTTP 200linked from the docs page: 1,608 characters of text (redirected to https://docs.aws.amazon.com/ses/)
- GEThttps://docs.aws.amazon.com/ses/latest/dg/send-email-smtp.htmlHTTP 200linked from the docs page: 4,506 characters of text
- GEThttps://docs.aws.amazon.com/ses/latest/APIReference-V2/HTTP 200linked from the docs page: 27 characters of text
How we test this:
- On each docs page we read (up to 7) we count the characters of visible text in the raw HTML, and of its Markdown copy if it has one, and judge the page by the larger of the two: an agent reading either may be cut off.
- Under 50,000 passes, up to 100,000 is half, more fails: AFDocs' bands, from the limits agents cut pages at.
- The credit is the average across the pages.
✓PassMeta descriptionAR-READ-03has a meta description4 of 4 points · 15 of 15 pass
4 of 4 points · Medium, worth 4
- GEThttps://aws.amazon.com/ses/HTTP 200has a meta description
What our check kept, up to 60 lines or 6 KB
<meta name="description" content="Amazon Simple Email Service (SES) is a cost-effective, flexible, and scalable email service provider that allows developers to send email from within any application.">How we test this:
- We check your homepage's raw HTML (no JavaScript run) has a non-empty meta description or og:description.
✓PassStructured docs pageAR-READ-044 headings (h1 to h3), 612 words in the raw HTML4 of 4 points · 13 of 15 pass
4 of 4 points · Medium, worth 4
- GEThttps://docs.aws.amazon.com/ses/latest/dg/Welcome.htmlHTTP 2004 headings (h1 to h3), 612 words in the raw HTML
What our check kept, up to 60 lines or 6 KB
<h1>What is Amazon SES?</h1> <h2>Benefits</h2> <h2>Related services</h2> <h2>Pricing</h2>How we test this:
- We check your docs page's raw HTML (no JavaScript run) has at least 2 headings (h1 to h3) with text and at least 150 visible words.
- Off the board, a docs page that comes back as markdown counts # to ### lines outside code blocks as its headings.
×FailCode samples say their languageAR-READ-05Your code samples don't say which language they're in0 of 4 points · 13 of 15 pass
Your code samples don't say which language they're in. An agent may not tell which language a code sample is in, and may mix up samples meant for different languages.
0 of 4 points · Medium, worth 4
- GEThttps://docs.aws.amazon.com/llms.txtHTTP 200llms.txt: no code block with a language tag
- GEThttps://docs.aws.amazon.com/ses/latest/dg/Welcome.htmlHTTP 200docs page: no code block with a language tag
- GEThttps://aws.amazon.com/ses/getting-started/HTTP 200quickstart page: no code block with a language tag
- GEThttps://docs.aws.amazon.com/ses/latest/dg/agent-setup-guide.htmlHTTP 200MCP page: no code block with a language tag
How we test this:
- On your docs surface, we look for a code block that carries a language tag: language-* or lang-* on <pre> or <code>, code-language-* on any element (a code block's wrapper, say), or a data-language or data-lang attribute.
- In markdown files, a fenced block with a language (```ts) counts.
- If no page shows one, we read the markdown copy each HTML page declares (a <link rel="alternate" type="text/markdown">, or its URL plus .md listed in your llms.txt), since many docs sites add the language label with JavaScript.
- If none of the pages we read is a quickstart or SDK page, a miss isn't counted: it can't fail you or withhold your score.
✓PassReadable pricingAR-READ-11raw text shows "$0.16" next to a month or year4 of 4 points · 15 of 15 pass
4 of 4 points · Medium, worth 4
- GEThttps://aws.amazon.com/ses/pricing/HTTP 200from our board config, linked from https://aws.amazon.com/ses/; raw text shows "$0.16" with a period
What our check kept, up to 60 lines or 6 KB
ee pricing plans to choose from, each designed to match your email needs at every stage of growth. Essentials Pro Enterprise 0 – 10M emails 1 / month $0.16 per 1,000 emails 2 $0.22 per 1,000 emails $0.23 per 1,000 emails 10 – 100M emails / month $0.14 per 1,000 emails $0.17 per 1,000 emails $0.18 per 1,0How we test this:
- We fetch the first homepage link with 'pricing' in its path, else /pricing (board companies: a pricing URL we confirmed by hand), and check it returns 200 and its raw text (no JavaScript run) shows a price or 'free' within 80 characters of month, mo, year or yr.
- Off the board, a pricing address that answers with JSON counts when it has a price field.
◐PartlyDocs in MarkdownLG-READ-03Agents get your docs as HTML only, not as Markdown2.9 of 4 points
Agents get your docs as HTML only, not as Markdown. An agent reading HTML spends its context on menus and markup, and may cut the page off before it reaches the part it needs.
2.9 of 4 points · Medium, worth 4 · 71% credit
- GEThttps://docs.aws.amazon.com/ses/latest/dg/Welcome.htmlHTTP 200docs page: answers Accept: text/markdown
- GEThttps://aws.amazon.com/ses/getting-started/HTTP 200docs surface: HTML only
- GEThttps://docs.aws.amazon.com/ses/latest/dg/agent-setup-guide.htmlHTTP 200docs surface: answers Accept: text/markdown
- GEThttps://docs.aws.amazon.com/index.htmlHTTP 200linked from the docs page: declares a Markdown copy at https://docs.aws.amazon.com/index.md (redirected to https://docs.aws.amazon.com/)
- GEThttps://docs.aws.amazon.com/ses/index.htmlHTTP 200linked from the docs page: answers Accept: text/markdown (redirected to https://docs.aws.amazon.com/ses/)
- GEThttps://docs.aws.amazon.com/ses/latest/dg/send-email-smtp.htmlHTTP 200linked from the docs page: answers Accept: text/markdown
- GEThttps://docs.aws.amazon.com/ses/latest/APIReference-V2/HTTP 200linked from the docs page: HTML only
What our check kept, up to 60 lines or 6 KB
# What is Amazon SES? <a name="Welcome"></a> [Amazon Simple Email Service (SES)](https://aws.amazon.com/ses) is an email platform that provides an easy, cost-effective way for you to send and receive email using your own email addresses and domains. For example, you can send marketing emails such as special offers, transactional emails such as order confirmations, and other types of correspondence such as newsletters. When you use Amazon SES to receive mail, you can develop software solutions such as email autoresponders, email unsubscribe systems, and applications that generate customer support tickets from incoming emails. For more information about topics related to Amazon SES, see the [AWS Messaging and Targeting Blog](https://aws.amazon.com//blogs/messaging-and-targeting/). ## Benefits <a name="why-use-ses"></a> Building a large-scale email solution is often a complex and costly challenge for a business. You must deal with infrastructure challenges such as email server management, network configuration, and IP address reputation. Additionally, many third-party email solutions require contract and price negotiations, as well as significant up-front costs. Amazon SES eliminates these challenges and enables you to benefit from the years of experience and sophisticated email infrastructure Amazon.com has built to serve its own large-scale customer base. ## Related services <a name="ses-and-aws"></a> Amazon SES integrates seamlessly with other AWS products. For example, you can: + Add email-sending capabilities to any application. + You can send email from Amazon EC2 by using an [AWS SDK](https://aws.amazon.com/tools/#sdk), by using the [Amazon SES SMTP interface](send-email-smtp.md), or by making calls directly to the [Amazon SES API](https://docs.aws.amazon.com/ses/latest/APIReference-V2/). + Use [AWS Elastic Beanstalk](https://aws.amazon.com/elasticbeanstalk/) to create an email-enabled application such as a program that uses Amazon SES to send a newsletter to customers. + Set up [Amazon Simple Notification Service (Amazon SNS)](https://aws.amazon.com/sns/) to notify you of your emails that bounced, produced a complaint, or were successfully delivered to the recipient's mail server. When you use Amazon SES to receive emails, your email content can be published to Amazon SNS topics. + Use the AWS Management Console to set up Easy DKIM, which is a way to authenticate your emails. Although you can use Easy DKIM with any DNS provider, it is especially easy to set up when you manage your domain with [Route 53](https://aws.amazon.com/route53/). + Control user access to your email sending by using [AWS Identity and Access Management (IAM)](https://aws.amazon.com/iam/). + Store emails you receive in [Amazon Simple Storage Service (Amazon S3)](https://aws.amazon.com/s3/). + Take action on your received emails by triggering [AWS Lambda](https://aws.amazon.com/lambda/) functions. + Use [AWS Key Management Service (AWS KMS)](https://aws.amazon.com/kms/) to optionally encrypt the mail you receive in your Amazon S3 bucket. + Use [AWS CloudTrail](https://aws.amazon.com/cloudtrail/) to log Amazon SES API calls that you make using the console or the Amazon SES API. + Publish your email sending events to [Amazon CloudWatch](https://aws.amazon.com/cloudwatch/) or [Amazon Data Firehose](https://aws.amazon.com/firehose/). If you publish your email sending events to Firehose, you can access them in [Amazon Redshift](https://aws.amazon.com/redshift/), [Amazon OpenSearch Service](https://aws.amazon.com/elasticsearch-service/), or [Amazon S3](https://aws.amazon.com/s3/). ## Pricing <a name="ses-pricing"></a> With Amazon SES, you pay based on the volume of emails sent and received. For more information, see [Amazon SES pricing](https://aws.amazon.com/ses/pricing/).How we test this:
- On each docs page we read (up to 7), one Markdown answer with content passes the page: it answers Accept: text/markdown with text/markdown, declares a copy with <link rel="alternate" type="text/markdown"> that returns Markdown, or the address the page lands on, after redirects, ending in .md does (for one ending in a slash, both /page.md and /page/index.md).
- An empty answer doesn't count.
- The credit is the share of pages that pass.
- AFDocs, Cloudflare's isitagentready and is-agentic check it.
✓PassStructured dataAR-READ-08has an application/ld+json block2 of 2 points · 13 of 15 pass
2 of 2 points · Low, worth 2
- GEThttps://aws.amazon.com/ses/HTTP 200has an application/ld+json block
What our check kept, up to 60 lines or 6 KB
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@id":"/products/","name":"Products"}},{"@type":"ListItem","position":2,"item":{"@id":"/business-applications/","name":"Business Applications"}},{"@type":"ListItem","position":3,"item":{"@id":"/s/idc-server-side-test/awswt-989--ses-ux-aeo/ses-control/","name":"Amazon Simple Email Service"}}]}How we test this:
- We check your homepage's raw HTML has an application/ld+json block that parses as JSON and has @type or @context.
×FailMachine-readable discovery fileAR-READ-06No .well-known file tells agents how your API or sign-in works0 of 2 points · 8 of 15 pass
No .well-known file tells agents how your API or sign-in works. An agent may have to guess how sign-in or your API works instead of reading it from a standard file.
0 of 2 points · Low, worth 2
- GEThttps://aws.amazon.com/.well-known/oauth-authorization-serverHTTP 404returned 404
- GEThttps://aws.amazon.com/.well-known/oauth-protected-resourceHTTP 404returned 404
- GEThttps://aws.amazon.com/.well-known/openid-configurationHTTP 404returned 404
- GEThttps://aws.amazon.com/.well-known/api-catalogHTTP 404returned 404
- GEThttps://aws.amazon.com/.well-known/agent-card.jsonHTTP 404returned 404
How we test this:
- We fetch five standard .well-known files and check at least one returns 200 with valid JSON: oauth-authorization-server (RFC 8414), oauth-protected-resource (RFC 9728), openid-configuration, api-catalog (RFC 9727) and agent-card.json (A2A).
- This list is ours: AgentReady v2.0 doesn't name one.
- Off the board, on a miss, we also read oauth-protected-resource on the mcp., api. and docs. hosts of your domain, where that metadata usually lives, and it counts only with its resource field.
Act · 4 of 9 pass · 20 of 44 points
✓PassMCP server or CLIAR-ACT-10CLI page: CLI command "aws sesv2 create-email-template"10 of 10 points · 12 of 15 pass
10 of 10 points · Must, worth 10
- GEThttps://docs.aws.amazon.com/ses/latest/dg/send-personalized-email-api.htmlHTTP 200CLI page: CLI command "aws sesv2 create-email-template"
What our check kept, up to 60 lines or 6 KB
he file as mytemplate.json . At the command line, type the following command to create a new template using the CreateEmailTemplate v2 API operation: aws sesv2 create-email-template --cli-input-json file:// mytemplate.json Part 3: Sending the personalized email You can use the following two SES v2 API operations to send emails usHow we test this:
- Passes when AR-ACT-03 passes (your docs surface names your own MCP server, not just a mention or a blog post about one; on the board, only an MCP server with a tool that acts on the product: send, manage or query, not only search docs, since AgentReady calls this "the interface an agent acts through"), or when your docs surface shows a CLI install: brew install, npm i -g, npm install -g, pipx install, uv tool install, go install, az extension add, or curl ... | sh (or | bash).
- A mention of MCP that isn't your own server, with no CLI install, isn't counted.
- For board companies, the CLI half counts only a command of the product's own CLI that we confirmed by hand, like az communication email send or twilio email:send, on the pages we read or on the docs page that shows it: an install alone could be any tool (an MCP setup guide installing pnpm, say).
- For a product inside a larger platform, the platform's MCP server or CLI counts when its docs show it covers the product.
- An MCP server earns both this check and AR-ACT-03, because AgentReady lists them as two items.
- If none of the pages we read is a quickstart or SDK page, a miss isn't counted: it can't fail you or withhold your score.
×FailOpenAPI specAR-ACT-02No OpenAPI spec for agents to read your API from0 of 7 points · 11 of 15 pass
No OpenAPI spec for agents to read your API from. An agent may have to guess your endpoints and parameters from prose instead of reading them from a spec.
0 of 7 points · High, worth 7
- GEThttps://aws.amazon.com/openapi.jsonHTTP 404tried /openapi.json on aws.amazon.com; returned 404 (redirected to https://aws.amazon.com/openapi.json/)
- GEThttps://aws.amazon.com/openapi.yamlHTTP 404tried /openapi.yaml on aws.amazon.com; returned 404 (redirected to https://aws.amazon.com/openapi.yaml/)
- GEThttps://docs.aws.amazon.com/openapi.jsonHTTP 404tried /openapi.json on docs.aws.amazon.com; returned 404
- GEThttps://docs.aws.amazon.com/openapi.yamlHTTP 404tried /openapi.yaml on docs.aws.amazon.com; returned 404
How we test this:
- We look for an OpenAPI or Swagger document: for board companies, a URL we confirmed by hand; then up to 2 links on your docs surface whose URL mentions openapi or swagger, or whose link text does for a .json or .yaml file (files on other sites count when your docs link them; an address written out in your llms.txt or another text file counts as a link, and its line as the link text); then /openapi.json and /openapi.yaml on your host and your docs host.
- Off the board, a .json or .yaml link under an llms.txt heading that names OpenAPI counts as a link to a spec, or, where that section has none, a link with no file extension, and on a miss we also try those two on the docs., developers. and api. hosts of your domain.
- It passes if one parses as JSON or YAML with an openapi or swagger key and at least one path.
- A spec over 10 MB counts as couldn't check.
×Failnpm and PyPI packagesAR-ACT-06We didn't find an npm or a pip install on the 4 pages we read0 of 7 points · 11 of 15 pass
We didn't find an npm or a pip install on the 4 pages we read. An agent may not find a package to install in JavaScript or Python, and may write raw HTTP calls instead.
0 of 7 points · High, worth 7
- GEThttps://docs.aws.amazon.com/llms.txtHTTP 200llms.txt: no npm install, no pip install
- GEThttps://docs.aws.amazon.com/ses/latest/dg/Welcome.htmlHTTP 200docs page: no npm install, no pip install
- GEThttps://aws.amazon.com/ses/getting-started/HTTP 200quickstart page: no npm install, no pip install
- GEThttps://docs.aws.amazon.com/ses/latest/dg/agent-setup-guide.htmlHTTP 200MCP page: no npm install, no pip install
How we test this:
- On your docs surface we look for an npm install (npm, yarn, pnpm or bun) and a pip install (pip, poetry or uv) of a named package.
- Both must appear, on any of the pages (AgentReady: npm and PyPI).
- Off the board, uv tool install and pipx install also count as a pip install.
- Off the board, if one is missing we also read the markdown copy each HTML page declares (a <link rel="alternate" type="text/markdown">, or its URL plus .md listed in your llms.txt), then up to 2 pages your llms.txt names for that language.
- AgentReady v2.0 asks for SDKs and a CLI here; this check tests the npm and PyPI half, and a CLI counts under AR-ACT-10.
- If none of the pages we read is a quickstart or SDK page, a miss isn't counted: it can't fail you or withhold your score.
–Not countedAuth an agent can follow (proxy)AR-ACT-01our stand-in can't judge signed or body-key auth (requests are signed)
Not in the score · Medium, worth 4
- GEThttps://docs.aws.amazon.com/ses/latest/APIReference/CommonParameters.htmlno answernot counted: our stand-in can't judge signed or body-key auth (requests are signed)
How we test this:
- A stand-in: AgentReady asks for self-serve key generation with documented scopes, or OAuth metadata, and key sign-up can't be tested in code.
- It passes if OAuth metadata parses as JSON with the field its RFC requires (issuer for RFC 8414, resource for RFC 9728), or if your docs say "API key" or "API token" (also inside a placeholder like YOUR_API_KEY) within 200 characters of a documented auth header: an X-...-Key or X-...-Token header, a header named ...-Key or ...-Token, Authorization with Bearer, or "Bearer API key".
- The word "token" on its own doesn't count.
- For board companies we also read the authentication page their docs link.
- Off the board, OAuth metadata with its resource field on your mcp., api. or docs. host also counts.
- A board company whose API signs each request (like AWS Signature Version 4) or takes the key in the request body isn't counted: this stand-in can't judge that kind of auth either way.
- If none of the pages we read is a quickstart or SDK page, a miss isn't counted: it can't fail you or withhold your score.
–Not countedEvery operation has an operationIdLG-ACT-01no OpenAPI spec to read
Not in the score · Medium, worth 4
- GEThttps://aws.amazon.com/ses/no answernot counted: no OpenAPI spec to read
How we test this:
- In the OpenAPI spec AR-ACT-02 finds, we count the operations with a non-empty operationId.
- The credit is the share that have one.
- With no spec, it isn't counted: AR-ACT-02 already counts that.
✓PassMCP serverAR-ACT-03MCP page: mentions an MCP server; it doesn't name the tools4 of 4 points · 14 of 15 pass
4 of 4 points · Medium, worth 4
- GEThttps://docs.aws.amazon.com/ses/latest/dg/agent-setup-guide.htmlHTTP 200MCP page: mentions an MCP server; it doesn't name the tools
What our check kept, up to 60 lines or 6 KB
p an AI coding agent for Amazon SES Amazon SES publishes the amazon-ses skill to help AI coding agents set up and troubleshoot email sending. The AWS MCP Server can provide the current skill when your request needs it. The current amazon-ses skill does not include Mail Manager or email receiving. Topics BeforHow we test this:
- On your docs surface we look for your own MCP server and quote the line: your name next to "MCP" ("Acme MCP server"), "our" or "official" MCP server, or an mcp.<your domain> address.
- Any other mention of "MCP server" or "Model Context Protocol", like a directory or an explainer, isn't counted: it can't fail you and it earns no points, because we can't tell the server is yours.
- A mention in a link to a blog post, or on an llms.txt line that links to one, doesn't count at all: a post about building a server isn't one you ship.
- For board companies we read the MCP page their docs link and list the tools it documents: a server that only searches your docs counts here, as AgentReady describes an MCP server as a "standard tool protocol for docs search and actions".
- We don't probe /mcp or call any server.
- Off the board, OAuth metadata with its resource field on your mcp. host also counts: it's the server's own file.
- If none of the pages we read is a quickstart or SDK page, a miss isn't counted: it can't fail you or withhold your score.
–Not countedErrors have a schemaLG-ACT-02no OpenAPI spec to read
Not in the score · Medium, worth 4
- GEThttps://aws.amazon.com/ses/no answernot counted: no OpenAPI spec to read
How we test this:
- In the OpenAPI spec AR-ACT-02 finds, we count the operations that declare a 4xx, 5xx or default response with a schema, directly or through a $ref.
- The credit is the share that do.
- We note when they use application/problem+json (RFC 9457), the standard shape.
- With no spec, it isn't counted.
- The IETF's draft agent-friendly API profile, is-agentic and Alpic check it.
×FailTools for browser agentsAR-ACT-07We didn't find tools for browser agents in your homepage's HTML or inline scripts0 of 2 points · 0 of 15 pass
We didn't find tools for browser agents in your homepage's HTML or inline scripts. It costs a point, but it's only worth building if agents need to operate forms on your site. If they do, a browser agent may find no tools to call and have to click through instead.
0 of 2 points · Low, worth 2
- GEThttps://aws.amazon.com/ses/HTTP 200no modelContext in the raw HTML or inline scripts
How we test this:
- We check your homepage's raw HTML, inline scripts included, contains modelContext (AgentReady names document.modelContext).
- External scripts aren't fetched.
✓PassAn agent skill is publishedLG-ACT-03MCP page: a skills install, "/plugin install aws-core@claude-plugins-official"2 of 2 points
2 of 2 points · Low, worth 2
- GEThttps://docs.aws.amazon.com/ses/latest/dg/agent-setup-guide.htmlHTTP 200MCP page: a skills install, "/plugin install aws-core@claude-plugins-official"
What our check kept, up to 60 lines or 6 KB
/plugin install aws-core@claude-plugins-officialHow we test this:
- Any of three passes: /.well-known/agent-skills/index.json on your site or your docs (or one a Link header names) lists a skill whose file answers; your docs or llms.txt link a SKILL.md that answers with a name and a description; or your docs show a skills install command, on a page we read or on up to 3 pages your docs or llms.txt link about skills or your CLI.
- An install is npx skills add, claude plugin install, a git clone into a skills folder, or your own command line running plugin install or skills add right after the word skill.
- An index under a folder, like /developer/, may list its files from that folder.
- Cloudflare's isitagentready, agenticplug and Alpic check it.
–Not countedSign-in an MCP client can useLG-ACT-04no OAuth sign-in found to judge
Not in the score · Low, worth 2
- GEThttps://aws.amazon.com/.well-known/oauth-authorization-serverno answernot counted: no OAuth sign-in found to judge
How we test this:
- We look for OAuth authorization server metadata (RFC 8414): at /.well-known/oauth-authorization-server on your site, through the authorization_servers your protected-resource metadata (RFC 9728) names, and on your mcp. host.
- It passes when it lists S256 in code_challenge_methods_supported, has scopes_supported, and has a registration_endpoint or client_id_metadata_document_supported, as the MCP authorization spec asks.
- With no OAuth metadata, it isn't counted.
×FailInstall shown for four languagesEM-01We didn't find an install for TypeScript/JavaScript, Python, Go and Java on the 4 pages we read0 of 4 points · 6 of 15 pass
We didn't find an install for TypeScript/JavaScript, Python, Go and Java on the 4 pages we read. An agent working in one of these languages may not find how to install your library in it.
0 of 4 points · Medium, worth 4
- GEThttps://docs.aws.amazon.com/llms.txtHTTP 200llms.txt: no install shown for TypeScript/JavaScript, Python, Go, Java
- GEThttps://docs.aws.amazon.com/ses/latest/dg/Welcome.htmlHTTP 200docs page: no install shown for TypeScript/JavaScript, Python, Go, Java
- GEThttps://aws.amazon.com/ses/getting-started/HTTP 200quickstart page: no install shown for TypeScript/JavaScript, Python, Go, Java
- GEThttps://docs.aws.amazon.com/ses/latest/dg/agent-setup-guide.htmlHTTP 200MCP page: no install shown for TypeScript/JavaScript, Python, Go, Java
How we test this:
- On your docs surface we look for an install in each of four languages: TypeScript/JavaScript (npm, yarn, pnpm or bun), Python (pip, poetry or uv), Go (go get) and Java (a Maven <artifactId> or a Gradle implementation line).
- All four must appear.
- This shows how to install, not that a package is official.
- If none of the pages we read is a quickstart or SDK page, a miss isn't counted: it can't fail you or withhold your score.
- Ours, not AgentReady's.
×FailSend operation in the specEM-02We didn't find an OpenAPI spec, so we couldn't look for a send operation in one0 of 4 points · 11 of 15 pass
We didn't find an OpenAPI spec, so we couldn't look for a send operation in one. An agent may not find the endpoint that sends an email in your spec, and may guess it.
0 of 4 points · Medium, worth 4
- GEThttps://aws.amazon.com/ses/no answerno OpenAPI spec found (AR-ACT-02)
How we test this:
- In the OpenAPI spec AR-ACT-02 found, we look for a POST operation on a path containing mail, email, message or send.
- No spec counts as a fail.
- Ours, not AgentReady's.
✓PassFree tier in emailsEM-03free tier: "10M emails per month"4 of 4 points · 13 of 15 pass
4 of 4 points · Medium, worth 4
- GEThttps://aws.amazon.com/ses/pricing/HTTP 200from our board config, linked from https://aws.amazon.com/ses/; free tier: "10M emails per month"
What our check kept, up to 60 lines or 6 KB
24.95 x 256 = $6,387.20 per month. Virtual Deliverability Manager – SES deliverability Per-email fee + query fee Per email fee: $0.07/1,000 emails (0–10M emails per month), $0.05/1,000 emails (10–100M emails per month), $0.02/1,000 emails (>100M emails per month). Queries: $0.0005/1,000 queries (first 5K queries/monthHow we test this:
- On the pricing page AR-READ-11 reads, we look for "free" within 300 characters of a number followed by emails, messages or sends and a period (a month, a day, or 30 days), like "3,000 emails/month" or "4,000 sends in any rolling 30-day window", in the raw text (no JavaScript run).
- A one-time allowance with no period doesn't count.
- Ours, not AgentReady's.
How we check: every check, its points and the thresholds, from the same code that runs the scan.
Something wrong? Report it to rahulu626@gmail.com
4Your next stepsPart 4 of 4
Your next steps
- 1Pick your fixes
- 2Hand them off
- 3Rescan once it's live
- 4Stay ahead of your category
- Then back to 1 when a rival passes you
Pick your fixes
Usually the founder or DevRel lead
3 fixes take Amazon SES from 70 to 80, 14th of 15 email APIs, past Azure Communication Services Email.
Nothing copied yet from this browser.
Hand them off
To whoever ships it
Fix with AI writes each fix for whoever ships it: your coding agent, an engineer, product or marketing. Open it in Cursor, as a GitHub issue or in Linear, or copy it. Nothing runs until you send it.
Rescan once it's live
Usually the engineer, after the deploy
A rescan reads Amazon SES again and shows what now passes, the new score and who you passed.
Last scan: 70 on 9 Nov, 15th of 15 email APIs.
Weekly, for 4 weeks. A calendar file: no email from us.Bookmark this page: it opens on our 9 Nov 2026 scan, with a live scan one press away.Stay ahead of your category
DevRel, the founder
Rivals ship too. Watch Amazon SES with Azure Communication Services Email and MailerSend, the nearest on the board: home keeps all three, and Rescan all there shows who moved.
Track it weekly, or scan from your terminal
Scan from your terminal
npx legible-cli amazon-ses
Add it for your coding agent
Adds a skill to your project. Ask your agent to use it, and it scans your live site, reads the real file behind each gap and helps write your own. It only publishes if you ask.
npx legible-cli skill
If Windows PowerShell blocks npx, type npx.cmd instead.
Get warned if this slips
A GitHub Action that runs in your own repo, once a week. It fails, naming the check, if something this site passes today stops passing. Each alert links back to the result. Add a Slack webhook as a repo secret named SLACK_WEBHOOK_URL, and a change also posts to your channel; nothing else is sent to us. Anything we can't be sure of only warns. GitHub notifies whoever created the job, depending on their settings. In a public repo, it turns scheduled jobs off after 60 days with no activity.
.github/workflows/legible.yml
11 fixes · copy, or open in Cursor, GitHub, Linear