Skip to content
TestWebMCP

WebMCP report

mintlify.com

https://www.mintlify.com/docs

63/100
Grade D

5 tool(s) registered on document.modelContext. 1 returned an error when called. There's no origin trial token, so Chrome won't enable WebMCP for visitors yet.

Registers on document.modelContextScanned 9/23/2026, 6:16:36 PM · 11093ms
Registration
25/40
Tool quality
16/25
Discoverability
12/20
Platform readiness
10/15

Registered tools

get_site_overviewdocument.modelContextregisterTool · 747ms

Get an outline of the Mintlify documentation, grouped by section, with a short description of each page. May be truncated for large sites; use search_docs to find pages not listed.

Test result: working (137ms, 12000 characters)

readOnlyHint: true untrustedContentHint: true

inputSchema
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
navigate_pagedocument.modelContextregisterTool · 746ms

Navigate the current browser tab to a Mintlify documentation page.

Test result: not tested: the name suggests it changes something

readOnlyHint: false untrustedContentHint: false

inputSchema
{
  "type": "object",
  "properties": {
    "path": {
      "type": "string",
      "description": "Path or URL of the page, as returned by search_docs"
    }
  },
  "required": [
    "path"
  ],
  "additionalProperties": false
}
read_pagedocument.modelContextregisterTool · 746ms

Read the full content of a Mintlify documentation page as markdown.

Test result: found nothing for our test input

readOnlyHint: true untrustedContentHint: true

inputSchema
{
  "type": "object",
  "properties": {
    "path": {
      "type": "string",
      "description": "Path or URL of the page, as returned by search_docs"
    }
  },
  "required": [
    "path"
  ],
  "additionalProperties": false
}
read_skilldocument.modelContextregisterTool · 747ms

Read a Mintlify agent skill document by name.

Test result: found nothing for our test input

readOnlyHint: true untrustedContentHint: true

inputSchema
{
  "type": "object",
  "properties": {
    "skill_name": {
      "type": "string",
      "description": "The slug of the skill to read"
    }
  },
  "required": [
    "skill_name"
  ],
  "additionalProperties": false
}
search_docsdocument.modelContextregisterTool · 746ms

Search the Mintlify documentation for relevant pages and content.

Test result: returned an error

readOnlyHint: true untrustedContentHint: true

inputSchema
{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Search query"
    }
  },
  "required": [
    "query"
  ],
  "additionalProperties": false
}

Registration

25/40

R1 Tools registered with JavaScript

Pass15/15

5 tool(s) registered on document.modelContext.

  • Tools: get_site_overview, navigate_page, read_page, read_skill, search_docs
  • First tool registered 746ms after the page started loading.

R2 Tools registered through forms

Pass5/5

No declarative forms, but tools are registered with JavaScript. You only need one of the two.

  • Declarative forms are optional when tools are registered with JavaScript.

R3 Tools return results when called

Fail0/15

We called 4 tool(s) with test inputs based on their inputSchema. 1 returned an error: • search_docs: returned an error: "Search failed (500)"

An agent that calls a broken tool gets an error instead of an answer. This check fails if any tested tool returns an error.

  • Working: get_site_overview
  • Found nothing for our test inputs (not counted against you): read_page, read_skill

How to fix

Make sure each tool returns a real result for a simple valid call. When something goes wrong, return isError: true instead of putting the error message in a normal result.

async execute({ query }) {
  try {
    const results = await search(query);
    return { content: [{ type: "text", text: format(results) }] };
  } catch (err) {
    // Mark the failure with isError. If the error message is returned as a
    // normal result, the agent reads it as the answer.
    return {
      isError: true,
      content: [{ type: "text", text: `Search unavailable: ${err.message}` }]
    };
  }
}

R4 Tools registered within 5 seconds

Pass5/5

First tool registered 746ms after the page started loading.

  • Within the 5 second limit.

Tool quality

16/25

Q1 Valid input schemas

Pass8/8

All 5 tool(s) have a valid inputSchema with a description on every property.

  • get_site_overview: no-argument tool, schema valid.
  • navigate_page: 1 described property.
  • read_page: 1 described property.
  • read_skill: 1 described property.
  • search_docs: 1 described property.

Q2 Useful descriptions

Fail0/5

5 of 5 description(s) need work: • get_site_overview: description doesn't say what the tool returns: "Get an outline of the Mintlify documentation, grouped by section, with a short description of each page. May be truncate… (180 chars total)" • navigate_page: description doesn't say what the tool returns: "Navigate the current browser tab to a Mintlify documentation page." • read_page: description doesn't say what the tool returns: "Read the full content of a Mintlify documentation page as markdown." • read_skill: description doesn't say what the tool returns: "Read a Mintlify agent skill document by name." • search_docs: description doesn't say what the tool returns: "Search the Mintlify documentation for relevant pages and content."

Agents choose a tool based on its description. If the description doesn't say what comes back, the agent has to call the tool to find out.

How to fix

Describe what the tool does and what it returns in one sentence.

- description: "Product search"
+ description: "Search the product catalogue and return matching product names, prices and stock status."

Q3 Clear tool names

