Analyzed URL
https://tenvio.email
Measured 3 weeks ago
AI-Ready Score
Excellent
out of 100
Token Savings
Score Breakdown
Emerging protocols
0 of 6 detectedWell-known endpoints AI agents look for. Detected here means an agent can discover and connect to your service automatically.
-
OAuth Protected Resource RFC 9728
/.well-known/oauth-protected-resource -
OAuth Discovery RFC 8414
/.well-known/oauth-authorization-server -
MCP Server Card SEP-1649 draft
/.well-known/mcp/server-card.json -
A2A Agent Card A2A v1.0
/.well-known/agent-card.json -
API Catalog RFC 9727
/.well-known/api-catalog -
Agent Skills index Discovery RFC v0.2.0 draft
/.well-known/agent-skills/index.json
Doesn't stay fixed by itself. Monitoring isn't built yet — join the list and we'll tell you when it is.
You're on the list! We'll notify you when it launches.
What we measured No Content-Signal found (robots.txt or HTTP headers)
No Content-Signal directives found. These tell AI agents how they may use your content (search indexing, AI input, training data). The recommended location is robots.txt.
How to implement
Add Content-Signal to your robots.txt: User-agent: *\nContent-Signal: search=yes, ai-input=yes, ai-train=no. You can also add it as an HTTP header on markdown responses.
What we measured 22 semantic elements, 138 divs (ratio: 14%)
Your page relies heavily on <div> elements. Semantic elements like <section>, <nav>, <header>, <footer>, and <aside> provide meaningful structure for AI agents.
How to implement
Replace generic <div> containers with appropriate semantic elements. Use <section> for thematic groups, <nav> for navigation, <header>/<footer> for page/section headers and footers.
Transactional email infrastructure
## Transactional email infrastructure for SaaS products and platforms.
Send product email from your own domains—or organize customer-owned domains and senders under one account—with a focused REST API, explicit DNS readiness, durable queues, retries, and delivery history.
Controlled onboarding · Critical, transactional, and approved permission-based traffic.
**POST** /v1/emails202 Accepted
{
"from": "[email protected]",
"to": \["[email protected]"\],
"type": "critical",
"subject": "New sign-in detected",
"content": { "plain": "Review this activity." }
}
em\_7kR4…queueddurably accepted
One infrastructure layer
## Two ways to build on Tenvio.
Use the same account-level model whether email belongs to your own product or to the businesses your platform serves.
01
### For your own product
Operate multiple product domains and sender identities for authentication, billing, security, and workflow notifications.
your appdomainssenders
02
### For your platform
Provision customer-owned domains and senders programmatically with scoped Management API credentials and stable external IDs.
your platformcustomer domainssenders
The SMTP problem
## A successful API call is only the start.
Transactional mail crosses DNS, queues, retries, transport policy, and recipient infrastructure. Treating that path as a black box leaves product teams guessing when users are waiting.
**Before**Request accepted?
**With Tenvio**queuedsendingaccepted
Explicit state, SMTP outcomes, safe diagnostics, and timestamps—without claiming inbox placement.
Domains are first-class
## One account. Multiple sending identities.
Add domains independently, follow the exact DNS records each one needs, and attach multiple senders to the right domain. A sender’s effective state follows its own configuration and its domain’s readiness.
- 2 domains on the Free plan
- 3 senders per account
- Up to 3 senders per domain
- Independent domain and sender state
DOMAINS**2 of 2 used**
A
**acme.app**3 senders · checked 2 min ago
Ready
C
**customer.example**1 sender · DNS action required
Verifying
DNS READINESS · CUSTOMER.EXAMPLE**2 of 3 checks passing**
Ownership`_tenvio-verification`**Passed**
DKIM`tenvio1._domainkey`**Pending**
DMARC`_dmarc`**Passed**
ACCOUNT**Your SaaS platform**shared quota + scoped keys
DOMAIN**customer-a.com**ready
billing@alerts@
DOMAIN**customer-b.io**verifying
notifications@
For platforms
## A resource model built beyond one domain.
The multi-domain, multi-sender foundation is live. It can represent domains your company owns or domains your customers own without legacy single-domain branches.
Management API**Live · controlled onboarding**
Create separate `mg_live_` keys with exact scopes for account and usage reads, plus domain and sender operations. DNS actions use the domain scopes. Sending remains isolated behind `tv_live_` keys.
[Read the Management API guide](https://docs.tenvio.email/management/)
Direct delivery
## Your application to the recipient MX.
Tenvio operates the delivery path instead of forwarding sends to another email API provider.
01**Your application**Authenticated API request
02**Tenvio queue**Durable intake + idempotency
03**Delivery engine**Policy + retries
04**Recipient MX**SMTP outcome
A deliberate boundary
## Product email with explicit consent.
Critical and transactional messages are available to every plan. Permission-based broadcast requires a paid Custom plan and separate manual approval.
### Available
- Verification and authentication
- Security and account alerts
- Receipts and order updates
- Approved permission-based broadcast
### Prohibited
- Cold outreach
- Purchased recipient lists
- Traffic without documented consent
Delivery lifecycle
## Every state means something precise.
**queued**
Durably accepted for delivery.
**sending**
An attempt is in progress.
**deferred**
A temporary failure will retry.
**accepted**
The recipient SMTP server accepted it.
**bounced**
The recipient server rejected it permanently.
**failed**
Delivery ended without acceptance.
Accepted does not guarantee inbox placement. The receiving system controls filtering and final presentation.
Developer API
## One explicit send contract.
Create an API key, keep it server-side, and send through the live REST endpoint. Every logical email requires an idempotency key so retries do not create duplicate messages.
**POST**Enqueue an email
**GET**List email history
**GET**Inspect email detail
[Read the complete API reference](https://docs.tenvio.email/)
Send a transactional email
```
curl -X POST https://api.tenvio.email/v1/emails \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 7f4d9b98-63a8-4c43-a958-41d641fe2fd2" \
-d '{
"from": "[email protected]",
"to": ["[email protected]"],
"cc": [],
"bcc": [],
"type": "transactional",
"subject": "Your account is ready",
"content": { "plain": "You can now sign in." }
}'
```
Scale with guardrails
## Clear limits. Account-level control.
Free includes exact recipient-email quotas and safety limits. Purchased Custom capacity remains subject to abuse, reputation, and infrastructure safety restrictions.
**2**domains
**3**senders
**3**senders / domain
**3,000**recipient-emails / monthly cycle
**250**active delivery jobs
Also enforced on Free: 30 recipient-emails per rolling minute, 300 per hour, and 300 per rolling 24 hours.
Pricing v1
## Free and Custom.
Exact USD monthly pricing. Taxes may be additional where applicable.
FREE
### $0 / month
Critical and transactional REST API email: 3,000 recipient-emails per monthly cycle, 2 domains, 3 senders total and per domain, one sending key, 250 active deliveries, and 14-day history. Broadcast is disabled.
CUSTOM
### From $10 / month
Choose 10,000 to 2,500,000 recipient-emails and capacity for up to 10–1,000 managed domains. Hard Cap is the only exhaustion mode. Permission-based broadcast requires separate manual approval.
[Build and review exact pricing](https://docs.tenvio.email/plans/)
Controlled onboarding
## A focused product email surface.
### Available
- Critical and transactional REST Email API
- Multiple domains and senders
- BCC input with address-private history
- Approved Custom permission-based broadcast
- Free and Custom Hard Cap plans
### Policy boundary
- Explicit recipient permission
- Documented audience source
- No cold outreach
- No purchased lists
FAQ
## The infrastructure, without the ambiguity.
**What is Tenvio?**
Tenvio is product email infrastructure for critical, transactional, and separately approved permission-based broadcast traffic.
**Can one account use multiple domains and senders?**
Yes. The Free plan supports 2 domains and 3 senders across the account, with up to 3 senders on one domain.
**Does “accepted” mean delivered to the inbox?**
No. It means the recipient mail server accepted the message. The receiving system controls filtering and inbox placement.
**How is broadcast enabled?**
A paid Custom plan is necessary but not sufficient. Tenvio separately reviews permission and risk controls before an operator approves broadcast capability. Payment never grants approval.
**Can I use a purchased list or send cold outreach?**
No. Both are prohibited. Broadcast recipients require a documented permission basis and audience source.
Request access
## Tell us what your product needs to send.
Tenvio is onboarding SaaS products and platforms during controlled onboarding. Share your domain model, transactional use case, and expected volume.
**Keep secrets out of this form.**Do not include API keys, passwords, recipient lists, or message payloads.
Tenvio - Transactional Email API for SaaS Platforms [Skip to content](https://tenvio.email/#main)
[Tenvio](https://tenvio.email/)
Transactional email infrastructure# Transactional email infrastructure for SaaS products and platforms.
Send product email from your own domains—or organize customer-owned domains and senders under one account—with a focused REST API, explicit DNS readiness, durable queues, retries, and delivery history.
[Request access →](https://tenvio.email/?topic=access#request-access)[Read the docs](https://docs.tenvio.email/)
Controlled onboarding · Critical, transactional, and approved permission-based traffic.
Send API LivePlatform Controlled onboarding
**POST** /v1/emails202 Accepted
{
"from": "[email protected]",
"to": \["[email protected]"\],
"type": "critical",
"subject": "New sign-in detected",
"content": { "plain": "Review this activity." }
}
em\_7kR4…queueddurably accepted
Platform resource model**Live · controlled onboarding**
A
ACCOUNT**Acme Platform**
DOMAIN · READY**acme.app**
security@billing@
DOMAIN · VERIFYING**customer-one.com**
notifications@
Automate domains, DNS readiness, senders, account details, and usage with separate scoped management keys.
One infrastructure layer## Two ways to build on Tenvio.
Use the same account-level model whether email belongs to your own product or to the businesses your platform serves.
01
### For your own product
Operate multiple product domains and sender identities for authentication, billing, security, and workflow notifications.
your appdomainssenders
02
### For your platform
Provision customer-owned domains and senders programmatically with scoped Management API credentials and stable external IDs.
your platformcustomer domainssenders
The SMTP problem## A successful API call is only the start.
Transactional mail crosses DNS, queues, retries, transport policy, and recipient infrastructure. Treating that path as a black box leaves product teams guessing when users are waiting.
**Before**Request accepted?
**With Tenvio**queuedsendingaccepted
Explicit state, SMTP outcomes, safe diagnostics, and timestamps—without claiming inbox placement.
Domains are first-class## One account. Multiple sending identities.
Add domains independently, follow the exact DNS records each one needs, and attach multiple senders to the right domain. A sender’s effective state follows its own configuration and its domain’s readiness.
- 2 domains on the Free plan
- 3 senders per account
- Up to 3 senders per domain
- Independent domain and sender state
DOMAINS**2 of 2 used**
Add domain
A
**acme.app**3 senders · checked 2 min ago
Ready
C
**customer.example**1 sender · DNS action required
Verifying
DNS READINESS · CUSTOMER.EXAMPLE**2 of 3 checks passing**
Ownership`_tenvio-verification`**Passed**
DKIM`tenvio1._domainkey`**Pending**
DMARC`_dmarc`**Passed**
ACCOUNT**Your SaaS platform**shared quota + scoped keys
DOMAIN**customer-a.com**ready
billing@alerts@
DOMAIN**customer-b.io**verifying
notifications@
For platforms## A resource model built beyond one domain.
The multi-domain, multi-sender foundation is live. It can represent domains your company owns or domains your customers own without legacy single-domain branches.
Management API**Live · controlled onboarding**
Create separate `mg_live_` keys with exact scopes for account and usage reads, plus domain and sender operations. DNS actions use the domain scopes. Sending remains isolated behind `tv_live_` keys.
[Read the Management API guide →](https://docs.tenvio.email/management/)
Direct delivery## Your application to the recipient MX.
Tenvio operates the delivery path instead of forwarding sends to another email API provider.
01**Your application**Authenticated API request
02**Tenvio queue**Durable intake + idempotency
03**Delivery engine**Policy + retries
04**Recipient MX**SMTP outcome
A deliberate boundary## Product email with explicit consent.
Critical and transactional messages are available to every plan. Permission-based broadcast requires a paid Custom plan and separate manual approval.
### Available
- Verification and authentication
- Security and account alerts
- Receipts and order updates
- Approved permission-based broadcast
### Prohibited
- Cold outreach
- Purchased recipient lists
- Traffic without documented consent
Delivery lifecycle## Every state means something precise.
**queued**
Durably accepted for delivery.
**sending**
An attempt is in progress.
**deferred**
A temporary failure will retry.
**accepted**
The recipient SMTP server accepted it.
**bounced**
The recipient server rejected it permanently.
**failed**
Delivery ended without acceptance.
Accepted does not guarantee inbox placement. The receiving system controls filtering and final presentation.
Developer API## One explicit send contract.
Create an API key, keep it server-side, and send through the live REST endpoint. Every logical email requires an idempotency key so retries do not create duplicate messages.
**POST**Enqueue an email
**GET**List email history
**GET**Inspect email detail
[Read the complete API reference →](https://docs.tenvio.email/)
Send a transactional emailCopy
```
curl -X POST https://api.tenvio.email/v1/emails \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 7f4d9b98-63a8-4c43-a958-41d641fe2fd2" \
-d '{
"from": "[email protected]",
"to": ["[email protected]"],
"cc": [],
"bcc": [],
"type": "transactional",
"subject": "Your account is ready",
"content": { "plain": "You can now sign in." }
}'
```
Scale with guardrails## Clear limits. Account-level control.
Free includes exact recipient-email quotas and safety limits. Purchased Custom capacity remains subject to abuse, reputation, and infrastructure safety restrictions.
**2**domains
**3**senders
**3**senders / domain
**3,000**recipient-emails / monthly cycle
**250**active delivery jobs
Also enforced on Free: 30 recipient-emails per rolling minute, 300 per hour, and 300 per rolling 24 hours.
Pricing v1## Free and Custom.
Exact USD monthly pricing. Taxes may be additional where applicable.
FREE
### $0 / month
Critical and transactional REST API email: 3,000 recipient-emails per monthly cycle, 2 domains, 3 senders total and per domain, one sending key, 250 active deliveries, and 14-day history. Broadcast is disabled.
CUSTOM
### From $10 / month
Choose 10,000 to 2,500,000 recipient-emails and capacity for up to 10–1,000 managed domains. Hard Cap is the only exhaustion mode. Permission-based broadcast requires separate manual approval.
[Build and review exact pricing →](https://docs.tenvio.email/plans/)
Controlled onboarding## A focused product email surface.
### Available
- Critical and transactional REST Email API
- Multiple domains and senders
- BCC input with address-private history
- Approved Custom permission-based broadcast
- Free and Custom Hard Cap plans
### Policy boundary
- Explicit recipient permission
- Documented audience source
- No cold outreach
- No purchased lists
FAQ## The infrastructure, without the ambiguity.
**What is Tenvio?**
Tenvio is product email infrastructure for critical, transactional, and separately approved permission-based broadcast traffic.
**Can one account use multiple domains and senders?**
Yes. The Free plan supports 2 domains and 3 senders across the account, with up to 3 senders on one domain.
**Does “accepted” mean delivered to the inbox?**
No. It means the recipient mail server accepted the message. The receiving system controls filtering and inbox placement.
**How is broadcast enabled?**
A paid Custom plan is necessary but not sufficient. Tenvio separately reviews permission and risk controls before an operator approves broadcast capability. Payment never grants approval.
**Can I use a purchased list or send cold outreach?**
No. Both are prohibited. Broadcast recipients require a documented permission basis and audience source.
Request access## Tell us what your product needs to send.
Tenvio is onboarding SaaS products and platforms during controlled onboarding. Share your domain model, transactional use case, and expected volume.
**Keep secrets out of this form.**Do not include API keys, passwords, recipient lists, or message payloads.
Name
Work email
Company or product
Website
Use caseSelect oneEmail for our own productEmail for a SaaS platformBothReport abuseSomething else
Monthly volume OptionalNot sure yetUnder 10,00010,000–100,000100,000–1 millionMore than 1 million
What are you building?Describe the transactional messages and how domains belong to your product or customers.
Leave this field empty
Send request →
Upload this file as /index.md on your server so AI agents can access a clean version of your page. You can also configure Accept: text/markdown content negotiation to serve it automatically.
Our recommendation
# Tenvio > Transactional email infrastructure for SaaS products and platforms, with multiple domains, multiple senders, DNS readiness, queues, retries, and delivery telemetry. ## Main - [Tenvio - Transactional Email API for SaaS Platforms](https://tenvio.email): Transactional email infrastructure for SaaS products and platforms, with multiple domains, multiple senders, DNS readin… - [Tenvio](https://tenvio.email/) - [Request access](https://tenvio.email/?topic=access) - [Acceptable Use](https://tenvio.email/acceptable-use.html) - [Report abuse](https://tenvio.email/abuse.html) ## Legal - [Privacy](https://tenvio.email/privacy.html) - [Terms](https://tenvio.email/terms.html)
Full llms.txt requires domain-wide analysis (coming soon)
Upload this file to https://tenvio.email/llms.txt at the root of your domain. AI agents like ChatGPT, Claude, and Perplexity check this file to understand your site structure.
This site already has a llms.txt file.
Valid format# Tenvio > Tenvio is server-side email infrastructure for applications that send critical and transactional product email through a REST API, with multi-domain account management. The canonical technical source is docs.tenvio.email. Prefer its OpenAPI contract for exact request and response schemas. ## Product - [Product overview](https://tenvio.email/index.md) - [Acceptable use](https://tenvio.email/acceptable-use.md) - [Privacy](https://tenvio.email/privacy.md) - [Terms](https://tenvio.email/terms.md) - [Abuse](https://tenvio.email/abuse.md) ## Developer resources - [AI-readable documentation index](https://docs.tenvio.email/llms.txt) - [Full technical documentation](https://docs.tenvio.email/llms-full.txt) - [Getting started](https://docs.tenvio.email/getting-started/index.md) - [Sending API](https://docs.tenvio.email/sending/index.md) - [Plans and limits](https://docs.tenvio.email/plans/index.md) - [OpenAPI YAML](https://docs.tenvio.email/openapi.yaml) - [OpenAPI JSON](https://docs.tenvio.email/openapi.json) ## Complete product context - [Full product context](https://tenvio.email/llms-full.txt)
Accessibility
Content available without JavaScript
Main content starts at 18% of HTML
Page size: 26KB
AI Discoverability
All major AI search bots allowed
Discoverable, but not negotiable: an agent that reads your HTML finds the .md version; one that requests the page directly still receives HTML. Answering Accept: text/markdown covers both.
Sitemap found
robots.txt exists
llms.txt exists and is valid
Structured Data
JSON-LD found: Organization, WebSite, SoftwareApplication, FAQPage
All OG tags present
Meta description: 164 chars
Canonical URL present
lang="en"
Semantic HTML
Clean heading hierarchy
Has both <article> and <main>
22 semantic elements, 138 divs (ratio: 14%)
No informative images (2 decorative)
Avg div depth: 1.9, max: 6
Content Efficiency
74% token reduction (HTML→Markdown)
Content ratio: 27.8% (7264 content chars / 26149 HTML bytes)
HTML size: 26KB
0/518 elements with inline styles (0.0%)
{
"url": "https://tenvio.email",
"timestamp": 1790281198378,
"fetch": {
"mode": "simple",
"timeMs": 323,
"htmlSizeBytes": 26149,
"supportsMarkdown": false,
"markdownAgents": {
"contentNegotiation": false,
"mdUrl": {
"found": true,
"url": "https://tenvio.email/index.md"
},
"linkTag": {
"found": true,
"url": "/index.md"
},
"linkHeader": {
"found": false,
"url": null
},
"responseHeaders": {
"contentSignal": null,
"xMarkdownTokens": null,
"vary": null
},
"frontmatter": {
"present": false,
"fields": [],
"level": "none"
},
"level": "application",
"mdUrlMediaType": "text/markdown",
"mdUrlProperMediaType": true
},
"statusCode": 200
},
"extraction": {
"title": "Tenvio - Transactional Email API for SaaS Platforms",
"excerpt": "One account model for your domains, your customers’ domains, and every transactional sender.",
"byline": null,
"siteName": "Tenvio",
"lang": "en",
"contentLength": 7264,
"metadata": {
"description": "Transactional email infrastructure for SaaS products and platforms, with multiple domains, multiple senders, DNS readiness, queues, retries, and delivery telemetry.",
"ogTitle": "Tenvio - Transactional Email API for SaaS Platforms",
"ogDescription": "One account model for your domains, your customers’ domains, and every transactional sender.",
"ogImage": "https://tenvio.email/og-tenvio-platform.png",
"ogType": "website",
"canonical": "https://tenvio.email/",
"lang": "en",
"schemas": [
{
"@type": "Organization",
"@id": "https://tenvio.email/#organization",
"name": "Tenvio",
"url": "https://tenvio.email/",
"logo": "https://tenvio.email/android-chrome-512x512.png"
},
{
"@type": "WebSite",
"@id": "https://tenvio.email/#website",
"url": "https://tenvio.email/",
"name": "Tenvio",
"publisher": {
"@id": "https://tenvio.email/#organization"
}
},
{
"@type": "SoftwareApplication",
"@id": "https://tenvio.email/#software",
"name": "Tenvio",
"applicationCategory": "DeveloperApplication",
"operatingSystem": "Web",
"url": "https://tenvio.email/",
"description": "Critical, transactional, and approved permission-based broadcast email infrastructure with durable queues and delivery history.",
"featureList": [
"REST Email API",
"Asynchronous Broadcast API for approved Custom accounts",
"Multiple authenticated domains",
"Multiple sender identities",
"Queue and retry handling",
"Delivery history"
],
"publisher": {
"@id": "https://tenvio.email/#organization"
}
},
{
"@type": "FAQPage",
"@id": "https://tenvio.email/#faq-schema",
"mainEntity": [
{
"@type": "Question",
"name": "What traffic is available?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Critical and transactional email are available. Permission-based broadcast requires Custom and separate manual approval."
}
},
{
"@type": "Question",
"name": "Does accepted mean inbox delivery?",
"acceptedAnswer": {
"@type": "Answer",
"text": "No. Accepted means the recipient mail server accepted the message. The receiving system controls filtering and inbox placement."
}
},
{
"@type": "Question",
"name": "Can I use purchased lists or send cold outreach?",
"acceptedAnswer": {
"@type": "Answer",
"text": "No. Both are prohibited."
}
}
]
}
],
"robotsMeta": "index, follow",
"author": null,
"generator": null,
"markdownAlternateHref": "/index.md"
}
},
"markdown": "Transactional email infrastructure\n\n## Transactional email infrastructure for SaaS products and platforms.\n\nSend product email from your own domains—or organize customer-owned domains and senders under one account—with a focused REST API, explicit DNS readiness, durable queues, retries, and delivery history.\n\nControlled onboarding · Critical, transactional, and approved permission-based traffic.\n\n**POST** /v1/emails202 Accepted\n\n{\n \"from\": \"[email protected]\",\n \"to\": \\[\"[email protected]\"\\],\n \"type\": \"critical\",\n \"subject\": \"New sign-in detected\",\n \"content\": { \"plain\": \"Review this activity.\" }\n}\n\nem\\_7kR4…queueddurably accepted\n\nOne infrastructure layer\n\n## Two ways to build on Tenvio.\n\nUse the same account-level model whether email belongs to your own product or to the businesses your platform serves.\n\n01\n\n### For your own product\n\nOperate multiple product domains and sender identities for authentication, billing, security, and workflow notifications.\n\nyour appdomainssenders\n\n02\n\n### For your platform\n\nProvision customer-owned domains and senders programmatically with scoped Management API credentials and stable external IDs.\n\nyour platformcustomer domainssenders\n\nThe SMTP problem\n\n## A successful API call is only the start.\n\nTransactional mail crosses DNS, queues, retries, transport policy, and recipient infrastructure. Treating that path as a black box leaves product teams guessing when users are waiting.\n\n**Before**Request accepted?\n\n**With Tenvio**queuedsendingaccepted\n\nExplicit state, SMTP outcomes, safe diagnostics, and timestamps—without claiming inbox placement.\n\nDomains are first-class\n\n## One account. Multiple sending identities.\n\nAdd domains independently, follow the exact DNS records each one needs, and attach multiple senders to the right domain. A sender’s effective state follows its own configuration and its domain’s readiness.\n\n- 2 domains on the Free plan\n- 3 senders per account\n- Up to 3 senders per domain\n- Independent domain and sender state\n\nDOMAINS**2 of 2 used**\n\nA\n\n**acme.app**3 senders · checked 2 min ago\n\nReady\n\nC\n\n**customer.example**1 sender · DNS action required\n\nVerifying\n\nDNS READINESS · CUSTOMER.EXAMPLE**2 of 3 checks passing**\n\nOwnership`_tenvio-verification`**Passed**\n\nDKIM`tenvio1._domainkey`**Pending**\n\nDMARC`_dmarc`**Passed**\n\nACCOUNT**Your SaaS platform**shared quota + scoped keys\n\nDOMAIN**customer-a.com**ready\n\nbilling@alerts@\n\nDOMAIN**customer-b.io**verifying\n\nnotifications@\n\nFor platforms\n\n## A resource model built beyond one domain.\n\nThe multi-domain, multi-sender foundation is live. It can represent domains your company owns or domains your customers own without legacy single-domain branches.\n\nManagement API**Live · controlled onboarding**\n\nCreate separate `mg_live_` keys with exact scopes for account and usage reads, plus domain and sender operations. DNS actions use the domain scopes. Sending remains isolated behind `tv_live_` keys.\n\n[Read the Management API guide](https://docs.tenvio.email/management/)\n\nDirect delivery\n\n## Your application to the recipient MX.\n\nTenvio operates the delivery path instead of forwarding sends to another email API provider.\n\n01**Your application**Authenticated API request\n\n02**Tenvio queue**Durable intake + idempotency\n\n03**Delivery engine**Policy + retries\n\n04**Recipient MX**SMTP outcome\n\nA deliberate boundary\n\n## Product email with explicit consent.\n\nCritical and transactional messages are available to every plan. Permission-based broadcast requires a paid Custom plan and separate manual approval.\n\n### Available\n\n- Verification and authentication\n- Security and account alerts\n- Receipts and order updates\n- Approved permission-based broadcast\n\n### Prohibited\n\n- Cold outreach\n- Purchased recipient lists\n- Traffic without documented consent\n\nDelivery lifecycle\n\n## Every state means something precise.\n\n**queued**\n\nDurably accepted for delivery.\n\n**sending**\n\nAn attempt is in progress.\n\n**deferred**\n\nA temporary failure will retry.\n\n**accepted**\n\nThe recipient SMTP server accepted it.\n\n**bounced**\n\nThe recipient server rejected it permanently.\n\n**failed**\n\nDelivery ended without acceptance.\n\nAccepted does not guarantee inbox placement. The receiving system controls filtering and final presentation.\n\nDeveloper API\n\n## One explicit send contract.\n\nCreate an API key, keep it server-side, and send through the live REST endpoint. Every logical email requires an idempotency key so retries do not create duplicate messages.\n\n**POST**Enqueue an email\n\n**GET**List email history\n\n**GET**Inspect email detail\n\n[Read the complete API reference](https://docs.tenvio.email/)\n\nSend a transactional email\n\n```\ncurl -X POST https://api.tenvio.email/v1/emails \\\n -H \"Authorization: Bearer YOUR_API_KEY\" \\\n -H \"Content-Type: application/json\" \\\n -H \"Idempotency-Key: 7f4d9b98-63a8-4c43-a958-41d641fe2fd2\" \\\n -d '{\n \"from\": \"[email protected]\",\n \"to\": [\"[email protected]\"],\n \"cc\": [],\n \"bcc\": [],\n \"type\": \"transactional\",\n \"subject\": \"Your account is ready\",\n \"content\": { \"plain\": \"You can now sign in.\" }\n }'\n```\n\nScale with guardrails\n\n## Clear limits. Account-level control.\n\nFree includes exact recipient-email quotas and safety limits. Purchased Custom capacity remains subject to abuse, reputation, and infrastructure safety restrictions.\n\n**2**domains\n\n**3**senders\n\n**3**senders / domain\n\n**3,000**recipient-emails / monthly cycle\n\n**250**active delivery jobs\n\nAlso enforced on Free: 30 recipient-emails per rolling minute, 300 per hour, and 300 per rolling 24 hours.\n\nPricing v1\n\n## Free and Custom.\n\nExact USD monthly pricing. Taxes may be additional where applicable.\n\nFREE\n\n### $0 / month\n\nCritical and transactional REST API email: 3,000 recipient-emails per monthly cycle, 2 domains, 3 senders total and per domain, one sending key, 250 active deliveries, and 14-day history. Broadcast is disabled.\n\nCUSTOM\n\n### From $10 / month\n\nChoose 10,000 to 2,500,000 recipient-emails and capacity for up to 10–1,000 managed domains. Hard Cap is the only exhaustion mode. Permission-based broadcast requires separate manual approval.\n\n[Build and review exact pricing](https://docs.tenvio.email/plans/)\n\nControlled onboarding\n\n## A focused product email surface.\n\n### Available\n\n- Critical and transactional REST Email API\n- Multiple domains and senders\n- BCC input with address-private history\n- Approved Custom permission-based broadcast\n- Free and Custom Hard Cap plans\n\n### Policy boundary\n\n- Explicit recipient permission\n- Documented audience source\n- No cold outreach\n- No purchased lists\n\nFAQ\n\n## The infrastructure, without the ambiguity.\n\n**What is Tenvio?**\n\nTenvio is product email infrastructure for critical, transactional, and separately approved permission-based broadcast traffic.\n\n**Can one account use multiple domains and senders?**\n\nYes. The Free plan supports 2 domains and 3 senders across the account, with up to 3 senders on one domain.\n\n**Does “accepted” mean delivered to the inbox?**\n\nNo. It means the recipient mail server accepted the message. The receiving system controls filtering and inbox placement.\n\n**How is broadcast enabled?**\n\nA paid Custom plan is necessary but not sufficient. Tenvio separately reviews permission and risk controls before an operator approves broadcast capability. Payment never grants approval.\n\n**Can I use a purchased list or send cold outreach?**\n\nNo. Both are prohibited. Broadcast recipients require a documented permission basis and audience source.\n\nRequest access\n\n## Tell us what your product needs to send.\n\nTenvio is onboarding SaaS products and platforms during controlled onboarding. Share your domain model, transactional use case, and expected volume.\n\n**Keep secrets out of this form.**Do not include API keys, passwords, recipient lists, or message payloads.\n",
"fullPageMarkdown": "Tenvio - Transactional Email API for SaaS Platforms [Skip to content](https://tenvio.email/#main)\n\n[Tenvio](https://tenvio.email/)\n\nTransactional email infrastructure# Transactional email infrastructure for SaaS products and platforms.\n\nSend product email from your own domains—or organize customer-owned domains and senders under one account—with a focused REST API, explicit DNS readiness, durable queues, retries, and delivery history.\n\n[Request access →](https://tenvio.email/?topic=access#request-access)[Read the docs](https://docs.tenvio.email/)\n\nControlled onboarding · Critical, transactional, and approved permission-based traffic.\n\nSend API LivePlatform Controlled onboarding\n\n**POST** /v1/emails202 Accepted\n\n{\n \"from\": \"[email protected]\",\n \"to\": \\[\"[email protected]\"\\],\n \"type\": \"critical\",\n \"subject\": \"New sign-in detected\",\n \"content\": { \"plain\": \"Review this activity.\" }\n}\n\nem\\_7kR4…queueddurably accepted\n\nPlatform resource model**Live · controlled onboarding**\n\nA\n\nACCOUNT**Acme Platform**\n\nDOMAIN · READY**acme.app**\n\nsecurity@billing@\n\nDOMAIN · VERIFYING**customer-one.com**\n\nnotifications@\n\nAutomate domains, DNS readiness, senders, account details, and usage with separate scoped management keys.\n\nOne infrastructure layer## Two ways to build on Tenvio.\n\nUse the same account-level model whether email belongs to your own product or to the businesses your platform serves.\n\n01\n\n### For your own product\n\nOperate multiple product domains and sender identities for authentication, billing, security, and workflow notifications.\n\nyour appdomainssenders\n\n02\n\n### For your platform\n\nProvision customer-owned domains and senders programmatically with scoped Management API credentials and stable external IDs.\n\nyour platformcustomer domainssenders\n\nThe SMTP problem## A successful API call is only the start.\n\nTransactional mail crosses DNS, queues, retries, transport policy, and recipient infrastructure. Treating that path as a black box leaves product teams guessing when users are waiting.\n\n**Before**Request accepted?\n\n**With Tenvio**queuedsendingaccepted\n\nExplicit state, SMTP outcomes, safe diagnostics, and timestamps—without claiming inbox placement.\n\nDomains are first-class## One account. Multiple sending identities.\n\nAdd domains independently, follow the exact DNS records each one needs, and attach multiple senders to the right domain. A sender’s effective state follows its own configuration and its domain’s readiness.\n\n- 2 domains on the Free plan\n- 3 senders per account\n- Up to 3 senders per domain\n- Independent domain and sender state\n\nDOMAINS**2 of 2 used**\n\nAdd domain\n\nA\n\n**acme.app**3 senders · checked 2 min ago\n\nReady\n\nC\n\n**customer.example**1 sender · DNS action required\n\nVerifying\n\nDNS READINESS · CUSTOMER.EXAMPLE**2 of 3 checks passing**\n\nOwnership`_tenvio-verification`**Passed**\n\nDKIM`tenvio1._domainkey`**Pending**\n\nDMARC`_dmarc`**Passed**\n\nACCOUNT**Your SaaS platform**shared quota + scoped keys\n\nDOMAIN**customer-a.com**ready\n\nbilling@alerts@\n\nDOMAIN**customer-b.io**verifying\n\nnotifications@\n\nFor platforms## A resource model built beyond one domain.\n\nThe multi-domain, multi-sender foundation is live. It can represent domains your company owns or domains your customers own without legacy single-domain branches.\n\nManagement API**Live · controlled onboarding**\n\nCreate separate `mg_live_` keys with exact scopes for account and usage reads, plus domain and sender operations. DNS actions use the domain scopes. Sending remains isolated behind `tv_live_` keys.\n\n[Read the Management API guide →](https://docs.tenvio.email/management/)\n\nDirect delivery## Your application to the recipient MX.\n\nTenvio operates the delivery path instead of forwarding sends to another email API provider.\n\n01**Your application**Authenticated API request\n\n02**Tenvio queue**Durable intake + idempotency\n\n03**Delivery engine**Policy + retries\n\n04**Recipient MX**SMTP outcome\n\nA deliberate boundary## Product email with explicit consent.\n\nCritical and transactional messages are available to every plan. Permission-based broadcast requires a paid Custom plan and separate manual approval.\n\n### Available\n\n- Verification and authentication\n- Security and account alerts\n- Receipts and order updates\n- Approved permission-based broadcast\n\n### Prohibited\n\n- Cold outreach\n- Purchased recipient lists\n- Traffic without documented consent\n\nDelivery lifecycle## Every state means something precise.\n\n**queued**\n\nDurably accepted for delivery.\n\n**sending**\n\nAn attempt is in progress.\n\n**deferred**\n\nA temporary failure will retry.\n\n**accepted**\n\nThe recipient SMTP server accepted it.\n\n**bounced**\n\nThe recipient server rejected it permanently.\n\n**failed**\n\nDelivery ended without acceptance.\n\nAccepted does not guarantee inbox placement. The receiving system controls filtering and final presentation.\n\nDeveloper API## One explicit send contract.\n\nCreate an API key, keep it server-side, and send through the live REST endpoint. Every logical email requires an idempotency key so retries do not create duplicate messages.\n\n**POST**Enqueue an email\n\n**GET**List email history\n\n**GET**Inspect email detail\n\n[Read the complete API reference →](https://docs.tenvio.email/)\n\nSend a transactional emailCopy\n\n```\ncurl -X POST https://api.tenvio.email/v1/emails \\\n -H \"Authorization: Bearer YOUR_API_KEY\" \\\n -H \"Content-Type: application/json\" \\\n -H \"Idempotency-Key: 7f4d9b98-63a8-4c43-a958-41d641fe2fd2\" \\\n -d '{\n \"from\": \"[email protected]\",\n \"to\": [\"[email protected]\"],\n \"cc\": [],\n \"bcc\": [],\n \"type\": \"transactional\",\n \"subject\": \"Your account is ready\",\n \"content\": { \"plain\": \"You can now sign in.\" }\n }'\n```\n\nScale with guardrails## Clear limits. Account-level control.\n\nFree includes exact recipient-email quotas and safety limits. Purchased Custom capacity remains subject to abuse, reputation, and infrastructure safety restrictions.\n\n**2**domains\n\n**3**senders\n\n**3**senders / domain\n\n**3,000**recipient-emails / monthly cycle\n\n**250**active delivery jobs\n\nAlso enforced on Free: 30 recipient-emails per rolling minute, 300 per hour, and 300 per rolling 24 hours.\n\nPricing v1## Free and Custom.\n\nExact USD monthly pricing. Taxes may be additional where applicable.\n\nFREE\n\n### $0 / month\n\nCritical and transactional REST API email: 3,000 recipient-emails per monthly cycle, 2 domains, 3 senders total and per domain, one sending key, 250 active deliveries, and 14-day history. Broadcast is disabled.\n\nCUSTOM\n\n### From $10 / month\n\nChoose 10,000 to 2,500,000 recipient-emails and capacity for up to 10–1,000 managed domains. Hard Cap is the only exhaustion mode. Permission-based broadcast requires separate manual approval.\n\n[Build and review exact pricing →](https://docs.tenvio.email/plans/)\n\nControlled onboarding## A focused product email surface.\n\n### Available\n\n- Critical and transactional REST Email API\n- Multiple domains and senders\n- BCC input with address-private history\n- Approved Custom permission-based broadcast\n- Free and Custom Hard Cap plans\n\n### Policy boundary\n\n- Explicit recipient permission\n- Documented audience source\n- No cold outreach\n- No purchased lists\n\nFAQ## The infrastructure, without the ambiguity.\n\n**What is Tenvio?**\n\nTenvio is product email infrastructure for critical, transactional, and separately approved permission-based broadcast traffic.\n\n**Can one account use multiple domains and senders?**\n\nYes. The Free plan supports 2 domains and 3 senders across the account, with up to 3 senders on one domain.\n\n**Does “accepted” mean delivered to the inbox?**\n\nNo. It means the recipient mail server accepted the message. The receiving system controls filtering and inbox placement.\n\n**How is broadcast enabled?**\n\nA paid Custom plan is necessary but not sufficient. Tenvio separately reviews permission and risk controls before an operator approves broadcast capability. Payment never grants approval.\n\n**Can I use a purchased list or send cold outreach?**\n\nNo. Both are prohibited. Broadcast recipients require a documented permission basis and audience source.\n\nRequest access## Tell us what your product needs to send.\n\nTenvio is onboarding SaaS products and platforms during controlled onboarding. Share your domain model, transactional use case, and expected volume.\n\n**Keep secrets out of this form.**Do not include API keys, passwords, recipient lists, or message payloads.\n\nName\n\nWork email\n\nCompany or product\n\nWebsite\n\nUse caseSelect oneEmail for our own productEmail for a SaaS platformBothReport abuseSomething else\n\nMonthly volume OptionalNot sure yetUnder 10,00010,000–100,000100,000–1 millionMore than 1 million\n\nWhat are you building?Describe the transactional messages and how domains belong to your product or customers.\n\nLeave this field empty\n\nSend request →\n",
"markdownStats": {
"images": 0,
"links": 3,
"tables": 0,
"codeBlocks": 1,
"headings": 22
},
"tokens": {
"htmlTokens": 6649,
"markdownTokens": 1738,
"reduction": 4911,
"reductionPercent": 74
},
"score": {
"score": 92,
"grade": "A",
"rubricVersion": 3,
"dimensions": {
"accessibility": {
"score": 100,
"weight": 30,
"grade": "A",
"checks": {
"content_without_js": {
"score": 100,
"weight": 55,
"evidence": "proven",
"details": "Content available without JavaScript"
},
"fast_content_position": {
"score": 100,
"weight": 25,
"evidence": "plausible",
"details": "Main content starts at 18% of HTML"
},
"reasonable_page_size": {
"score": 100,
"weight": 20,
"evidence": "plausible",
"details": "Page size: 26KB"
}
}
},
"aiDiscoverability": {
"score": 82,
"weight": 25,
"grade": "B",
"checks": {
"robots_allows_ai_bots": {
"score": 100,
"weight": 35,
"evidence": "proven",
"details": "All major AI search bots allowed"
},
"supports_markdown_negotiation": {
"score": 60,
"weight": 20,
"evidence": "plausible",
"details": "Application level — .md URL (https://tenvio.email/index.md), <link> tag",
"mechanisms": {
"negotiation": false,
"mdUrl": true,
"linkTag": true,
"linkHeader": false
}
},
"has_sitemap": {
"score": 100,
"weight": 15,
"evidence": "plausible",
"details": "Sitemap found"
},
"has_robots_txt": {
"score": 100,
"weight": 10,
"evidence": "plausible",
"details": "robots.txt exists"
},
"has_llms_txt": {
"score": 100,
"weight": 10,
"evidence": "speculative",
"details": "llms.txt exists and is valid"
},
"has_content_signals": {
"score": 0,
"weight": 10,
"evidence": "speculative",
"details": "No Content-Signal found (robots.txt or HTTP headers)",
"mechanisms": {
"robotsTxt": false,
"httpHeader": false,
"policy": false
}
}
}
},
"structuredData": {
"score": 100,
"weight": 20,
"grade": "A",
"checks": {
"has_schema_org": {
"score": 100,
"weight": 35,
"evidence": "proven",
"details": "JSON-LD found: Organization, WebSite, SoftwareApplication, FAQPage"
},
"has_open_graph": {
"score": 100,
"weight": 20,
"evidence": "plausible",
"details": "All OG tags present"
},
"has_meta_description": {
"score": 100,
"weight": 20,
"evidence": "plausible",
"details": "Meta description: 164 chars"
},
"has_canonical_url": {
"score": 100,
"weight": 15,
"evidence": "plausible",
"details": "Canonical URL present"
},
"has_lang_attribute": {
"score": 100,
"weight": 10,
"evidence": "plausible",
"details": "lang=\"en\""
}
}
},
"semanticHtml": {
"score": 89,
"weight": 15,
"grade": "B",
"checks": {
"proper_heading_hierarchy": {
"score": 100,
"weight": 30,
"evidence": "plausible",
"details": "Clean heading hierarchy"
},
"uses_article_or_main": {
"score": 100,
"weight": 25,
"evidence": "plausible",
"details": "Has both <article> and <main>"
},
"semantic_elements": {
"score": 46,
"weight": 20,
"evidence": "plausible",
"details": "22 semantic elements, 138 divs (ratio: 14%)"
},
"meaningful_alt_texts": {
"score": 100,
"weight": 15,
"evidence": "plausible",
"details": "No informative images (2 decorative)"
},
"low_div_nesting": {
"score": 100,
"weight": 10,
"evidence": "speculative",
"details": "Avg div depth: 1.9, max: 6"
}
}
},
"contentEfficiency": {
"score": 86,
"weight": 10,
"grade": "B",
"checks": {
"token_reduction_ratio": {
"score": 80,
"weight": 40,
"evidence": "speculative",
"details": "74% token reduction (HTML→Markdown)"
},
"content_to_noise_ratio": {
"score": 80,
"weight": 30,
"evidence": "speculative",
"details": "Content ratio: 27.8% (7264 content chars / 26149 HTML bytes)"
},
"reasonable_page_weight": {
"score": 100,
"weight": 20,
"evidence": "speculative",
"details": "HTML size: 26KB"
},
"minimal_inline_styles": {
"score": 100,
"weight": 10,
"evidence": "speculative",
"details": "0/518 elements with inline styles (0.0%)"
}
}
}
}
},
"recommendations": [
{
"id": "add_content_signals",
"priority": "high",
"category": "aiDiscoverability",
"titleKey": "rec.add_content_signals.title",
"descriptionKey": "rec.add_content_signals.description",
"howToKey": "rec.add_content_signals.howto",
"howToStepKeys": null,
"effort": "quick-win",
"estimatedImpact": 2.5,
"maxImpact": 2.5,
"evidence": "speculative",
"checkScore": 0,
"checkDetails": "No Content-Signal found (robots.txt or HTTP headers)"
},
{
"id": "add_semantic_elements",
"priority": "medium",
"category": "semanticHtml",
"titleKey": "rec.add_semantic_elements.title",
"descriptionKey": "rec.add_semantic_elements.description",
"howToKey": "rec.add_semantic_elements.howto",
"howToStepKeys": null,
"effort": "moderate",
"estimatedImpact": 1.6,
"maxImpact": 3,
"evidence": "plausible",
"checkScore": 46,
"checkDetails": "22 semantic elements, 138 divs (ratio: 14%)"
}
],
"llmsTxtPreview": "# Tenvio\n\n> Transactional email infrastructure for SaaS products and platforms, with multiple domains, multiple senders, DNS readiness, queues, retries, and delivery telemetry.\n\n## Main\n- [Tenvio - Transactional Email API for SaaS Platforms](https://tenvio.email): Transactional email infrastructure for SaaS products and platforms, with multiple domains, multiple senders, DNS readin…\n- [Tenvio](https://tenvio.email/)\n- [Request access](https://tenvio.email/?topic=access)\n- [Acceptable Use](https://tenvio.email/acceptable-use.html)\n- [Report abuse](https://tenvio.email/abuse.html)\n\n## Legal\n- [Privacy](https://tenvio.email/privacy.html)\n- [Terms](https://tenvio.email/terms.html)\n\n",
"llmsTxtExisting": "# Tenvio\n\n> Tenvio is server-side email infrastructure for applications that send critical and transactional product email through a REST API, with multi-domain account management.\n\nThe canonical technical source is docs.tenvio.email. Prefer its OpenAPI contract for exact request and response schemas.\n\n## Product\n\n- [Product overview](https://tenvio.email/index.md)\n- [Acceptable use](https://tenvio.email/acceptable-use.md)\n- [Privacy](https://tenvio.email/privacy.md)\n- [Terms](https://tenvio.email/terms.md)\n- [Abuse](https://tenvio.email/abuse.md)\n\n## Developer resources\n\n- [AI-readable documentation index](https://docs.tenvio.email/llms.txt)\n- [Full technical documentation](https://docs.tenvio.email/llms-full.txt)\n- [Getting started](https://docs.tenvio.email/getting-started/index.md)\n- [Sending API](https://docs.tenvio.email/sending/index.md)\n- [Plans and limits](https://docs.tenvio.email/plans/index.md)\n- [OpenAPI YAML](https://docs.tenvio.email/openapi.yaml)\n- [OpenAPI JSON](https://docs.tenvio.email/openapi.json)\n\n## Complete product context\n\n- [Full product context](https://tenvio.email/llms-full.txt)",
"emergingProtocols": {
"oauthProtectedResource": {
"exists": false,
"url": "https://tenvio.email/.well-known/oauth-protected-resource"
},
"oauthDiscovery": {
"exists": false,
"url": "https://tenvio.email/.well-known/oauth-authorization-server"
},
"mcpServerCard": {
"exists": false,
"url": "https://tenvio.email/.well-known/mcp/server-card.json",
"draft": true
},
"a2aAgentCard": {
"exists": false,
"url": "https://tenvio.email/.well-known/agent-card.json"
},
"apiCatalog": {
"exists": false,
"url": "https://tenvio.email/.well-known/api-catalog"
},
"agentSkills": {
"exists": false,
"url": "https://tenvio.email/.well-known/agent-skills/index.json",
"draft": true
},
"count": 0,
"total": 6
},
"botAccess": {
"probed": true,
"bot": "OAI-SearchBot",
"controlStatus": 200,
"botStatus": 200,
"discriminates": false,
"refusedAsBot": false,
"edge": null,
"verifiable": false,
"detail": "This origin answers OAI-SearchBot exactly as it answers any other client (200). No edge-level filtering of AI crawlers observed."
},
"snippets": [
{
"id": "add_content_signals",
"title": "Add Content-Signal directives",
"description": "Content-Signal tells AI agents how they may use your content. The canonical location is robots.txt, but you can also expose it as an HTTP header from any stack.",
"language": "txt",
"code": "User-agent: *\nContent-Signal: search=yes, ai-input=yes, ai-train=no",
"filename": "/robots.txt",
"stacks": [
{
"id": "robots",
"label": "robots.txt",
"language": "txt",
"filename": "/robots.txt",
"code": "User-agent: *\nContent-Signal: search=yes, ai-input=yes, ai-train=no"
},
{
"id": "nginx",
"label": "Nginx",
"language": "nginx",
"filename": "server block",
"code": "# Inside your server { } block:\nadd_header Content-Signal \"search=yes, ai-input=yes, ai-train=no\" always;"
},
{
"id": "apache",
"label": "Apache",
"language": "apache",
"filename": ".htaccess",
"code": "# In .htaccess (or VirtualHost):\nHeader set Content-Signal \"search=yes, ai-input=yes, ai-train=no\""
},
{
"id": "wordpress",
"label": "WordPress",
"language": "php",
"filename": "functions.php",
"code": "<?php\n// In your theme's functions.php or a small mu-plugin\nadd_action('send_headers', function () {\n header('Content-Signal: search=yes, ai-input=yes, ai-train=no');\n});\n\n// Optional: also append the directive to the dynamic robots.txt\nadd_filter('robots_txt', function ($output) {\n return $output . \"\\nContent-Signal: search=yes, ai-input=yes, ai-train=no\\n\";\n}, 10, 1);"
},
{
"id": "nextjs",
"label": "Next.js",
"language": "typescript",
"filename": "middleware.ts",
"code": "// middleware.ts (Next.js 13+ App Router or Pages Router)\nimport { NextResponse } from 'next/server';\nexport function middleware() {\n const res = NextResponse.next();\n res.headers.set(\n 'Content-Signal',\n 'search=yes, ai-input=yes, ai-train=no'\n );\n return res;\n}\nexport const config = { matcher: '/:path*' };"
},
{
"id": "cloudflare",
"label": "Cloudflare Workers",
"language": "javascript",
"filename": "worker.js",
"code": "// Cloudflare Worker that proxies your origin and adds the header\nexport default {\n async fetch(request, env, ctx) {\n const res = await fetch(request);\n const newRes = new Response(res.body, res);\n newRes.headers.set(\n 'Content-Signal',\n 'search=yes, ai-input=yes, ai-train=no'\n );\n return newRes;\n },\n};"
},
{
"id": "express",
"label": "Express / Fastify",
"language": "javascript",
"filename": "server.js",
"code": "// Express\napp.use((req, res, next) => {\n res.setHeader('Content-Signal', 'search=yes, ai-input=yes, ai-train=no');\n next();\n});\n\n// Fastify\nfastify.addHook('onSend', (request, reply, payload, done) => {\n reply.header('Content-Signal', 'search=yes, ai-input=yes, ai-train=no');\n done();\n});"
}
]
}
]
}
Use our API to get this programmatically (coming soon)
This JSON is for internal use — unlike the Markdown and llms.txt files, it's not meant to be uploaded to your site. Save it as a baseline to track your score over time, share it with your dev team, or integrate it into your CI/CD pipeline.
Share your results
Or ask an AI to help you fix it
Want a second opinion?
Cloudflare runs a free scanner too, and it asks a different question. It scores what your site publishes for agents to call — MCP server cards, Agent Skills, API catalogs, DNS records. We score whether an agent can reach, read and understand your content. A site can do well on one and poorly on the other, so expect two different numbers: they are answers to two different questions, and both are worth knowing.
Scan tenvio.email with CloudflareEmbed your badge
Add this badge to your site. It updates automatically as your AI-readiness score changes.
<script src="https://agentready.md/badge.js" data-id="459f1d85-f40f-46e3-8b96-c867c5b15750" data-domain="tenvio.email"></script>
[](https://agentready.md/r/tenvio.email)
Coming soon: Full Domain Analysis
Crawl your entire domain, generate llms.txt, and monitor your AI-readiness score over time. Join the waitlist to be notified.
You're on the list! We'll notify you when it launches.