# For software agents

A Markdown twin for every article, an llms.txt index, and a read-only MCP server over events, places, routes and verified facts.

Original: https://pedaleando-uruguay.bike/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_events` and `get_event` query the events calendar, returning date, venue and the source of each entry.
- `search_places` and `get_place` return the places the site writes about, with coordinates, a summary and alternative names.
- `list_routes` and `get_route` list the routes published under Routes, with the URL of the article and of its Markdown twin.
- `search_articles` and `get_article` find any published article and return it as Markdown.
- `lookup_fact` searches 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.
