agentready
agentreadyaudited 2026-10-14
0255075100
72
grade C · 100% coverage

Report for

en.wikipedia.org

https://en.wikipedia.org/wiki/Web_browservisit site ↗

  1. Find

    friction

  2. Understand

    clear

  3. Act

    friction

Survival
85
Can an agent read and act at all?
Superpower
0
WebMCP tools exposed
If WebMCP added
87
Headline with WebMCP at full marks

Do this first

ranked by severity × category weight

  1. Form semanticshigh

    Unlabelled form controls

    Associate every control with a <label> or aria-label.

    Show the fix

    Labels are the primary signal for what a field wants.

    <label for="search">Search Wikipedia</label>
    <input id="search" name="search" type="search">
  2. Form semanticshigh

    Controls outside a <form>

    Wrap controls in a <form> with an explicit submit control.

    Show the fix

    Agents submit forms via standard HTML — not div onclick handlers.

    <form action="/submit" method="post">
      …fields…
      <button type="submit">Submit</button>
    </form>
  3. WebMCP capabilityhigh

    No WebMCP tools — this is the biggest single upgrade available

    Declare your "Search" form as a tool

    Show the fix

    The declarative attributes are the cheapest path: the browser synthesizes the JSON Schema from the controls you already have.

    <form action="/w/index.php" id="searchform" class="cdx-search-input cdx-search-input--has-end-button" toolname="searchform" tooldescription="Search">
      <input id="searchInput" name="search" type="search" toolparamdescription="Search Wikipedia">
      <!-- …your existing labels and submit button stay as they are… -->
    </form>
    Reference ↗

Category breakdown

  • Agent discovery

    3 of 5 discovery signals present.

    60

    weight 18% · confidence high

  • Machine-readable structure

    The page describes itself well to machines.

    90

    weight 18% · confidence high

  • Access & renderability

    Agents can read this page without a browser.

    100

    weight 18% · confidence high

  • Form semantics

    Forms are labelled and typed — an agent can fill them.

    76

    weight 16% · confidence high

  • Actionability

    Actions are real links, buttons and forms.

    99

    weight 15% · confidence high

  • WebMCP capabilitysuperpower

    No WebMCP tools — the single biggest upgrade available here.

    0

    weight 15% · confidence medium

Find

friction

Can an agent locate this page and its entry points?

Agent discovery

60/100

3 of 5 discovery signals present.

lowNo llms.txtAn optional Markdown file that tells LLM-based agents what the site is and where the important pages are. Cheap to add; adoption by agents is still emerging.▶

Evidence

  • llms.txt · https://en.wikipedia.org/llms.txt not found

Fix

Add /llms.txt (Markdown).

Five minutes of work; some agents and Lighthouse's agentic audit already look for it.

# en.wikipedia.org

> One-paragraph description of what this site is for and who it serves.

## Key pages

