sonatype.com API: Get latest Maven Central version
Finds the best matching Maven Central library from its name or group:artifact coordinates and returns its current release, release date, version count and dependency snippets.
Unofficial. Not affiliated with or endorsed by sonatype.com.
Inputs
Values from the run on Oct 31, 2026, shown under Output.
- Library, required
library Library name or Maven group:artifact coordinates, for example jackson databind or com.google.guava:guava.
jackson databind
Input as JSON
{ "library": "jackson databind"}Output
{ "group": "com.fasterxml.jackson.core", "artifact": "jackson-databind", "release_date": "2026-09-21", "latest_version": "2.22.3", "maven_dependency": "<dependency>\n <groupId>com.fasterxml.jackson.core</groupId>\n <artifactId>jackson-databind</artifactId>\n <version>2.22.3</version>\n</dependency>" , "gradle_dependency": "implementation 'com.fasterxml.jackson.core:jackson-databind:2.22.3'", "maven_central_link": "https://central.sonatype.com/artifact/com.fasterxml.jackson.core/jackson-databind/2.22.3" , "number_of_versions": 235}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"central.sonatype.com/get_latest_version","input":{"library":"jackson databind"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "central.sonatype.com/get_latest_version" , "input": { "library": "jackson databind" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "central.sonatype.com/get_latest_version" , "input": { "library": "jackson databind" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run central.sonatype.com/get_latest_version# with {"library":"jackson databind"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "library" ], "properties": { "library": { "type": "string", "minLength": 1, "description": "Library name or Maven group:artifact coordinates, for example jackson databind or com.google.guava:guava." } }}Output schema
{ "type": "object", "required": [ "group", "artifact", "latest_version", "release_date", "number_of_versions", "maven_dependency", "gradle_dependency", "maven_central_link" ], "properties": { "group": { "type": "string", "description": "Matched Maven group." }, "artifact": { "type": "string", "description": "Matched Maven artifact." }, "release_date": { "type": [ "string", "null" ], "format": "date", "description": "UTC publication date of the release POM, when available." }, "latest_version": { "type": "string", "description": "Latest release version in the repository." }, "maven_dependency": { "type": "string", "description": "Maven dependency XML." }, "gradle_dependency": { "type": "string", "description": "Gradle Groovy dependency declaration." }, "maven_central_link": { "type": "string", "description": "Page for the matched version on Maven Central." }, "number_of_versions": { "type": "integer", "description": "Number of published versions listed by the repository." } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
central.sonatype.com/get_latest_version- Returns
- group, artifact, latest version, release date, number of versions, Maven and Gradle snippets, Maven Central link
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method central.sonatype.com/get_latest_version with the inputs above.
Ask your agent
- What's the newest release of com.fasterxml.jackson.core:jackson-databind? I need the Gradle dependency line too.
- Check sonatype.com for the current version of Apache Commons Lang 3 and when it was released
- I'm updating my pom.xml — give me the latest Maven snippet for org.slf4j:slf4j-api
- How many versions of Lombok have been published to Maven Central, and which one is the most recent?
- Look up spring-boot-starter-web on sonatype.com and tell me its latest version, release date, and the Maven Central link
See more
Looks up a public npm package by name or npm link. Returns its latest version, weekly downloads, maintainers, links, dates and version count.
npmjs.com/get_packageLooks up a NuGet package by name or nuget.org link. Inexact names match the top search result. Returns the latest stable release's details and the 10 most recent versions, including prereleases.
nuget.org/get_packageLooks up a Ruby gem on RubyGems by name or gem page link and returns its latest version, release date, description, downloads, authors, license, links and runtime dependencies.
rubygems.org/get_gemLooks up a Rust crate by name or crates.io link and returns its latest version, downloads, links, dates, license and 10 most recent releases.
crates.io/get_crateLooks up a Go module on pkg.go.dev by path, link or name. For a name, it uses the module of the top package search result.
pkg.go.dev/get_moduleSearches the npm registry for JavaScript packages by description or keywords, in npm's search order, and returns each package's latest version, weekly downloads and publish date.
npmjs.com/search_packagesGets a PyPI package's current version, release date, metadata, project links and its 10 most recently published versions from a package name or PyPI link.
pypi.org/get_packageFinds known vulnerabilities (CVEs) in the NVD that match a product or vendor name, newest first. Each CVE is flagged when it is in CISA's known exploited catalog.
nvd.nist.gov/search_vulnerabilities