---
title: "Agent readiness score for virti.com: 59/100 (C, Needs work)"
description: "virti.com scores 59/100 (Needs work). Strongest layer: Access at 79%; weakest: Discovery at 23%. Biggest single fix: webmcp support (about +13.1 points)."
canonical: https://outserp.ai/agent-ready/virti.com
markdown: https://outserp.ai/api/machine-content?path=%2Fagent-ready%2Fvirti.com
site: Outserp
---
# Agent readiness score for virti.com: 59/100 (C, Needs work)

> virti.com scores 59/100 (Needs work). Strongest layer: Access at 79%; weakest: Discovery at 23%. Biggest single fix: webmcp support (about +13.1 points).

Scanned: 2026-09-08 · rank 5 of 5 · JSON: https://outserp.ai/api/agent-ready/virti.com · Badge: https://outserp.ai/api/agent-ready/badge/virti.com.svg

## Layers

- Discovery (weight 20): 23% — 1.4/6 points
- Access (weight 30): 79% — 34/43 points
- Usability (weight 40): 63% — 10.7/17 points
- Payments (weight 10): n/a — 0/0 points

## Surfaces

- website: 70% (20/32 checks)
- api: not detected
- auth: not detected
- mcp: not detected

## Fix these first

1. **WebMCP support** (`webmcp`, ≈ +13.1): Register 3–10 verb-named tools with described JSON schemas on document.modelContext from an inline <head> script; mark reads readOnlyHint: true.
2. **Wikipedia / Wikidata entity presence** (`wikipedia-presence`, ≈ +7.4): Create a Wikidata item with official website (P856) = your domain; pursue a Wikipedia article once independent coverage exists.
3. **robots.txt AI crawler policy** (`robots-ai-policy-quality`, ≈ +3.7): Add named User-agent groups for GPTBot, ClaudeBot, PerplexityBot and Google-Extended (Allow), decide explicitly about CCBot / Bytespider, and optionally add Content-Signal.
4. **ARD discovery catalog** (`ard-catalog`, ≈ +3.7): Publish an Agentic Resource Discovery catalog with typed entries and a trust manifest (agenticresourcediscovery.org).
5. **Agent-friendly 404s** (`agent-friendly-404`, ≈ +2.6): Return 404 for unknown paths and include links to /sitemap.xml, /llms.txt or your docs index in the 404 body (HTML and markdown).
6. **Agent instruction / when-to-use** (`agent-instruction`, ≈ +2.3): Add a "When to use <brand>" section naming best-fit jobs and a "How an agent should use <brand>" section with the exact surfaces to call.
7. **NPM/PyPI SDK package** (`npm-sdk-package`, ≈ +2.2): Publish an SDK or CLI under your brand scope and set the package homepage / repository to your domain so it is verifiably yours.
8. **Agent discovery file** (`agent-discovery-file`, ≈ +1.6): Publish /.well-known/ard.json (Agentic Resource Discovery) or at least /.well-known/agent-card.json, and link it from llms.txt.

## Every check