- [Home](https://en.wikipedia.org/): what visitors can do here
- [Docs](https://en.wikipedia.org/docs): how to use the product
Reference ↗
lowNo MCP discovery filesNothing under /.well-known tells an agent whether this site exposes an MCP server. Only relevant if you run one — but if you do, this is how agents find it.▶

Evidence

  • well-known · https://en.wikipedia.org/.well-known/oauth-protected-resource, mcp.json, mcp/server-card.json not found

Fix

If you host an MCP server, publish /.well-known/oauth-protected-resource.

Required by the MCP authorization spec; clients use it to locate your authorization server.

{
  "resource": "https://en.wikipedia.org/mcp",
  "authorization_servers": ["https://auth.en.wikipedia.org"],
  "scopes_supported": ["read"],
  "bearer_methods_supported": ["header"]
}
Reference ↗
3 things already working
  • ✓robots.txt present and permits agents — Crawlers and user agents are allowed to read this page.
  • ✓Sitemap available — Declared in robots.txt: https://en.wikipedia.org/w/rest.php/site/v1/sitemap/0
  • ✓Feed advertised — An RSS/Atom feed is declared, giving agents a structured view of new content.

Understand

clear

Can it tell what the page is without guessing?

Machine-readable structure

90/100

The page describes itself well to machines.

lowMissing meta descriptionTitle and description are the first summary an agent reads when deciding whether this page is relevant.▶

Evidence

  • raw-html · title: "Web browser - Wikipedia"; description: none

Fix

Add a specific <title> and meta description.

Cheap, universal, and used by every agent and crawler.

<title>What this page is — en.wikipedia.org</title>
<meta name="description" content="One sentence saying what a visitor (or agent) can do here.">
3 things already working
  • ✓Structured data: Article — 1 valid JSON-LD block. Agents can read entities and their properties directly.
  • ✓Semantic landmarks present — main, nav, header/footer
  • ✓Clean heading outline — One h1, 12 headings, no skipped levels.

Access & renderability

100/100

Agents can read this page without a browser.

3 things already working
  • ✓Response headers allow agent access — No noindex/noai directives or bot-management headers detected.
  • ✓No CAPTCHA markup detected — No reCAPTCHA, hCaptcha, or Turnstile widgets found in the raw HTML.
  • ✓Content is readable without JavaScript — Primary content appears in the raw HTML; no JS-dependence heuristics fired.

Act

friction

Can it complete the task — book, buy, submit?

Form semantics

76/100

Forms are labelled and typed — an agent can fill them.

mediumPlaceholder used as the only label1 control relies on placeholder text alone — agents and screen readers cannot see it once the field has a value.▶

Evidence

  • raw-html · form#vector-sticky-search-form > div > div > input @ form#vector-sticky-search-form > div > div > input

Fix

Add a visible <label> for each field.

What helps screen readers helps agents.

<label for="search">Search Wikipedia</label>
<input id="search" name="search" type="search">
highUnlabelled form controls1 control has no accessible name — an agent cannot tell what to enter.▶

Evidence

  • raw-html · form#vector-sticky-search-form > div > div > input @ form#vector-sticky-search-form > div > div > input

Fix

Associate every control with a <label> or aria-label.

Labels are the primary signal for what a field wants.

<label for="search">Search Wikipedia</label>
<input id="search" name="search" type="search">
mediumControls missing a name attribute8 controls lack name — without a name the value cannot be submitted or described in a tool schema.▶

Evidence

  • raw-html · input#vector-main-menu-dropdown-checkbox @ input#vector-main-menu-dropdown-checkbox
  • raw-html · input#vector-appearance-dropdown-checkbox @ input#vector-appearance-dropdown-checkbox
  • raw-html · input#vector-user-links-dropdown-checkbox @ input#vector-user-links-dropdown-checkbox

Fix

Add a name attribute to every control.

Agents need stable field keys for submission and tool schemas.

<label for="vector-main-menu-dropdown-checkbox">Main menu</label>
<input id="vector-main-menu-dropdown-checkbox" name="vector-main-menu-dropdown-checkbox" type="checkbox">
highControls outside a <form>inputs outside a <form> cannot be submitted by an agent without executing scripts▶

Evidence

  • raw-html · input#vector-main-menu-dropdown-checkbox @ input#vector-main-menu-dropdown-checkbox
  • raw-html · input#vector-appearance-dropdown-checkbox @ input#vector-appearance-dropdown-checkbox
  • raw-html · input#vector-user-links-dropdown-checkbox @ input#vector-user-links-dropdown-checkbox

Fix

Wrap controls in a <form> with an explicit submit control.

Agents submit forms via standard HTML — not div onclick handlers.

<form action="/submit" method="post">
  …fields…
  <button type="submit">Submit</button>
</form>
mediumMissing submit affordance8 controls are not inside a form with a submit button — an agent cannot send the values.▶

Evidence

  • raw-html · input#vector-main-menu-dropdown-checkbox @ input#vector-main-menu-dropdown-checkbox
  • raw-html · input#vector-appearance-dropdown-checkbox @ input#vector-appearance-dropdown-checkbox
  • raw-html · input#vector-user-links-dropdown-checkbox @ input#vector-user-links-dropdown-checkbox

Fix

Add a submit button inside the owning form.

Agents need a standard submit control to complete form actions.

<form action="/submit" method="post">
<label for="vector-main-menu-dropdown-checkbox">Main menu</label>
<input id="vector-main-menu-dropdown-checkbox" name="vector-main-menu-dropdown-checkbox" type="checkbox">
  <button type="submit">Submit</button>
</form>

Actionability

99/100

Actions are real links, buttons and forms.

medium9 links have no destinationThese anchors do not expose a usable navigation target.▶

Evidence

  • raw-html · li#toc-mw-content-text > a
    <a href="#" class="vector-toc-link"> <div class="vector-toc-text">(Top)</div> </a>
  • raw-html · a#ca-talk-sticky-header
    <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-talk-sticky-heade…
  • raw-html · a#ca-subject-sticky-header
    <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-subject-sticky-he…
  • raw-html · a#ca-history-sticky-header
    <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-history-sticky-he…
  • raw-html · a#ca-watchstar-sticky-header
    <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only mw-watchlink" id="ca-watc…

Fix

Replace the non-native control with the matching native HTML element.

Native controls are keyboard-operable, appear in the accessibility tree, and are what agents (and WebMCP) can target.

<!-- Use a button for an in-page action -->
<button type="button">Open cart</button>
<!-- Or give navigation a real destination -->
<a href="/cart">View cart</a>
1 thing already working
  • ✓Primary action 'Search' is a real <form> — The page's primary action is directly invokable from its raw HTML.

WebMCP capability

0/100

No WebMCP tools — the single biggest upgrade available here.

highNo WebMCP tools — this is the biggest single upgrade availableWebMCP lets a page hand an agent a named, typed tool instead of a form it has to reverse-engineer. Browsers in the Chrome/Edge origin trial and agent clients such as ChatGPT Desktop already call these tools. The "+N" on this report is what declaring one is worth to your score. Note that we only read the served HTML: a tool registered from a JavaScript bundle would be invisible to us.▶

Evidence

  • raw-html · Form available to declare as a tool: form#searchform @ form#searchform

Fix

Declare your "Search" form as a tool

The declarative attributes are the cheapest path: the browser synthesizes the JSON Schema from the controls you already have.

<form action="/w/index.php" id="searchform" class="cdx-search-input cdx-search-input--has-end-button" toolname="searchform" tooldescription="Search">
  <input id="searchInput" name="search" type="search" toolparamdescription="Search Wikipedia">
  <!-- …your existing labels and submit button stay as they are… -->
</form>
Reference ↗
infoSame tool, imperative APIIf the form is rendered by JavaScript or the tool needs to do more than submit, register it imperatively. execute() resolves to a plain JSON-serializable value; the browser stringifies it.▶

Evidence

  • raw-html · Form available to declare as a tool: form#searchform @ form#searchform

Fix

Register the tool with document.modelContext.registerTool.

WebMCP is not on by default in any shipping browser yet, so include the polyfill: <script src="https://unpkg.com/@mcp-b/webmcp-polyfill@5.1.0/dist/index.iife.js" integrity="sha384-ZLqD1afbu2b2LJVDDqBf95wR/DGWh5FT1bx6E2S+4uMPdMOc8QGIIfw2gBWLKIB2" crossorigin="anonymous"></script>

// Until Chrome ships WebMCP by default, include the polyfill:
// <script src="https://unpkg.com/@mcp-b/webmcp-polyfill@5.1.0/dist/index.iife.js" integrity="sha384-ZLqD1afbu2b2LJVDDqBf95wR/DGWh5FT1bx6E2S+4uMPdMOc8QGIIfw2gBWLKIB2" crossorigin="anonymous"><\/script>
// Generated from the form at https://en.wikipedia.org/wiki/Web_browser
document.modelContext.registerTool({
  name: "searchform",
  description: "Search",
  inputSchema: {
    "type": "object",
    "properties": {
      "search": {
        "type": "string",
        "description": "Search Wikipedia"
      }
    }
  },
  async execute(input) {
    const form = document.forms[0];  // 0: the "searchform" form
    if (!(form instanceof HTMLFormElement)) throw new Error("searchform: form not found on this page");
    for (const [key, value] of Object.entries(input)) {
      const field = form.elements.namedItem(key);
      if (field instanceof HTMLInputElement && field.type === "checkbox") {
        field.checked = Boolean(value);
      } else if (
        field instanceof HTMLInputElement ||
        field instanceof HTMLTextAreaElement ||
        field instanceof HTMLSelectElement ||
        field instanceof RadioNodeList
      ) {
        field.value = String(value);
      }
    }
    form.requestSubmit();
    return "Submitted searchform";  // plain JSON-serializable value — not an MCP { content } envelope
  },
});
Reference ↗

Fetched Wed, 14 Oct 2026 19:25:59 GMT in 0.9s · HTTP 200 · 9 discovery files checked · rendered DOM: skipped

Rendered-DOM checks are not run in v1; JavaScript dependence is estimated from the raw HTML.