Legible
Scan APIChrome extension

Mailjet

mailjet.com

Score 88 out of 100

An AI agent's path through Mailjet

  1. FindCan an agent get in and find what it needs?100/100

    5 of 5 pass

  2. ReadCan it read what it finds?85/100

    9 of 13 pass · 4 gaps

  3. ActCan it do something with your product?Weakest step82/100

    8 of 11 pass · 3 gaps

GoalAn agent uses Mailjet

Wider segments are worth more points. The overall adds up every check's points, so it isn't the average of the three parts. 2 checks don't count here: see why.

Easy to find, fairly easy to read, easy to use.

Mailjet passes every Find check, 9 of 13 Read checks and 8 of 11 Act checks. The weakest step is Read.

Rank
joint 9th of 15 Email APIsOn our 9 Nov 2026 scan
Checks passed
22 of 30 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

Scored on 29 of 30 checks: 1 check couldn't be checked.

1 check doesn't count here:

  • 1 is about an MCP server whose tools we haven't confirmed yet.

What to fixPart 1 of 4

Some files refused our scanner

  • 1 check: blocks automated readers

Blocked for everyone counts as a fail. Blocking automated readers shows as couldn't check and isn't scored, except on the homepage: an agent turned away there can't read the site, so that check fails either way.

When a file refuses our scanner, we ask once more as a normal browser, only to tell ‘blocked for everyone’ from ‘blocks automated readers’.

6 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 checks22 pass · 7 fail

FailRead stepFix 1 of 6+3.5 pointsEffort: minutes, our estimate

Fix 1: Your llms.txt has broken links, or it's too long for an agent to read

Do this: Make every link in your llms.txt return 200: fix or drop the broken ones. Keep the file under 50,000 characters; if it's longer, make it a short index that links to an llms.txt for each section.

llms.txt links work, and it fits: every link in your llms.txt works, and the file is short enough for an agent to read whole.

FailWhat we read on Mailjet (1)

PassFrom Mailtrap, on our email API board, as of 9 Nov 2026

Why it might matter

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.

Our call · Worth doing.

A broken link in your llms.txt sends an agent to a dead end it trusted.

Our judgement.

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.
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

mailjet.com

  • /robots.txt200 OKAI agents allowed, homepage reachable: also read here
  • /200 OKOur scanner gets in: also read hereMeta description: PassStructured data: PassTools for browser agents: Fail
  • /leaderfile-check-404404 · expected, it's a probeReal 404s: Pass
  • /llms.txt404 not foundllms.txt: also read here
  • /.well-known/oauth-authorization-server200 OKMachine-readable discovery file: also read hereAuth an agent can follow (proxy): PassSign-in an MCP client can use: Pass
  • /.well-known/oauth-protected-resource200 OKMachine-readable discovery file: also read here
  • /.well-known/openid-configuration404 not foundMachine-readable discovery file: also read here
  • /.well-known/api-catalog404 not foundMachine-readable discovery file: also read here
  • /.well-known/agent-card.json404 not foundMachine-readable discovery file: also read here
  • /.well-known/agent-skills/index.json404 not found

dev.mailjet.com

  • /robots.txt200 OKAI agents allowed, homepage reachable: also read here
  • /200 OKOur scanner gets in: also read hereDocs page: Passllms.txt linked from your pages: also read hereDocs readable without a login: also read hereDocs pages fit an agent's context: also read here
  • /llms.txt200 OKllms.txt linked from your pages: also read herellms.txt: also read here
  • /docs/email-api200 OKDocs readable without a login: also read hereDocs pages fit an agent's context: also read here
  • /docs/content-api200 OKDocs readable without a login: also read hereDocs pages fit an agent's context: also read here
  • /docs/email-api/template_language/template_lang_overview200 OKDocs readable without a login: also read hereDocs pages fit an agent's context: also read here
  • /docs/api-reference200 OKDocs readable without a login: also read hereDocs pages fit an agent's context: also read here
  • /docs/smtp-relay200 OKDocs readable without a login: also read hereDocs pages fit an agent's context: also read here
  • /docs/email-api/email-api-overview/about-mailjet-api200 OKDocs readable without a login: also read hereDocs pages fit an agent's context: also read here
  • /docs/email-api/getting-started/send-first-email.md200 OKCode samples say their language: Pass
  • /_bundle/openapi/openapi-mailjet.yaml200 OKOpenAPI spec: PassEvery operation has an operationId: PassSend operation in the spec: Pass
  • /docs/email-api/developer-tools/nodejs.md200 OKnpm and PyPI packages: also read hereInstall shown for four languages: also read here
  • /docs/email-api/developer-tools/python.md200 OKnpm and PyPI packages: also read hereInstall shown for four languages: also read here
  • /docs/email-api/developer-tools/go.md200 OKInstall shown for four languages: also read here
  • /docs/email-api/developer-tools/java.md200 OKInstall shown for four languages: also read here