| Status | Check | Points | Evidence |
| --- | --- | --- | --- |
| PARTIAL | robots.txt AI crawler policy (`robots-ai-policy-quality`) | 1/2 | robots.txt is open by default (User-agent: *) but declares no AI-crawler policy. |
| FAIL | ARD discovery catalog (`ard-catalog`) | 0/1 | No /.well-known/ard.json (and no legacy /.well-known/ai-catalog.json). |
| N/A | Brand name discoverability (`brand-search-accuracy`) | — | Search-based check; runs in the full audit. |
| N/A | Developer resource discoverability (`agentic-search-specific`) | — | Search-based check; runs in the full audit. |
| FAIL | Wikipedia / Wikidata entity presence (`wikipedia-presence`) | 0/2 | No Wikidata item mentions virti.com. |
| PARTIAL | NPM/PyPI SDK package (`npm-sdk-package`) | 0.4/1 | Packages named like the brand exist (time-virti-58, virti-microapp-sdk) but none links back to virti.com. |
| N/A | Listed in MCP registries (`mcp-registry-listed`) | — | No MCP server. |
| PASS | Content without JavaScript (`content-no-js`) | 3/3 | 9225 chars of raw-HTML text, 1 H1 + 35 other headings, 7.5% content ratio. |
| PASS | Not blocked by bot detection (`bot-detection`) | 2/2 | Homepage reachable for 6 AI User-Agents. |
| PASS | Agent crawler reachability (`agent-crawler-reachability`) | 2/2 | No AI crawler is disallowed in robots.txt (6 checked). |
| PASS | robots.txt agent-user policy (`robots-agent-user-policy`) | 2/2 | User-triggered agents are allowed. |
| PASS | Redirect hygiene (`redirect-hygiene`) | 1/1 | No meta-refresh, JS-redirect stubs or cross-domain hops across 6 pages. |
| PASS | Content behind auth (`docs-auth-gate`) | 2/2 | All 6 sampled pages are publicly readable. |
| PASS | Page token budget (`page-token-budget`) | 1/1 | All 6 measured pages fit (largest ~2K tokens). |
| PASS | Sitemap exists (`sitemap`) | 2/2 | Valid sitemap at https://virti.com/sitemap.xml with 113 entries. |
| PASS | Sitemap freshness (lastmod) (`sitemap-lastmod`) | 1/1 | 100% of entries carry lastmod; newest is 0 day(s) old. |
| PASS | llms.txt exists (`llms-txt-exists`) | 1/1 | Found https://virti.com/llms.txt (5302 characters). |
| PASS | llms.txt formatting (`llms-txt-formatting`) | 2/2 | Starts with a heading, 33 markdown links, 60 lines. |
| N/A | llms.txt links resolve (`llms-txt-links-resolve`) | — | llms.txt links are all external. |
| FAIL | Agent instruction / when-to-use (`agent-instruction`) | 0/3 | No when-to-use guidance in llms.txt or agents.md. |
| FAIL | Agent discovery file (`agent-discovery-file`) | 0/2 | No agent discovery file at any conventional path. |
| FAIL | A2A agent card (`a2a-agent-card`) | 0/2 | No A2A agent card at /.well-known/agent-card.json. |
| FAIL | Agent Skills index (`agent-skills-index`) | 0/2 | No /.well-known/agent-skills/index.json. |
| PASS | Pricing info accessible (`pricing-info`) | 3/3 | https://virti.com/pricing exposes 6 price signals in raw HTML. |
| FAIL | pricing.md exists (`pricing-md`) | 0/2 | No /pricing.md. |
| PASS | JSON-LD structured data (`json-ld`) | 4/4 | Organization with name, description, url + sameAs/logo (3 block(s)). |
| PARTIAL | Organization schema completeness (`org-schema-completeness`) | 0/2 | Organization schema found but missing: contactPoint, address. |
| PASS | JSON-LD entity linking (sameAs) (`json-ld-entity-linking`) | 2/2 | sameAs links to 2 authority profiles. |
| PARTIAL | Schema type breadth (`schema-type-breadth`) | 1/2 | Some extended types found: FAQPage. |
| PASS | Metadata completeness (`metadata-completeness`) | 2/2 | All four metadata signals present. |
| PASS | Trust anchor pages (`trust-anchors`) | 2/2 | About, Contact and Privacy verified. |
| FAIL | Markdown agent docs (`markdown-negotiation`) | 0/1 | Homepage returned text/html; charset=utf-8 for Accept: text/markdown. |
| N/A | Markdown content negotiation (Vary) (`markdown-negotiation-vary`) | — | No markdown negotiation on the homepage. |
| FAIL | Markdown URL fallback (.md) (`markdown-url-fallback`) | 0/2 | /index.md does not return markdown. |
| FAIL | Markdown alternate link (`markdown-link-alternate`) | 0/1 | No markdown alternate advertised on the homepage. |
| N/A | Markdown frontmatter metadata (`markdown-frontmatter`) | — | No served markdown found. |
| FAIL | Bot-UA markdown serving (`agent-ua-markdown`) | 0/1 | No probed AI User-Agent receives markdown. |
| PASS | Code fence validity (`code-fence-validity`) | 1/1 | Code fences balanced across 1 markdown document(s). |
| FAIL | HTTP Link headers (RFC 8288) (`link-headers-discovery`) | 0/1 | No Link response headers on the homepage. |
| N/A | OpenAPI spec published (`openapi-spec`) | — | No API advertised on the site. |
| N/A | API catalog (RFC 9727) (`api-catalog-rfc9727`) | — | No API surface; catalog not expected. |
| N/A | Public API/docs linked from homepage (`public-api-docs`) | — | No developer surface linked or detected. |
| N/A | Developer portal (`developer-portal`) | — | No developer surface. |
| N/A | MCP well-known discovery (`mcp-well-known-discovery`) | — | No MCP server. |
| PARTIAL | Agent-friendly 404s (`agent-friendly-404`) | 1/2 | Real 404 status, but the body gives agents nothing to recover with. |
| FAIL | Web Bot Auth directory (`web-bot-auth-directory`) | 0/2 | No /.well-known/http-message-signatures-directory. |
| N/A | JSON error responses (`json-error-responses`) | — | No API surface. |
| N/A | API schema completeness (`api-schema-analysis`) | — | No OpenAPI operations. |
| N/A | Function calling compatibility (`function-calling-compat`) | — | No OpenAPI operations. |
| N/A | REST typed error model (`api-error-model`) | — | No OpenAPI operations. |
| N/A | REST versioning / deprecation policy (`api-versioning-policy`) | — | No API surface. |
| N/A | REST pagination pattern (`pagination-shape`) | — | No API surface. |
| N/A | REST async-job pattern (`async-job-pattern`) | — | No API surface. |
| N/A | REST response schema coverage (`response-schema-coverage`) | — | No OpenAPI operations. |
| N/A | Rate limit response headers (`rate-limit-headers`) | — | No API surface. |
| N/A | REST batch / bulk endpoint (`batch-endpoints`) | — | No API surface. |
| N/A | Idempotency-Key support (`idempotency-key-support`) | — | No API surface. |
| N/A | Sandbox / test environment (`sandbox-environment`) | — | No API surface. |
| N/A | OAuth 2.0 support (`oauth-support`) | — | No API, MCP or auth surface. |
| N/A | OAuth Protected Resource metadata (RFC 9728) (`oauth-protected-resource`) | — | No API, MCP or auth surface. |
| N/A | Scoped permissions (`scoped-permissions`) | — | No API, MCP or auth surface. |
| N/A | auth.md exists (`auth-md-exists`) | — | No API, MCP or auth surface. |
| N/A | auth.md structure (`auth-md-structure`) | — | No auth surface. |
| N/A | Agent auth discovery metadata (`agent-auth-discovery-metadata`) | — | No API, MCP or auth surface. |
| N/A | Agent auth WWW-Authenticate hint (`agent-auth-www-authenticate`) | — | No API, MCP or auth surface. |
| N/A | agent_auth endpoints reachable (`agent-auth-endpoints-reachable`) | — | No auth surface. |
| N/A | Agent onboarding friction (`onboarding-friction`) | — | No API, MCP or auth surface. |
| N/A | MCP server / manifest (`mcp-server`) | — | No MCP server advertised or detected. |
| N/A | MCP server card (`mcp-server-card`) | — | No MCP server. |
| N/A | MCP server identity (`mcp-server-identity`) | — | No MCP server. |
| N/A | MCP modern transport (`mcp-transport-modern`) | — | No MCP server. |
| N/A | MCP tool listing (`mcp-tool-listing`) | — | No MCP server. |
| N/A | MCP tool descriptions (`mcp-tool-descriptions`) | — | No tool list. |
| N/A | MCP tool naming (`mcp-tool-naming`) | — | No tool list. |
| N/A | MCP parameter schemas (`mcp-param-schemas`) | — | No tool list. |
| N/A | MCP tool annotations (`mcp-tool-annotations`) | — | No tool list. |
| N/A | MCP error handling (`mcp-error-handling`) | — | No completed MCP handshake. |
| N/A | MCP resources exposed (`mcp-resource-listing`) | — | No completed MCP handshake. |
| N/A | MCP resource quality (`mcp-resource-quality`) | — | No resources listed. |
| N/A | MCP auth mechanism (`mcp-auth-mechanism`) | — | No MCP server. |
| N/A | MCP OAuth metadata (`mcp-oauth-metadata`) | — | No MCP server. |
| N/A | MCP PKCE S256 support (`mcp-pkce-s256`) | — | No MCP server. |
| FAIL | CLI tool available (`cli-tool`) | 0/3 | No CLI tool found. |
| N/A | Multi-language SDK packages (`rest-sdk-packages`) | — | No API surface. |
| PARTIAL | Accessible document structure (`ax-document-structure`) | 2.7/3 | main=true, landmarks=4/4, h1=1, maxHeadingSkip=3. |
| PASS | Native interactive controls (`ax-native-controls`) | 3/3 | 84 native controls, 0 non-native div/span affordances (100% native). |
| PASS | Accessible names on controls (`ax-accessible-names`) | 2/2 | 84/84 interactive elements have a computable accessible name (100%). |
| N/A | Form control labeling (`ax-form-labeling`) | — | No form controls on the homepage. |
| PASS | Accessibility-tree injection safety (`ax-tree-injection-safe`) | 2/2 | No hidden instruction text detected in accessibility-tree attributes or off-screen content. |
| FAIL | WebMCP support (`webmcp`) | 0/5 | No WebMCP support detected: no tool-attribute forms and no document.modelContext / registerTool usage (scanned 8 of 10 same-origin scripts). |

Fix-with-AI prompt (paste into a coding agent): https://outserp.ai/api/agent-ready/virti.com/fix-prompt
Full audit with agent journeys and model-graded checks: https://outserp.ai/agent-ready/virti.com
