FetchKit enriches regular GET responses with advertised resources that help
an agent navigate a site. Markdown GET requests additionally probe a bounded
set of conventional resources. Discovery is shallow and descriptive: FetchKit
reports resources but never invokes an advertised API, authentication flow, or
agent endpoint.
FetchKit combines these sources:
-
HTTP
Linkresponse headers with agent-relevant relations and Markdown, JSON, or conventional agent-resource targets. -
HTML
<link>declarations usingalternate,service-desc,describedby,authorization_endpoint,mcp,a2a,agent-card, orskillrelations. -
HTML
<meta name="..." content="URL">declarations namedllms,llms-full,auth,service-desc,api-catalog,mcp,a2a,agent-card, oragent-skills. -
A fixed set of conventional same-origin probes:
/llms.txt /llms-full.txt /auth.md /.well-known/oauth-authorization-server /.well-known/openid-configuration /.well-known/oauth-protected-resource /.well-known/api-catalog /.well-known/mcp/server-card.json /.well-known/agent-card.json /.well-known/agent-skills/index.json
The list is intentionally explicit. FetchKit does not enumerate the unbounded
/.well-known/ namespace. Probe requests use HEAD, run with bounded
concurrency and a short timeout, and do not recurse into discovered resources.
A probed resource is accepted only after a direct 2xx response; redirects are
not accepted as verification.
Resources are returned as PageMetadata.agent_resources. Each resource has:
url: normalized absolute URLkind: stable category such asllms-txt,auth,mcp, oroauthsource:http-link,html-link,metadata, orprobe- optional
relation,media_type, andtitle verified: whether a conventional probe confirmed the URL
Resources advertised by headers or HTML are marked unverified because FetchKit does not issue an additional request merely to validate each arbitrary target. Duplicates are removed and output is capped at 20 resources.
For Markdown requests, FetchKit also appends an Agent resources section to the
returned document. Raw HTML is not modified; consumers can use the structured
metadata instead.
All probes use the same URL validation, DNS/IP policy, redirect validation, proxy policy, and Web Bot Authentication transport rules as the original request. Probes are restricted to fixed paths on the final response origin and do not forward request-specific authorization headers.
Discovery adds up to ten lightweight requests to a Markdown GET. Servers that
support HEAD can make these inexpensive. Failed, blocked, redirected, or timed
out probes are omitted without failing the requested page fetch.
Sites get the strongest result by explicitly advertising resources:
Link: </llms.txt>; rel="alternate"; type="text/markdown"; title="LLM index"
Link: </openapi.json>; rel="service-desc"; type="application/openapi+json"or in HTML:
<link rel="alternate" type="text/markdown" href="/llms.txt" title="LLM index">
<link rel="service-desc" type="application/openapi+json" href="/openapi.json">Conventional resources should return an accurate status and content type for
HEAD. Avoid catch-all 200 OK responses for nonexistent paths, because they
make protocol-level discovery ambiguous.