WebMCP report
mintlify.com
https://www.mintlify.com/docs
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.
Registered tools
get_site_overviewdocument.modelContextregisterTool · 747msGet 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 · 746msNavigate 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 · 746msRead 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 · 747msRead 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 · 746msSearch 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/40R1 Tools registered with JavaScript
Pass15/155 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/5No 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/15We 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/5First tool registered 746ms after the page started loading.
- Within the 5 second limit.
Tool quality
16/25Q1 Valid input schemas
Pass8/8All 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/55 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/41 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 consistentQ4 Annotations
Pass5/5All 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/3Every 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/20D1 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/5Not 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/3Not 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/42 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/3robots.txt doesn't block GPTBot, ClaudeBot, Google-Extended, PerplexityBot.
- Explicitly addressed and allowed: GPTBot, ClaudeBot, Google-Extended, PerplexityBot
Platform readiness
10/15P1 HTTPS with a valid certificate
Pass5/5The 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/5No 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/5No 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