For software agents
Published: 6 November 2026
Reading Pedaleando Uruguay by machine: where the Markdown twins of the articles are, what llms.txt lists, and how to query the read-only MCP server for events, places, routes and the verified facts behind the articles.
A reader who asks an assistant about cycling in Uruguay may never open this site in a browser. The assistant fetches, reads and condenses, and what it finds is what the reader gets. We would rather it find clean text, with dates and sources attached, than guess its way through our HTML. This page is for that program and for whoever builds it.
Start with llms.txt
/llms.txt on this host lists the published pages with a one-line summary each and, where one exists, a link to the page's Markdown twin. The Spanish edition keeps its own index at pedaleando.uy/llms.txt.
Plain-text pages
Articles and section pages carry a Markdown twin with the same content as the page: title, published and updated dates, body, captions and the sources footer with its credits. Append .md to the URL. The article at /plan/rules-of-the-road is also served at /plan/rules-of-the-road.md. The HTML page remains canonical and the twin is not indexed. Each HTML page announces its twin, if it has one, in the <head>.
Ask the server
An MCP (Model Context Protocol) server runs at https://pedaleando-uruguay.bike/mcp: Streamable HTTP transport, no authentication, read-only. The same server answers in Spanish at https://pedaleando.uy/mcp. Its tools:
search_eventsandget_eventquery the events calendar, returning date, venue and the source of each entry.search_placesandget_placereturn the places the site writes about, with coordinates, a summary and alternative names.list_routesandget_routelist the routes published under Routes, with the URL of the article and of its Markdown twin.search_articlesandget_articlefind any published article and return it as Markdown.lookup_factsearches the verified facts the articles rest on and returns, for each, an identifier, the value, and the sources we consulted, with the date we last read them, when we recorded one. A fact without a source is not served.
A client needs nothing but the URL. In Claude Code, for instance:
claude mcp add --transport http pedaleando https://pedaleando-uruguay.bike/mcp
Requests are limited per client. Beyond the limit, the server refuses further calls for a while.
Crawling
/robots.txt is written per class of crawler: search engines, fetchers acting on a person's request, crawlers that gather material to train language models, and a default rule for everyone else. All of them allow everything today.
What we keep
Two kinds of record come out of this. The MCP server logs each call it answers: which tool, with which arguments, how many results, in which language and on which host, plus the user-agent string the client sent. The web server logs each page fetched by a client whose user-agent string we recognise as a program (a crawler, a search engine, an assistant): the time, the URL, the response code, the referring page if any, and that string. Visits from ordinary browsers are not kept. Neither record holds an IP address. We read them to learn what is being asked for and where we came up empty, and that feeds what we write next.
Corrections
The sources in an article's footer carry the date we last read them, and those returned by lookup_fact carry it when we recorded one. A fact can change after that date. If your program found an error, or asked something the server could not answer, write to hola@pedaleando.uy.