www.mailjet.com

  • /sitemap_index.xml200 OKSitemap: Pass
  • /pricing/200 OKReadable pricing: PassFree tier in emails: Pass

documentation.mailjet.com

  • /hc/en-us/articles/42810091203867-Installing-the-Mailjet-MCP-Serverno answerMCP server or CLI: Not countedMCP server: Couldn't check

6 checks in red are your fixes. Select one to open it.MCP server or CLI weren't counted.

Want a hand fixing this?

Leave your email and we'll reply about the gaps on mailjet.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

How it comparesPart 2 of 4

How Mailjet compares

Score after each fix

Mailtrap, the leader, at 99
  1. Nowscore 88rank =9
  2. +1 fixscore 90rank =8level with Mailgun
  3. +2 fixesscore 91rank 8past Mailgun
  4. +3 fixesscore 93rank 6past Loops and SendGrid

One fix at a time, in the order above. Full scores and ranks on our 9 Nov 2026 board: our maths, not a forecast.

6 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.

  1. FindFind: 100, median 100, best 100.
  2. ReadRead: 85, median 95, best 100.
  3. ActAct: 82, median 82, best 96.

Where Mailjet stands

On our board

The 15 email APIs on our board average 88, and the top score is 99.

Neighbours on the board

  1. SendGrid92+4
  2. Mailgun90+2
  3. Mailchimp Transactional88=
  4. Mailjet88
  5. Plunk86−2
  6. SMTP2GO83−5

SendGrid 4 and Mailgun 2 ahead. Three fixes, 93, puts Mailjet past both.

Email APIs, our 9 Nov 2026 board. Our maths, not a forecast.

What Mailjet does well

One more thing: only 6 of the 15 email APIs on our board pass Install shown for four languages. Mailjet does.

The checks Mailjet passes that are rarest among the 15 email APIs on our board.

  • Install shown for four languagesEM-01 · 6 of 15 on our board pass this
  • Machine-readable discovery fileAR-READ-06 · 8 of 15 on our board pass this
  • OpenAPI specAR-ACT-02 · 11 of 15 on our board pass this

Compare Mailjet with rivals

Every 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

22 pass, 7 fail, 1 couldn't check, 1 not counted. The count on each row is how many of the 15 email APIs on our board pass that check.

