latester/api reference
what it's for
a read-only JSON API exposing the latest stable versions tracked by latester. designed to be passed to an AI assistant at the start of a session — it can then suggest up-to-date versions for Dockerfiles, CI configs, and similar.
endpoints
GET /api/v1/schema— machine-readable route index (methods, params, error codes, tracked IDs) in a single JSON call, meant for AI agents/scripts that don't want to parse this pageGET /api/v1/versions— full list of tracked versionsGET /api/v1/versions/{id}— single entry by IDGET /api/v1/dockerhub/{name}— on-demand lookup for any Docker Hub image, not limited to the tracked list. Query params:owner,filter(glob),name_filter(Docker Hub-side substring),even_minor(true/false)GET /api/v1/dockerhub/popular— most-searched images via the endpoint above
data is sourced from GitHub Releases, Docker Hub, go.dev, nodejs.org, npm, Maven Central and services.gradle.org. may be up to 24h old.
any request under /api/ that doesn't match a known route also returns JSON — 404 with {"error":"unknown endpoint"} — instead of the HTML 404 page, so a wrong URL form is distinguishable from a valid route with a nonexistent ID ({"error":"not found"}).
some images (nginx being the canonical example) mark unstable "mainline" releases with an odd minor version instead of a prerelease suffix (e.g. 1.31.x is mainline, 1.30.x is stable) — plain version sorting alone can't tell the two apart. Pass ?even_minor=true for those images to only match even-minor tags.
/api/v1/dockerhub/{name} returns 404 (not 502) when the image doesn't exist on Docker Hub or no tag matches your filter/name_filter — a 502 means latester itself failed to reach Docker Hub.
MCP server
the same lookups are also exposed as typed MCP tools over Streamable HTTP — for AI agents that would otherwise reach for a generic fetch-and-summarize tool, which can silently drop a field along the way. read-only, same public/no-auth posture as the JSON API above.
claude mcp add --transport http latester https://latester.euflow.fr/mcp
list_tracked_versions— equivalent toGET /api/v1/versionsget_version(id)— equivalent toGET /api/v1/versions/{id}lookup_dockerhub(name, owner?, filter?, name_filter?, even_minor?)— equivalent toGET /api/v1/dockerhub/{name}
GET /api/v1/versions
{
"generated_at": "2026-05-21T10:30:00Z",
"note": "Stable release versions sourced from official upstreams (GitHub, Docker Hub, go.dev). May be up to 24h old.",
"versions": [
{
"id": "php",
"owner": "library",
"name": "php-fpm",
"version": "8.4.7-fpm",
"arch": "",
"source": "dockerhub",
"updatedAgo": "2d ago",
"freshnessClass": "age-stale",
"url": "https://hub.docker.com/_/php/tags"
},
{
"id": "golang",
"owner": "golang",
"name": "go",
"version": "go1.24.3",
"arch": "linux/amd64",
"source": "godev",
"updatedAgo": "5d ago",
"freshnessClass": "age-stale",
"url": "https://go.dev/dl/go1.24.3.linux-amd64.tar.gz"
},
{
"id": "node-alpine",
"owner": "library",
"name": "node-alpine (lts)",
"version": "24-alpine3.24",
"pinnedVersion": "24.18.0-alpine3.24",
"arch": "",
"source": "dockerhub",
"updatedAgo": "2d ago",
"freshnessClass": "age-stale",
"url": "https://hub.docker.com/_/node/tags?name=24-alpine"
}
]
}
pinnedVersion is present only when version is itself a floating "line" tag (e.g. Docker Hub's 24-alpine3.24, re-pointed to a new patch on every release) — it's the fully pinned tag sharing the same image, e.g. 24.18.0-alpine3.24. Use pinnedVersion over version when writing a Dockerfile FROM line.
GET /api/v1/versions/{id}
returns a single entry. id matches the id field in the list above.
{
"id": "traefik",
"owner": "traefik",
"name": "traefik",
"version": "v3.4.1",
"arch": "linux/amd64",
"source": "github",
"updatedAgo": "3d ago",
"freshnessClass": "age-stale",
"url": "https://github.com/traefik/traefik/releases/download/v3.4.1/traefik_v3.4.1_linux_amd64.tar.gz"
}
returns 404 with {"error":"not found"} if the ID doesn't exist.
available IDs
woodpecker-agent— Woodpecker CI agentwoodpecker-server— Woodpecker CI serveropentofu— OpenTofugitea— Giteatraefik— Traefikgolang— Go (go.dev official release)golang-alpine— Go Docker image (Alpine)alpine— Alpine Linux Docker imagephp— PHP-FPM Docker imagenode-lts— Node.js latest LTS (nodejs.org)node-alpine— Node.js LTS Docker image (Alpine)postgres-alpine— PostgreSQL Docker image (Alpine)nginx-alpine— nginx Docker image (Alpine, stable line only — even-minor filter excludes mainline)maven— Apache Maven (Maven Central)gradle— Gradle (services.gradle.org)spring-boot— Spring Boot (Maven Central)junit— JUnit 5 / Jupiter (Maven Central)angular— Angular (npm)jest— Jest (npm)playwright— Playwright (npm)cypress— Cypress (npm)sonarqube— SonarQube Community Docker image