Fail0/4

1 of 5 tool name(s) don't follow the convention: • navigate_page: starts with "navigate", which is not a verb.

Agents pick tools by what they do. A name that starts with a verb, like search_products, makes that clear. A noun like products doesn't.

  • Following the convention: get_site_overview, read_page, read_skill, search_docs

How to fix

Start each name with the action the tool performs.

- name: "ProductSearch"
- name: "products"
+ name: "search_products"    // snake_case
+ name: "searchProducts"     // camelCase — either is fine, be consistent

Q4 Annotations

Pass5/5

All 5 tool(s) have the annotations they need.

  • get_site_overview: readOnlyHint=true, untrustedContentHint=true
  • navigate_page: readOnlyHint=false, untrustedContentHint=false
  • read_page: readOnlyHint=true, untrustedContentHint=true
  • read_skill: readOnlyHint=true, untrustedContentHint=true
  • search_docs: readOnlyHint=true, untrustedContentHint=true

Q5 Result size

Pass3/3

Every tested tool returned between 1 and 20,000 characters.

  • get_site_overview: 12,000 chars.
  • read_page: 17 chars.
  • read_skill: 21 chars.
  • search_docs: 19 chars.

Discoverability

12/20

D1 llms.txt

Pass5/5

/llms.txt responded 200 with 6,479 bytes.

  • /llms.txt → 200 text/plain; charset=utf-8
  • First bytes: # Mintlify > Mintlify is the knowledge platform built for agents: self-updating documentation for startups, enterprises, and AI agents. This file indexes the markdown version of every page on www.min… (400 chars total)
  • Also found /llms-full.txt (127,802 bytes). This isn't scored.

D2 MCP server card

Fail0/5

Not found. Checked /.well-known/mcp.json (404), /.well-known/mcp/server-card.json (404).

A server card lets agents see what your site offers without loading the page first.

How to fix

Add a server card at /.well-known/mcp.json.

{
  "name": "example-store",
  "version": "1.0.0",
  "description": "Search and browse the Example Store catalogue.",
  "tools": [
    {
      "name": "search_products",
      "description": "Search the catalogue and return matching products with prices."
    }
  ]
}

D3 Agent skills index

Fail0/3

Not found. Checked /.well-known/agent-skills/index.json (404).

An agent skills index lists multi-step tasks agents can complete on your site. It's optional and worth the fewest points in this section.

How to fix

Add an index of the tasks agents can complete on your site.

{
  "skills": [
    {
      "name": "place-an-order",
      "description": "Search the catalogue, add to basket and complete checkout.",
      "path": "/.well-known/agent-skills/place-an-order.md"
    }
  ]
}

D4 Structured data

Pass4/4

2 JSON-LD block(s) in the document.

  • Sample: {"@context":"https://schema.org","@type":"WebSite","name":"Mintlify","creator":{"@type":"Organization","name":"Mintlify","url":"https://mintlify.com"}}
  • Sample: {"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://www.mintlify.com/#organization","name":"Mintlify","url":"https://www.mintlify.com","logo":{"@type":"ImageObject","url":"https://mintcdn.co… (400 chars total)

D5 robots.txt allows AI crawlers

Pass3/3

robots.txt doesn't block GPTBot, ClaudeBot, Google-Extended, PerplexityBot.

  • Explicitly addressed and allowed: GPTBot, ClaudeBot, Google-Extended, PerplexityBot

Platform readiness

10/15

P1 HTTPS with a valid certificate

Pass5/5

The page is served over HTTPS with a valid certificate.

  • Connected to www.mintlify.com over HTTPS and the certificate is valid.
  • Issuer: Let's Encrypt
  • Valid until: Dec 11 15:10:55 2026 GMT

P2 Origin trial token

Fail0/5

No origin trial token found, either in a meta tag or in the Origin-Trial header.

WebMCP is currently an origin trial in Chrome. Without a token for your domain, Chrome doesn't enable the API for your visitors, so your tools aren't available to them. They appear in this report because we simulate the API during the scan.

How to fix

Register your domain for the WebMCP origin trial and add the token to your pages, as a meta tag or an Origin-Trial header. The header also covers responses that aren't HTML.

<!-- Option 1: meta tag, in <head> before any script that registers tools -->
<meta http-equiv="origin-trial" content="YOUR_TOKEN_HERE">

<!-- Option 2: response header (covers the whole response) -->
Origin-Trial: YOUR_TOKEN_HERE

<!-- Get a token: https://developer.chrome.com/origintrials -->

P3 No errors blocking registration

Pass5/5

No WebMCP-related console errors, and no scripts blocked by your Content Security Policy.

  • Your Content-Security-Policy header didn't block tool registration: worker-src * blob: data:; object-src data:; base-uri 'self'; upgrade-insecure-requests; frame-ancestors 'self' https://app.mintlify.com https://dashboard.mintli… (187 chars total)

Scan details

Requested
https://mintlify.com/docs
Final URL
https://www.mintlify.com/docs
HTTP status
200
Page title
Introduction - Mintlify
Load time
7268ms
Total scan time
11093ms
User agent
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36