Find · 5 of 5 pass · 36 of 36 points

  • PassAI agents allowed, homepage reachableAR-FIND-01checked /; none of the user or search agents is blocked10 of 10 points · 15 of 15 pass

    10 of 10 points · Gate, worth 10

    What our check kept, up to 60 lines or 6 KB

    User-agent: *
    Disallow: /wp-login.php
    Disallow: /wp-admin/
    Disallow: /files/
    Disallow: /search/
    Sitemap: https://www.mailjet.com/sitemap_index.xml
    Crawl-delay: 600

    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

    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://www.mailjet.com/7 of 7 points · 15 of 15 pass

    7 of 7 points · High, worth 7

    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.
  • Passllms.txt linked from your pagesLG-FIND-02docs page: a link to https://dev.mailjet.com/llms.txt; an llms.txt with markdown links7 of 7 points

    7 of 7 points · High, worth 7

    What our check kept, up to 60 lines or 6 KB

    a link: https://dev.mailjet.com/llms.txt

    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

    What our check kept, up to 60 lines or 6 KB

    <?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="//www.mailjet.com/wp-content/plugins/wordpress-seo/css/main-sitemap.xsl"?>
    <sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    	<sitemap>
    		<loc>https://www.mailjet.com/page-sitemap.xml</loc>
    		<lastmod>2026-10-13T13:37:06+00:00</lastmod>
    	</sitemap>
    	<sitemap>
    		<loc>https://www.mailjet.com/about-sitemap.xml</loc>
    		<lastmod>2026-10-09T14:29:11+00:00</lastmod>
    	</sitemap>
    	<sitemap>
    		<loc>https://www.mailjet.com/roi-chapter-sitemap.xml</loc>
    		<lastmod>2026-07-23T04:20:22+00:00</lastmod>
    	</sitemap>
    	<sitemap>
    		<loc>https://www.mailjet.com/road-to-inbox-sitemap.xml</loc>
    		<lastmod>2025-12-11T14:26:18+00:00</lastmod>
    	</sitemap>
    	<sitemap>
    		<loc>https://www.mailjet.com/solutions-sitemap.xml</loc>
    		<lastmod>2026-10-29T12:54:36+00:00</lastmod>
    	</sitemap>
    	<sitemap>
    		<loc>https://www.mailjet.com/products-sitemap.xml</loc>
    		<lastmod>2026-10-31T05:31:06+00:00</lastmod>
    	</sitemap>
    	<sitemap>
    		<loc>https://www.mailjet.com/compare-sitemap.xml</loc>
    		<lastmod>2026-11-06T09:11:38+00:00</lastmod>
    	</sitemap>
    	<sitemap>
    		<loc>https://www.mailjet.com/research-sitemap.xml</loc>
    		<lastmod>2025-07-29T15:07:07+00:00</lastmod>
    	</sitemap>
    	<sitemap>
    		<loc>https://www.mailjet.com/guides-ebooks-sitemap.xml</loc>
    		<lastmod>2026-10-15T14:34:41+00:00</lastmod>
    	</sitemap>
    	<sitemap>
    		<loc>https://www.mailjet.com/videos-sitemap.xml</loc>
    		<lastmod>2026-01-29T05:22:49+00:00</lastmod>
    	</sitemap>
    	<sitemap>
    		<loc>https://www.mailjet.com/case-studies-sitemap.xml</loc>
    		<lastmod>2026-10-07T08:53:21+00:00</lastmod>
    	</sitemap>
    	<sitemap>
    		<loc>https://www.mailjet.com/integrations-sitemap.xml</loc>
    		<lastmod>2026-10-07T10:53:22+00:00</lastmod>
    	</sitemap>
    	<sitemap>
    		<loc>https://www.mailjet.com/resources-sitemap.xml</loc>
    		<lastmod>2026-10-08T09:06:25+00:00</lastmod>
    	</sitemap>
    	<sitemap>
    		<loc>https://www.mailjet.com/blog-sitemap.xml</loc>
    		<lastmod>2026-10-29T14:56:44+00:00</lastmod>
    	</sitemap>
    	<sitemap>
    		<loc>https://www.mailjet.com/blog-sitemap2.xml</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 · 9 of 13 pass · 64 of 75 points

  • PartlyReadable without JavaScriptAR-READ-012 of the 8 pages we read are thin before JavaScript runs; the rest have real content8.8 of 10 points · 12 of 15 pass

    2 of the 8 pages we read are 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

    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; linked from the docs page: readable without a login10 of 10 points

    10 of 10 points · Gate, worth 10

    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

    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

    What our check kept, up to 60 lines or 6 KB

    # Mailjet Developer Documentation
    
    > Developer documentation for the Mailjet Email API, Content API and SMTP Relay - guides, API references and code samples for sending, templating and tracking email at scale.
    
    Mailjet (part of Sinch) provides APIs for sending and managing email.
    
    This documentation covers four main areas:
    
    - **Email API** - the Send API (v3 and v3.1) for transactional and marketing email,
      plus contact management, segmentation, campaigns, statistics, webhooks, the Parse API
      and the Mailjet Templating Language.
    - **Content API** - programmatic management of email templates, template contents,
      images, labels and authentication tokens (v1).
    - **SMTP Relay** - sending through Mailjet's SMTP servers, including custom headers.
    - **API Reference** - the complete, generated reference for every endpoint, built directly
      from the OpenAPI specifications.
    
    Base URL for all REST APIs: `https://api.mailjet.com`.
    Authentication uses HTTP Basic auth with an API key and secret key.
    
    ## Machine-readable entry points
    
    Prefer these when you need the API surface in as few requests as possible:
    
    - `/openapi/openapi-mailjet.md` - the **complete** Email API reference (every endpoint,
      grouped by resource) as a single Markdown document.
    - `/openapi/openapi-passport.md` - the **complete** Content API reference as a single
      Markdown document.
    - `/_bundle/openapi/openapi-mailjet.yaml` - the raw, fully bundled OpenAPI 3 description
      of the Email API.
    - `/_bundle/openapi/openapi-passport.yaml` - the raw, fully bundled OpenAPI 3 description
      of the Content API.
    - `/sitemap.xml` - every indexable URL on this site.
    
    Every page on this site is also available as clean Markdown by appending `.md` to its URL.
    
    ## Email API
    Sending, contacts, campaigns, statistics, webhooks and templating.
    
     - [Email API](https://dev.mailjet.com/docs/email-api.md): Send transactional and marketing emails at scale with the Mailjet Email API. Explore Send API v3.1, email templates, webhooks, and contact management tools.
     - [Bulk contact management](https://dev.mailjet.com/docs/email-api/contact-management/bulk-contact.md): Bulk-manage Mailjet contacts with addforce, addnoforce, remove, and unsub actions to import, clear, or resubscribe contacts across lists in a single API call.
     - [Contact Management Overview](https://dev.mailjet.com/docs/email-api/contact-management/contact-mgmt-overview.md): Overview of Mailjet contact management: how contacts, contact properties, contact lists, and list recipients are structured in the REST API.
     - [GDPR Delete contacts](https://dev.mailjet.com/docs/email-api/contact-management/gdpr-delete-contacts.md): Permanently delete a Mailjet contact for GDPR compliance: retrieve the contact ID by email, then erase all personal data and tracking history via the API.
     - [Manage contacts via CSV Upload](https://dev.mailjet.com/docs/email-api/contact-management/manage-contacts-csv.md): Upload contacts in bulk to Mailjet using a CSV file: format the data, post it to the DATA API, then trigger an async import via /csvimport.
     - [Manage your exclusion list](https://dev.mailjet.com/docs/email-api/contact-management/manage-exclusion-list.md): Block Mailjet contacts from marketing campaigns via IsExcludedFromCampaigns; they still receive transactional Send API messages.
     - [Manage multiple contacts in a list](https://dev.mailjet.com/docs/email-api/contact-management/manage-multiple-contact-list.md): Add, remove, or unsubscribe multiple contacts from a Mailjet list using /contactslist/{list_ID}/managemanycontacts with async JobID tracking.
     - [Manage the subscription status of an existing contact](https://dev.mailjet.com/docs/email-api/contact-management/manage-sub-status-existing-contact.md): Update a Mailjet contact's subscription on multiple lists with one POST to /contact/{contact_ID}/managecontactslists using addforce, remove, or unsub.
     - [Manage multiple contacts across multiple lists](https://dev.mailjet.com/docs/email-api/contact-management/multiple-contacts-multiple-lists.md): Add or unsubscribe multiple Mailjet contacts across several lists at once using /contact/managemanycontacts with per-list action and contact property updates.
     - [Mailjet C# / .NET SDK](https://dev.mailjet.com/docs/email-api/developer-tools/csharp.md): Install and use the official Mailjet .NET wrapper: authentication, sending with Send API v3.1, REST requests, dependency injection, proxies and SMS.
     - [Single Contact Management](https://dev.mailjet.com/docs/email-api/contact-management/single-contact.md): Create, retrieve, and update individual Mailjet contacts via the /contact REST resource, including setting email, display name, and campaign exclusion status.
     - [Mailjet Go SDK](https://dev.mailjet.com/docs/email-api/developer-tools/go.md): Install and use the official Mailjet Go client: authentication, sending with Send API v3.1, REST requests, filtering, proxies and module versioning.
     - [Mailjet Java SDK](https://dev.mailjet.com/docs/email-api/developer-tools/java.md): Install and use the official Mailjet Java wrapper: Maven setup, authentication, sending with Send API v3.1, REST requests, OkHttp options and SMS.
     - [Mailjet Node.js SDK](https://dev.mailjet.com/docs/email-api/developer-tools/nodejs.md): Install and use the official Mailjet Node.js SDK: authentication, sending with Send API v3.1, batch sending, TypeScript types, configuration and SMS.
     - [Mailjet PHP SDK](https://dev.mailjet.com/docs/email-api/developer-tools/php.md): Install and use the official Mailjet PHP wrapper: PSR-18 clients, authentication, sending with Send API v3.1, REST requests, templates and SMS.
     - [Mailjet Python SDK](https://dev.mailjet.com/docs/email-api/developer-tools/python.md): Install and use the official Mailjet Python wrapper: authentication, sending with Send API v3.1, payload builders, pagination, security guardrails and the Content API.
     - [Mailjet Ruby SDK](https://dev.mailjet.com/docs/email-api/developer-tools/ruby.md): Install and use the official Mailjet Ruby gem: authentication, sending with Send API v3.1, REST requests, ActionMailer d

    How 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".
  • Partlyllms.txt links work, and it fitsLG-READ-02Your llms.txt has broken links, or it's too long for an agent to read3.5 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.

    3.5 of 7 points · High, worth 7 · 50% credit

    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.
  • PassDocs pages fit an agent's contextLG-READ-04docs page: 1,050 characters of text; linked from the docs page: 1,081 characters of text; linked from the docs page: 676 characters of text; linked from the docs page: 5,065 characters of text; linked from the docs page: 4,248 characters of text; linked from the docs page: 568 characters of text; linked from the docs page: 3,648 characters of text7 of 7 points

    7 of 7 points · High, worth 7

    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

    What our check kept, up to 60 lines or 6 KB

    <meta name="description" content="Design, deliver, and automate marketing &amp; transactional emails together with built-in deliverability, GDPR compliance, and developer-ready email APIs" />

    How we test this:

    • We check your homepage's raw HTML (no JavaScript run) has a non-empty meta description or og:description.
  • FailStructured docs pageAR-READ-04· we found something close0 of 4 points · 13 of 15 pass

    Structured docs page: we found something close. An agent may struggle to tell where one topic in your docs ends and the next begins.

    0 of 4 points · Medium, worth 4

    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.
  • PassCode samples say their languageAR-READ-05quickstart page: a code block with a language tag4 of 4 points · 13 of 15 pass

    4 of 4 points · Medium, worth 4

    What our check kept, up to 60 lines or 6 KB

    ```shell

    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 "Free" next to a month or year4 of 4 points · 15 of 15 pass

    4 of 4 points · Medium, worth 4

    What our check kept, up to 60 lines or 6 KB

    prise Plans for high-volume senders All the power of Mailjet, plus white-glove onboarding, deliverability services and priority support. Most popular Free $ 0 /month 6,000 emails/month 200 emails per day Get started Features include: 1,000 contacts APIs, SMTP Relay, Webhooks Advanced Email Editor Basic

    How 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 Markdown1.7 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.

    1.7 of 4 points · Medium, worth 4 · 43% credit

    What our check kept, up to 60 lines or 6 KB

    # Templating Language Overview
    
    Mailjet's template language allows you to push the boundaries of the personalisation of an email.
    
    More than just substitutions of a text, it lets you leverage conditions, loops, functions and multiple data sources.
    
    With the Mailjet's template language for transactional messages, designing and building dynamic emails, that can highly adapt to your recipients' profiles, has never been easier.
    
    Mailjet Template language is available for transactional messages only.
    As Mailjet templating language is following a syntax close to the one used by the most popular template languages, such as [Jinja2](https://jinja.palletsprojects.com/en/stable/) or [Twig](https://twig.symfony.com/), it can be already familiar to you.
    
    Go beyond simple personalization tags by adding logic into your email to include/remove sections of the delivered message.
    
    Additionally, Mailjet's Template API allows you to store your templates on the Mailjet system. There is no need to provide the whole content of your message at each call to the Send API anymore, just use your predefined template.
    
    You can create your template, leveraging our template language, in multiple ways: either through [Passport](https://www.mailjet.com/products/email-marketing/email-editor/) - our drag and drop email design tool - [MJML](https://mjml.io/) - the open source responsive email framework we created - or even with simple HTML.
    
    The syntax is:
    
    HTML result
    ```html HTML result
    <html>
      <body>
        {% if data:age > 45 %}
        <ul>
          <li>{{data:age}}</li>
        </ul>
        {% endif %}
      </body>
    </html>
    ```
    
    ## Templating language for everyone, from beginners to power users
    
    MJML and templating language, a superhero duo
    
    Today, flexibility and personalization are a must-have in the email industry. Transactional emails imply more and more complex business logic, and one can often struggle trying to juggle a lot of different templates, when they could just have one personalized email that adapts to several use cases. Having a separate template for men and another one for women, or creating specific campaigns to recommend different things based on your customer's previous purchases is not viable.
    
    It is in this kind of situations that a templating language comes in handy. OK, let’s be a bit naive and accept that you could write your own. But to be able to implement a tokenizer and a grammar, you need to have a good knowledge in the field and, at the end of the day, you might just be reinventing the wheel when you could have been focusing on your core business instead... You could instead use nice libraries such as [Handlebars](http://handlebarsjs.com/), [Jinja](http://jinja.pocoo.org/) or [Twig](http://twig.sensiolabs.org/), but then you’ll still need to write or host a dedicated service to handle the templating processing.
    
    So, let’s recap: MJML for producing responsive HTML emails without effort, plus a templating language to bring them to life with conditional blocks and variables. This combo can change your life as a developer.
    
    But, enough words, you’ll definitely want some action. You will find here four tutorials that will explain you step by step how to solve very common issues in template creation.
    
    - [How to create an e-receipt email template](https://github.com/mailjet/mailjet-apiv3-templating-samples/tree/master/tutorials/receipt)
    - [How to create a welcome email template](https://github.com/mailjet/mailjet-apiv3-templating-samples/tree/master/tutorials/welcome)
    - [How to create an abandoned cart email template](https://github.com/mailjet/mailjet-apiv3-templating-samples/tree/master/tutorials/abandoned_cart)
    - [How to create an digest email template](https://github.com/mailjet/mailjet-apiv3-templating-samples/tree/master/tutorials/digest)
    
    
    ## Github Demos
    
    You can find some use case samples on [Github](https://github.com/mailjet/mailjet-apiv3-templating-samples/tree/master/samples)
    
    - [All in one transactional](https://github.com/mailjet/mailjet-apiv3-templating-samples/tree/master/samples/all_in_one_transac/) : one template rules all your simple transactional messages. Make it easy to manage a single canvas for all your messages
    - [Mailjet Air Electronic ticket](https://github.com/mailjet/mailjet-apiv3-templating-samples/tree/master/samples/electronic_ticket/) : depending on the destination, the seat class and booking of a car to the airport, the layout changes and offers specific call to actions
    - [Question / Answers / Comment notifications](https://github.com/mailjet/mailjet-apiv3-templating-samples/tree/master/samples/question_answer/) : alerts for new question, comment and answer (Quandora like) with specific call to action depending on the alerts
    - [All in one Ecommerce](https://github.com/mailjet/mailjet-apiv3-templating-samples/tree/master/samples/ecommerce/) : one template to support all your order, payment, shipping... notifications.
    - [White label](https://github.com/mailjet/mailjet-apiv3-templating-samples/tree/master/samples/white_label/) : handle several brands with one transactional template
    - [RSS to email](https://github.com/mailjet/mailjet-apiv3-templating-samples/tree/master/samples/rss_to_email/) : pull a RSS feed and send it by email (simple loop sample)

    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

    • https://mailjet.com/HTTP 200has an application/ld+json block (redirected to https://www.mailjet.com/)

    What our check kept, up to 60 lines or 6 KB

    {"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.mailjet.com\/","url":"https:\/\/www.mailjet.com\/","name":"Mailjet: Best Email Marketing Software & Email API for Teams","isPartOf":{"@id":"https:\/\/www.mailjet.com\/#website"},"about":{"@id":"https:\/\/www.mailjet.com\/#organization"},"datePublished":"2025-04-16T09:32:23+00:00","dateModified":"2026-05-13T11:11:09+00:00","description":"Design, deliver, and automate marketing & transactional emails together with built-in deliverability, GDPR compliance, and developer-ready email APIs","breadcrumb":{"@id":"https:\/\/www.mailjet.com\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.mailjet.com\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.mailjet.com\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home"}]},{"@type":"WebSite","@id":"https:\/\/www.mailjet.com\/#website","url":"https:\/\/www.mailjet.com\/","name":"Mailjet: Email Delivery Service for Marketing & Developer Teams","description":"Discover our easy-to-use platform for designing and sending your email marketing campaigns, newsletters, and automated emails.","publisher":{"@id":"https:\/\/www.mailjet.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.mailjet.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.mailjet.com\/#organization","name":"Sinch Mailjet","url":"https:\/\/www.mailjet.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.mailjet.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.mailjet.com\/wp-content\/uploads\/2025\/06\/logo-mailjet-sinch.svg","contentUrl":"https:\/\/www.mailjet.com\/wp-content\/uploads\/2025\/06\/logo-mailjet-sinch.svg","width":1,"height":1,"caption":"Sinch Mailjet"},"image":{"@id":"https:\/\/www.mailjet.com\/#\/schema\/logo\/image\/"}}]}

    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.
  • PassMachine-readable discovery fileAR-READ-06valid JSON2 of 2 points · 8 of 15 pass

    2 of 2 points · Low, worth 2

    What our check kept, up to 60 lines or 6 KB

    {"issuer":"https:\/\/www.mailjet.com","authorization_endpoint":"https:\/\/www.mailjet.com\/oauth\/authorize","token_endpoint":"https:\/\/www.mailjet.com\/oauth\/token","revocation_endpoint":"https:\/\/www.mailjet.com\/oauth\/revoke","response_types_supported":["code"],"grant_types_supported":["authorization_code","refresh_token"],"code_challenge_methods_supported":["S256"],"scopes_supported":["mcp"],"token_endpoint_auth_methods_supported":["none"],"client_id_metadata_document_supported":true,"authorization_response_iss_parameter_supported":true}

    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 · 8 of 11 pass · 36 of 44 points

  • Not countedMCP server or CLIAR-ACT-10we haven't confirmed this MCP server's tools yet (its tool list isn't confirmed)

    Not in the score · Must, worth 10

    How 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.
  • PassOpenAPI specAR-ACT-02OpenAPI 3.1.0, 99 paths7 of 7 points · 11 of 15 pass

    7 of 7 points · High, worth 7

    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.
  • Passnpm and PyPI packagesAR-ACT-06language page: npm install "npm install node-mailjet"; language page: pip install "pip install mailjet-rest"7 of 7 points · 11 of 15 pass

    7 of 7 points · High, worth 7

    What our check kept, up to 60 lines or 6 KB

    npm install node-mailjet
    pip install mailjet-rest

    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.
  • PassAuth an agent can follow (proxy)AR-ACT-01OAuth metadata parses, with issuer4 of 4 points · 12 of 15 pass

    4 of 4 points · Medium, worth 4

    What our check kept, up to 60 lines or 6 KB

    {"issuer":"https:\/\/www.mailjet.com","authorization_endpoint":"https:\/\/www.mailjet.com\/oauth\/authorize","token_endpoint":"https:\/\/www.mailjet.com\/oauth\/token","revocation_endpoint":"https:\/\/www.mailjet.com\/oauth\/revoke","response_types_supported":["code"],"grant_types_supported":["authorization_code","refresh_token"],"code_challenge_methods_supported":["S256"],"scopes_supported":["mcp"],"token_endpoint_auth_methods_supported":["none"],"client_id_metadata_document_supported":true,"authorization_response_iss_parameter_supported":true}

    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.
  • PassEvery operation has an operationIdLG-ACT-01151 of 151 operations have an operationId4 of 4 points

    4 of 4 points · Medium, worth 4

    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.
  • Couldn't checkMCP serverAR-ACT-03· blocks automated readersrefused our scanner (challenge page) · 14 of 15 pass

    Not in the score · Medium, worth 4

    How 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.
  • FailErrors have a schemaLG-ACT-02Your API spec doesn't say what an error looks like0 of 4 points

    Your API spec doesn't say what an error looks like. Without a documented error shape, an agent may have to guess from the message why a call failed, and retry or give up wrongly.

    0 of 4 points · Medium, worth 4

    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

    • https://mailjet.com/HTTP 200no modelContext in the raw HTML or inline scripts (redirected to https://www.mailjet.com/)

    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.
  • FailAn agent skill is publishedLG-ACT-03Agents have no skill to follow for your product0 of 2 points

    Agents have no skill to follow for your product. Without step-by-step skills, an agent may work out each task from reference pages, more slowly and with more mistakes.

    0 of 2 points · Low, worth 2

    How 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.
  • PassSign-in an MCP client can useLG-ACT-04S256, scopes and a way for a client to register2 of 2 points

    2 of 2 points · Low, worth 2

    What our check kept, up to 60 lines or 6 KB

    {"issuer":"https:\/\/www.mailjet.com","authorization_endpoint":"https:\/\/www.mailjet.com\/oauth\/authorize","token_endpoint":"https:\/\/www.mailjet.com\/oauth\/token","revocation_endpoint":"https:\/\/www.mailjet.com\/oauth\/revoke","response_types_supported":["code"],"grant_types_supported":["authorization_code","refresh_token"],"code_challenge_methods_supported":["S256"],"scopes_supported":["mcp"],"token_endpoint_auth_methods_supported":["none"],"client_id_metadata_document_supported":true,"authorization_response_iss_parameter_supported":true}

    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.
  • PassInstall shown for four languagesEM-01language page: TypeScript/JavaScript "npm install node-mailjet"; language page: Python "pip install mailjet-rest"; language page: Go "go get github.com/mailjet/mailjet-apiv3-go/v4"; language page: Java "<artifactId>mailjet-client</artifactId>"4 of 4 points · 6 of 15 pass

    4 of 4 points · Medium, worth 4

    What our check kept, up to 60 lines or 6 KB

    TypeScript/JavaScript: npm install node-mailjet
    Python: pip install mailjet-rest
    Go: go get github.com/mailjet/mailjet-apiv3-go/v4
    Java: <artifactId>mailjet-client</artifactId>

    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.
  • PassSend operation in the specEM-02the spec has POST /v3.1/send, POST /v3/send, POST /v3/REST/campaigndraft/{draft_ID}/send and 4 more4 of 4 points · 11 of 15 pass

    4 of 4 points · Medium, worth 4

    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: "15,000 emails/month"4 of 4 points · 13 of 15 pass

    4 of 4 points · Medium, worth 4

    What our check kept, up to 60 lines or 6 KB

    o main menu English Français Deutsch Español Log in Get Started Contact Sales Log in Contact Sales Get Started Pricing Pay as you grow I want to send 15,000 emails/month Currency $ USD € EUR £ GBP Activate the annual payment Monthly Annual (10% discount) Custom Enterprise Plans for high-volume senders All the power of

    How 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

Your next stepsPart 4 of 4

Your next steps

  1. Pick your fixes
  2. Hand them off
  3. Rescan once it's live
  4. Stay ahead of your category
  5. Then back to 1 when a rival passes you
  1. Pick your fixes

    Usually the founder or DevRel lead

    3 fixes take Mailjet from 88 to 93, 6th of 15 email APIs, past Mailchimp Transactional, Mailgun, Loops and SendGrid.

    Nothing copied yet from this browser.

  2. 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.

  3. Rescan once it's live

    Usually the engineer, after the deploy

    A rescan reads Mailjet again and shows what now passes, the new score and who you passed.

    Last scan: 88 on 9 Nov, joint 9th 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.
  4. Stay ahead of your category

    DevRel, the founder

    Rivals ship too. Watch Mailjet with Mailgun and SendGrid, 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 mailjet
+ Add a rival

No sign-up. Checks the files and URLs agents read. It doesn't test an agent using your product, or whether ChatGPT recommends you.

6 fixes · copy, or open in Cursor, GitHub, Linear

Share Mailjet's result

From our 9 Nov 2026 scan.

  • LinkThis result, so whoever opens it sees the same.
  • A line to postWhat it passes, and a way to check their own.

Cards with a place, and README badges, are for the top 3 on a board. When a rescan lifts your score, you can share the jump.