Machine surface
Machine surface — endpoints, params, schemas, examples
Also called machine-readable API docs or MCP server documentation.
In short: Document your API in the file with its base URL and a link to its OpenAPI spec, and list your MCP server if you have one.
What it checks
Whether your API or MCP server is documented well enough for an agent to call it.
Why it matters
An agent that can call your API can answer with live data instead of stale pages. It needs the base URL, parameters, response shape and an example to do that. A documented machine surface is the part of generative engine optimization that prose cannot substitute for.
When it applies
Applies when the file mentions an API, OpenAPI spec, MCP server or WebMCP tools, detected from the wording above. With none, this audit and API error handling are Not applicable (the API block); Action endpoints has its own gate and can still apply through a booking or contact link. The API block is the most common Not applicable in the rubric.
An audit that doesn't apply, or that we couldn't verify, is removed from your score and its weight shared among the Agent Readiness audits that do apply. It is never scored as a zero.
How it's scored
1.0 when the file documents an API and an MCP or WebMCP surface · 0.75 an API alone · 0.6 MCP or WebMCP alone. An API is detected from wording such as “endpoint”, “OpenAPI”, “API reference”, GET / or POST /; MCP from “Model Context Protocol”, “MCP server” or an mcp. host; WebMCP from “WebMCP”, navigator.modelContext, document.modelContext or toolname=.
How to fix
- Give the base URL and link a machine-readable spec (OpenAPI, or your MCP server’s address).
- For the key endpoints, list parameters and the response fields that matter.
- Add one worked request and response per key endpoint.
Example
## API
- Base URL: https://api.acme.com/v1
- [OpenAPI spec](https://api.acme.com/openapi.json): Full machine-readable reference
- [MCP server](https://mcp.acme.com/sse): The same operations as tools for agentsFrequently asked questions
What counts as a machine surface for this audit?
GET / or POST /, and MCP or WebMCP from “Model Context Protocol”, “MCP server”, an mcp. host, “WebMCP”, document.modelContext or toolname=.Sources: OpenAPI Specification (latest) · Model Context Protocol — What is MCP? · WebMCP — Draft Community Group Report · LLMSRank — Machine surface audit
How is the machine surface check scored?
Sources: LLMSRank — Machine surface audit · LLMSRank — How scoring works
My site has no public API. Am I penalized?
Sources: LLMSRank — How scoring works · LLMSRank — Machine surface audit
How do I describe WebMCP tools in llms.txt?
document.modelContext.registerTool(); a declarative form (<form toolname="…" tooldescription="…">) is described in its explainer but not yet in the draft itself. Our WebMCP and MCP starter kit has a harness and starter code for registering tools.Sources: WebMCP — Draft Community Group Report · WebMCP — Declarative API explainer (toolname, tooldescription) · LLMSRank — WebMCP and MCP starter kit · LLMSRank — Machine surface audit
In our research, how many llms.txt files document a machine surface?
Sources: LLMSRank — How scoring works · LLMSRank — Machine surface audit