Finalizing the report
Preparing the stored Is Agentic score
Preparing the stored Is Agentic score
elevenlabs.io
These checks describe whether an ordinary agent can enter, read, and operate the public site.
Agents can reach the site
Crawler access and bot defenses.
Core content is available
Useful content remains accessible without a fragile browser-only path.
Navigation fails safely
Redirects and missing pages give agents a recoverable path.
Controls are understandable
Forms and interactive controls expose usable names and structure.
The public website is always evaluated. Optional surfaces appear when the scan finds positive evidence that they apply.
Strong
Weighted across 15 applicable checks
Strong
Weighted across 12 applicable checks
Needs work
Weighted across 3 applicable checks
Ready with gaps
Weighted across 1 applicable check
Critical access gaps come first, followed by other applicable readiness gaps.
Keep the correct HTTP 404 status. The remaining requirement is a Markdown error body when agents request Accept: text/markdown. Include at least 20 characters explaining the error and a link to your docs, sitemap, or llms.txt. Verify with curl -sS -L -i -H 'Accept: text/markdown' https://yourdomain.com/some-path-that-does-not-exist. Check both the final 404 status and the Markdown body with Content-Type: text/markdown. Checking the status alone does not verify the missing requirement.
Serve at least 500 characters of meaningful homepage content in raw HTML. Add a clear H1, keep deeper heading levels sequential, and remove excessive non-content markup.
Declare scoped API permissions where machines can read them: named OAuth scopes in your OpenAPI security schemes, or scopes_supported in RFC 9728 protected-resource metadata. Prose descriptions of roles help humans, but agents need the machine-readable declaration to request least-privilege access.
Return standard rate-limit headers on your API responses (the RFC RateLimit headers, plus Retry-After on a 429) so agents can self-throttle in real time, and document the conventions alongside your API.
Add Organization JSON-LD that includes both contactPoint (with email/phone and contactType) and address (PostalAddress). This lets AI verify your business legitimacy and answer contact queries.
Checks are grouped by relevance for App sites.
9080 chars with H1, but 2.3% content ratio is below the 5% target
How to pass
Serve at least 500 characters of meaningful homepage content in raw HTML. Add a clear H1, keep deeper heading levels sequential, and remove excessive non-content markup.
Site accessible to 6 AI agent user-agents
No meta-refresh stubs, JavaScript-redirect stubs, or cross-domain hops across 1 checked page
OpenAPI spec found at https://api.elevenlabs.io/openapi.json (version: 3.1.0)
Canonical URL serves text/markdown and text/html via Accept negotiation with Vary: Accept
OAuth authorization server metadata at https://help.elevenlabs.io/mcp/oauth
Scoped permissions described at https://elevenlabs.io, but no machine-readable scope declaration found (OpenAPI oauth2 scopes or RFC 9728 scopes_supported)
How to pass
Declare scoped API permissions where machines can read them: named OAuth scopes in your OpenAPI security schemes, or scopes_supported in RFC 9728 protected-resource metadata. Prose descriptions of roles help humans, but agents need the machine-readable declaration to request least-privilege access.
API returns JSON error responses (404 at https://api.elevenlabs.io)
The nonexistent path https://elevenlabs.io/__ora-404-probe-kjn2yxad correctly returns HTTP 404. Partial credit: no Markdown error body was detected.
How to pass
Keep the correct HTTP 404 status. The remaining requirement is a Markdown error body when agents request Accept: text/markdown. Include at least 20 characters explaining the error and a link to your docs, sitemap, or llms.txt. Verify with curl -sS -L -i -H 'Accept: text/markdown' https://yourdomain.com/some-path-that-does-not-exist. Check both the final 404 status and the Markdown body with Content-Type: text/markdown. Checking the status alone does not verify the missing requirement.
Valid sitemap found at https://elevenlabs.io/sitemap.xml with multiple sitemaps entries
Rich JSON-LD identity: Organization with name, description, url, and sameAs/logo/address (2 blocks)
Pricing page found at /pricing
Documentation site found at https://elevenlabs.io
All metadata signals present: canonical URL, lang="en", og:image, og:type
Organization schema found but missing: contactPoint
How to pass
Add Organization JSON-LD that includes both contactPoint (with email/phone and contactType) and address (PostalAddress). This lets AI verify your business legitimacy and answer contact queries.
All trust anchor pages verified: About, Contact, Privacy
All 1 measured page fit an agent context budget (largest ~2K tokens)
REST API documentation found at https://elevenlabs.io/docs/overview/intro.md. Best-of-protocols score: 7/7.
Onboarding signals described but not verified live: free tier available, self-serve key generation, sandbox/test environment
How to pass
Offer a free tier or trial, self-serve API key generation, and a sandbox environment. Agents can't fill out 'contact sales' forms.
MCP server detected at https://help.elevenlabs.io/mcp; it requires authentication. Presence is verified (5/6), but Ora could not inspect its tools or verify access scopes without credentials.
How to pass
Keep authentication enabled. Verify tool listing with an authorized MCP client. This unauthenticated scan cannot establish whether protected tools are missing or unusable.
No REST rate-limit headers found on probed endpoints
How to pass
Return standard rate-limit headers on your API responses (the RFC RateLimit headers, plus Retry-After on a 429) so agents can self-throttle in real time, and document the conventions alongside your API.
OpenAPI defines a typed error schema in components.schemas and 4xx/5xx responses reference it
API versioning strategy found (URL versioning) with sunset/deprecation markers documented
CLI tool mentioned in llms.txt
How to pass
Publish an official CLI tool on npm, PyPI, or Homebrew. A CLI lets agents and developers script interactions with your product without building API integrations from scratch.
94% of operations define typed response schemas, 88% use application/json
REST: agent-friendly schema (391 operations, 100% with operationIds, 100% documented by description or summary)
Compatible: 391/391 ops with IDs, 389/391 with typed schemas
Agent discovered 3 developer-resource types by name (MCP server, auth docs, API docs) across 6 pages
elevenlabs.io appears at position #1 in a clean brand-name search for "ElevenLabs agent tools" (5 total matches)
Wikipedia "ElevenLabs" and Wikidata Q116798355 both verified - domain confirmed on both sources
NPM package found: elevenlabs - ""
17 official skills published on skills.sh - 64,675 total installs (skills.sh/elevenlabs)
MCP manifest has name and description but no icon at /.well-known/mcp/server-card.json
How to pass
Give your MCP server-card (at /.well-known/mcp/server-card.json) a display name, an icon or logo, and a description - all three together are what reads as a complete, branded listing agents can present.
Agent Skills index (agentskills.io) found at /.well-known/agent-skills/index.json with 7 skill(s)
pricing.md found at /pricing.md but thin (22 lines) - add plan tiers, prices, and feature breakdowns
How to pass
Create a /pricing.md file with your pricing tiers, features, and limits in plain markdown. This lets AI agents compare costs and recommend plans without scraping HTML pricing pages.
MCP server discoverable via server-card.json at /.well-known/mcp/
Agent mode view found at ?mode=agent (2 signals: api, agent)
How to pass
Add a ?mode=agent query parameter to your homepage that returns a structured, machine-readable view with API endpoints, authentication info, and key capabilities instead of marketing HTML.
RFC 8288 Link header advertises: describedby, service-doc, api-catalog
100% of 2 sampled sitemap entries carry lastmod; newest is 20 day(s) old
Found the llms.txt at https://elevenlabs.io/llms.txt.
The llms.txt is well-formatted with markdown links, but at 207,732 characters it exceeds the 30,000-character recommendation for a navigation index.
How to pass
Format your llms.txt as a navigation index: start with a markdown heading, include markdown links to deeper resources, and keep it under 30,000 characters. If you have more to say, move long-form content into /llms-full.txt or per-section files (e.g. /docs/llms.txt, /api/llms.txt) and link to them from the main index.
Agent instruction with when-to-use guidance at /agent.txt
Rich skills.sh presence - 17 skills, 64,675 installs. Agents can understand capabilities in depth
Strong entity linking via sameAs: linkedin.com, github.com, wikipedia.org, wikidata.org
Some extended schema types found: BreadcrumbList - add FAQPage, Service, or AggregateRating for full coverage
How to pass
Expand your JSON-LD beyond Organization/WebSite. Add FAQPage for common questions, Service or Product for offerings, AggregateRating or Review for social proof, and BreadcrumbList for navigation context.
All 5 probed llms.txt links resolve to real content
Code fences balanced across 1 markdown document
Developer portal found at /developers
api-catalog linkset[0] has no 'item' entries
How to pass
Publish an API catalog at /.well-known/api-catalog per RFC 9727. Serve it with Content-Type: application/linkset+json;profile="https://www.rfc-editor.org/info/rfc9727" and include a 'linkset' array with item entries pointing to your OpenAPI specs and service descriptions.
Returns markdown when requested via Accept header
docs MCP is gated behind authentication - this defeats the purpose of a docs MCP for agent discovery
How to pass
Protect your MCP server with OAuth 2.0 authentication. Publish authorization server metadata at /.well-known/oauth-authorization-server for automatic agent auth flows.
RFC 8414 OAuth metadata for docs MCP: issuer=https://help.elevenlabs.io/mcp/oauth, auth and token endpoints present; client registration: CIMD (client_id_metadata_document_supported)
OAuth metadata for docs MCP supports PKCE S256 code challenge
RFC 9728 metadata at https://api.elevenlabs.io: resource=https://api.us.elevenlabs.io/v1/mcp, authorization_servers (1), scopes_supported (7), bearer_methods_supported
PRM + AS metadata both present (PRM discovered at https://api.elevenlabs.io) (AS metadata fetched from advertised origin https://api.us.elevenlabs.io) but AS metadata has no agent_auth block
How to pass
Publish RFC 9728 protected-resource metadata at /.well-known/oauth-protected-resource on your resource server (the host that actually serves the API, e.g. api.<apex>) with resource and authorization_servers. Publish RFC 8414 authorization-server metadata at /.well-known/oauth-authorization-server on the AS origin, and include the WorkOS auth.md agent_auth block with identity_endpoint, identity_types_supported drawn from the spec enum (anonymous, identity_assertion, service_auth - the assertion variant, the ID-JAG URN urn:ietf:params:oauth:token-type:id-jag, belongs inside identity_assertion.assertion_types_supported, not at the top level), and the identity_assertion.assertion_types_supported block when you advertise that type, so agents can check their assertion shape is accepted before minting. Cross-link by listing the AS origin in PRM authorization_servers, and point agent_auth.skill back at your published /auth.md. Spec: https://github.com/workos/auth.md.
Cursor-based pagination found in OpenAPI spec response schemas or query parameters
202 Accepted responses found but no clear polling pattern (Location header, /jobs path, or job_id schema)
How to pass
For long-running operations, return 202 Accepted and point agents at where to poll for the result (a status/location reference plus a job identifier in the body), documented in your OpenAPI spec, so work that does not finish in one request is still followable.
SDK packages found in npm, pypi
How to pass
Publish official SDK packages across multiple language ecosystems (npm, PyPI, Go modules, RubyGems). Auto-generate them from your OpenAPI spec using tools like openapi-generator. For each package set the project URL or homepage to your product domain (package.json repository/homepage, PyPI Home-Page or project_urls, RubyGems homepage_uri) - this is how agents verify the package is your official SDK.
MCP server card found at https://elevenlabs.io/.well-known/mcp/server-card.json but missing fields:
How to pass
Publish a server card at /.well-known/mcp/server-card.json describing your MCP server. Required fields: name, description, version, serverUrl, tools[]. This lets agents preview your server before opening a transport connection.
Batch endpoint found in OpenAPI spec (/batch path)
Server HTML is a well-structured document (main=true, landmarks=3/4, h1=1, maxHeadingSkip=1).
189 native controls, 34 non-native div-soup affordances (85% native).
189/189 interactive elements have a computable accessible name (100%).
3/3 form controls have an associated label (100%).
No hidden instruction text detected in accessibility-tree attributes or off-screen content.
What does elevenlabs.io do and who is it for? Explain it back to me.
Sign me up for Vercel product updates and marketing emails.
Unsubscribe anytime. Privacy Notice
Source: Ora API
What does elevenlabs.io do and who is it for? Explain it back to me.
15 steps3 reasoning steps5 searches
The agent successfully assembled a comprehensive explanation of ElevenLabs' business, pricing, and competitive positioning, but relied heavily on external sources rather than the site itself. The marketing website proved difficult to extract information from due to heavy client-side rendering, forcing the agent to depend on web search results and third-party pricing/comparison guides to answer the task. The site's technical documentation and product pages exist but were not content-bearing in the trajectory.