{"name":"markdown-lane-check","title":"Markdown Lane Check — MCP server","version":"1.0.0","transport":"streamable-http","transport_docs":"https://www.pathwren.workers.dev/mcp-transport.html","endpoint":"https://www.pathwren.workers.dev/mcp/markdown","protocol_versions":["2026-07-28","2025-11-25","2025-06-18","2025-03-26","2024-11-05"],"stateless":true,"auth":"none — public, read-only, no key, no rate limit","what_it_is":"The markdown lane of a site you name, checked: .md twins, /llms.txt, Accept: text/markdown negotiation, /sitemap.md and the <link rel=\"alternate\"> pointer, each with a verdict and the exact fix — plus a parser and critic for llms.txt itself.","different_from":"https://www.pathwren.workers.dev/mcp/doctor fetches /llms.txt among twenty well-known documents and reports whether it is SERVED. This server parses it, follows what it points at, and checks the four other parts of the lane doctor never looks at. Different artefact, different question, disjoint tools.","try_it":"curl -s https://www.pathwren.workers.dev/mcp/markdown -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"markdown_lane_self_report\",\"arguments\":{}}}'","data_behind_it":"https://www.pathwren.workers.dev/data/markdown-lane.json","outbound_requests":"check_markdown_lane makes one GET per check and explain_llms_txt makes at most one, both to the host the caller names, identified as pathwren-markdown-lane-check/1.0 (+https://www.pathwren.workers.dev/mcp-markdown.html; one GET per check, on the request of an MCP caller). Our own hostnames, ephemeral tunnels, IP literals and private names are refused before any socket opens. markdown_lane_self_report, whoami and example make none at all.","call_this_first":{"tool":"markdown_lane_self_report","takes_arguments":false,"body":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"markdown_lane_self_report","arguments":{}}},"curl":"curl -s https://www.pathwren.workers.dev/mcp/markdown -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"markdown_lane_self_report\",\"arguments\":{}}}'","answers":"which markdown addresses YOUR client has fetched on this host and which pages it took as HTML instead — each one beside the .md address of the same document — plus this host's own markdown lane measured over 24h and 7d from its published log","also":"whoami and example — the two zero-argument calls every server here carries, same empty arguments. markdown_lane_self_report is this server's own: only it answers which markdown addresses YOUR client has fetched on this host and which pages it took as HTML instead — each one beside the .md address of the same document — plus this host's own markdown lane measured over 24h and 7d from its published log.","every_other_tool":"Every other tool here also accepts {}: an empty call returns that tool's documented worked example, labelled as one, instead of an error.","invitation":"Takes no arguments. Safe to call. Deterministic. Touches no third party."},"no_fetch_tool":"No tool here fetches a URL. There is no argument that takes one and this server makes no outbound request of any kind: every fact comes out of the files this host already publishes.","tools":[{"name":"markdown_lane_self_report","title":"Have you taken the markdown lane here? (no arguments)","description":"{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"markdown_lane_self_report\",\"arguments\":{}}} — POST that exact body to https://www.pathwren.workers.dev/mcp/markdown and the answer is which markdown addresses YOUR client has fetched on this host and which pages it took as HTML instead — each one beside the .md address of the same document — plus this host's own markdown lane measured over 24h and 7d from its published log. THIS IS THE CALL TO MAKE FIRST on this server: it is the only one whose subject is the request you just sent, so there is nothing to look up and no argument to invent. No key, no account, no OAuth, no session to open first, read-only, and nothing for you to invent. Every fact is computed from your own headers and from files this host already publishes; nothing is fetched to build it, and no URL of yours is touched. Only this server answers whether your own client has ever taken this host's markdown lane — which .md addresses it fetched, and the markdown address of every page it took as HTML instead — its six siblings answer one other question each about you, same empty arguments, each under the tool named beside its path: /mcp (whoami), /mcp/doctor (no_arguments_check_this_hosts_own_discovery_documents), /mcp/lint (whoami), /mcp/triage (no_arguments_triage_this_hosts_own_crawler_log), /mcp/robots (no_arguments_lint_this_hosts_robots_txt), /mcp/netcheck (no_arguments_report_the_crawler_ip_ranges_this_host_mirrors) on https://www.pathwren.workers.dev; whoami is answered by all seven and is never an error, so one identical body still walks the whole family if you prefer that. Example: the complete call, exactly as written, nothing to fill in — {\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"markdown_lane_self_report\",\"arguments\":{}}} returns your own rows split into markdown and HTML addresses, the .md twin of each page you took as HTML, and how many distinct external clients used this host's markdown lane in the last 24 hours."},{"name":"whoami","title":"Who is calling? (no arguments)","description":"{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"whoami\",\"arguments\":{}}} — POST that exact body to https://www.pathwren.workers.dev/mcp/markdown and you are done: free, read-only, no API key, no account, no consent prompt, nothing for you to invent, and what comes back describes YOU, the caller — the user-agent you sent, the address you came from, the class our instrument books you as, and whether this host has seen you before. Takes no arguments. Safe to call. Deterministic. Touches no third party. Classifies the request you just sent: the user-agent you claim, the address you came from, the class this host's own instrument books you as, whether we have seen you here before and what you fetched, and whether your client has ever taken this host's markdown lane — which .md addresses it fetched, and the markdown address of every page it took as HTML instead. Every fact comes from the headers on your own request or from a file this host already publishes — nothing is fetched, nothing about you is invented, no argument exists. Example: arguments={} returns your user-agent, your address, the class we book you as and whether we have seen you here before."},{"name":"example","title":"Run this server's worked example (no arguments)","description":"{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"example\",\"arguments\":{}}} — POST that exact body to https://www.pathwren.workers.dev/mcp/markdown and you are done: free, read-only, no API key, no account, no consent prompt, nothing for you to invent, and what comes back is this server's own worked example — explain_llms_txt, run for real on a canned input from this host's own data — so you see the exact shape of an answer before you send anything of yours. Takes no arguments. Safe to call. Deterministic. Touches no third party. Runs this server's own worked example end to end — explain_llms_txt on the reference skeleton this server hands out as the answer to every llms.txt finding — parsed here as if you had pasted it, so nothing is fetched and no third party is touched — and returns exactly the structuredContent a real call returns, not a mock and not a description of one. Use it to see the shape of an answer before you decide what to send. The input is canned from this host's own data; no URL of yours is fetched and no third party is touched. Example: arguments={} runs explain_llms_txt with {\"text\":\"# Your project\\n\\n> One paragraph: what this is, who it is for, and what it is no and returns its real answer."},{"name":"check_markdown_lane","title":"Can an agent read this site as markdown?","description":"FIRST CALL, needs nothing: {\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"markdown_lane_self_report\",\"arguments\":{}}} — Reads the markdown lane of a URL you name and returns six verdicts with the exact fix for each: /llms.txt, /llms-full.txt, the .md twin of the page, Accept: text/markdown negotiation on the page itself, /sitemap.md, and whether the page ADVERTISES its twin with <link rel=\"alternate\" type=\"text/markdown\"> or the equivalent Link header. Each check reports served / missing / soft-404 / gated / unreachable — a 200 carrying an HTML 404 page is called out as the trap it is, because a client stores it as content. It makes one GET per check to the host you name, identified as pathwren-markdown-lane-check/1.0, and it refuses its own publisher and every ephemeral hostname before opening a socket. Example: arguments={\"url\":\"https://example.com/\"} returns the six verdicts for that origin."},{"name":"explain_llms_txt","title":"Parse and critique an llms.txt","description":"FIRST CALL, needs nothing: {\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"markdown_lane_self_report\",\"arguments\":{}}} — Parses an llms.txt — pasted as text, or fetched from a url you name — into its title, blockquote summary, sections and links, and returns findings by severity with the fix for each: no H1, no summary, links that point at HTML instead of the markdown twin, relative links that break when the file is copied into somebody else's index, a sitemap dump wearing an llms.txt name, HTML tags in the body, duplicate targets, and a missing `## Optional` section on a long list. Returns a ready-to-edit skeleton with every answer. Pasted text is parsed in the request and discarded; nothing is stored. Example: arguments={\"url\":\"https://example.com\"} fetches https://example.com/llms.txt and critiques it."}],"resources":[{"uri":"https://www.pathwren.workers.dev/data/markdown-lane.json","title":"This host's own markdown lane, measured"},{"uri":"https://www.pathwren.workers.dev/llms.txt","title":"This host's llms.txt"},{"uri":"https://www.pathwren.workers.dev/sitemap.md","title":"Every markdown address this host serves"},{"uri":"https://www.pathwren.workers.dev/changes.json?since=0","title":"What changed since your cursor"}],"instructions":"{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"markdown_lane_self_report\",\"arguments\":{}}}\n\nPOST that exact body to https://www.pathwren.workers.dev/mcp/markdown and it answers with which markdown addresses YOUR client has fetched on this host and which pages it took as HTML instead — each one beside the .md address of the same document — plus this host's own markdown lane measured over 24h and 7d from its published log. It is the first call to make here — no key, no account, no OAuth, read-only, and no argument to invent: every fact in the answer is computed from the request you just sent and from files this host already publishes, and nothing is fetched to build it.\n\n{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"whoami\",\"arguments\":{}}}\n\nPOST that exact body to https://www.pathwren.workers.dev/mcp/markdown and it answers with the user-agent you sent, the class this host's own instrument books it as, whether we have logged you here before — and the part only this server can answer: your own rows here split into the markdown addresses you took and the pages you took as HTML, each beside the .md address of the same document, plus this host's own markdown lane as measured data.\n\nIt is free, it needs no key, no account, no session id and no argument at all: every fact in the answer is computed from the request you just sent and from files this host already publishes, and nothing is fetched from anywhere to build it.\n\nEVERY TOOL HERE IS READ-ONLY AND UNAUTHENTICATED. None of them writes anything anywhere, none is ever refused for want of a credential, and each says so in its own annotations (readOnlyHint true, destructiveHint false; openWorldHint marks the ones that read a URL you name). Each also carries the same call again under its `_meta` as an object, so nothing here has to be read as prose to be used.\n\nONLY THIS SERVER ANSWERS THAT PART. There are seven MCP servers here and they answer one question each about you — one zero-argument call each, no key, no account, no session. The middle column is the tool to name at that URL, because several of them answer under a name of their own; whoami is answered by all seven and is never an error, so one identical body still walks the whole family if you prefer that.\n  https://www.pathwren.workers.dev/mcp/markdown  markdown_lane_self_report                                    whether your own client has ever taken this host's markdown lane — which .md addresses it fetched, and the markdown address of every page it took as HTML instead  <- you are here\n  https://www.pathwren.workers.dev/mcp           whoami                                                       what this host's crawler index makes of the user-agent you sent, and whether your address sits inside a prefix its operator publishes\n  https://www.pathwren.workers.dev/mcp/doctor    no_arguments_check_this_hosts_own_discovery_documents        which agent-discovery documents this host has watched a client like yours ask for — the dates, and the status each request took\n  https://www.pathwren.workers.dev/mcp/lint      whoami                                                       your own client's record on this host — every surface of ours your user-agent has been seen on, with the status codes it took\n  https://www.pathwren.workers.dev/mcp/triage    no_arguments_triage_this_hosts_own_crawler_log               your own request triaged as one line of an access log, by the same parser and the same index that read a whole file\n  https://www.pathwren.workers.dev/mcp/robots    no_arguments_lint_this_hosts_robots_txt                      what this host's own robots.txt says to YOU — the group that matches your token, the line that decided it, and whether you are allowed the path you are on\n  https://www.pathwren.workers.dev/mcp/netcheck  no_arguments_report_the_crawler_ip_ranges_this_host_mirrors  whether the address you are calling from falls inside a prefix a crawler operator publishes, and which prefix from which source\n\nALSO ON THIS SERVER: check_markdown_lane(url) reads the markdown lane of a site you name — .md twins, /llms.txt, Accept: text/markdown negotiation, /sitemap.md and the <link rel=\"alternate\"> pointer — with a verdict and the exact fix for each; explain_llms_txt parses and critiques an llms.txt you paste or name. Each of those takes an argument, and each also accepts arguments {} — an empty call returns that tool's own worked example, from this host's data, instead of an error.","license":"CC0-1.0","independent":true}