@pipeworx/softwareheritage
Connect: https://gateway.pipeworx.io/softwareheritage/mcp · Install: one-click buttons
Tools: 4
The Software Heritage archive of public source code: which repositories have been captured, when each was last captured successfully, and the commits inside them — addressed by content, so they keep resolving after a repository is renamed, moved or deleted.
Tools
origin_search(query, limit?, with_visit?)— find archived origins whose URL matches a substring. Answers “is this project in the archive, and under which URL”, which you need before anything else because the archive keys everything on the origin URL.origin_status(url)— the most recent capture of one repository that actually produced a snapshot: date, snapshot id, visit type. Answers “is this code safe, and as of when”.origin_visits(url, limit?)— the capture history for one repository, newest first, with each visit’s outcome. Answers “how continuously has this been archived”, and separates never-archived from archived-for-years-and-unreachable-today.revision(id)— one archived commit by its 40-hex id or SWHID: message, author, committer, dates, tree id, parents. Answers “what was in this commit” for a repository that may no longer exist anywhere else.
Auth
Keyless. Anonymous callers get a lower rate-limit bucket than token holders, and the limit is per-IP, so a Worker sharing an egress address with other traffic can be throttled by calls that were not ours. The archive asks callers to identify themselves; this pack sends its own User-Agent.
Data sources
- https://archive.softwareheritage.org/api/1/origin/search/{query}/ — origin search. Returns a bare JSON array, not an object.
- https://archive.softwareheritage.org/api/1/origin/{url}/visit/latest/ — latest visit for one origin.
- https://archive.softwareheritage.org/api/1/origin/{url}/visits/ — visit
history, paginated with
per_page. - https://archive.softwareheritage.org/api/1/revision/{sha}/ — one commit.
Things worth knowing before you touch this:
visit/latestwithoutrequire_snapshot=trueis a trap. It returns the latest visit whatever its outcome, so a repository archived continuously since 2015 answersstatus: "not_found"because today’s crawl happened to fail — the exact opposite of the question “is this archived”. Reproduced onhttps://github.com/torvalds/linuxon 2026-09-03: visit 479 wasnot_foundwhile visit 478, the day before, wasfull.origin_statusalways sets the flag; if you add an endpoint here, set it too.- The origin URL is the key, and it is matched exactly. A trailing slash, a
.gitsuffix orhttpvshttpsmakes it a different origin with its own visit history. Resolve withorigin_searchrather than constructing the URL. - The origin URL is embedded in the path, unescaped.
/origin/https://…/get/is the documented shape — do not URL-encode it, the API will not find it. - Origin endpoints return a bare JSON array, revision endpoints return an object. Anything reading these has to handle both.
- A 404 means “not archived”, not “bad request”. This pack turns it into an
explicit
archived: false/error: "revision not archived"so an absence cannot arrive looking like an empty success.
Tools
- origin_search — Search the Software Heritage archive for archived origins (repository URLs) whose URL matches a substring or pattern. Returns each matching origin with its visit count and the date it was last capture
- origin_status — Report whether one repository URL is archived, and as of when. Returns the most recent visit that produced a usable snapshot: the visit date, the snapshot id, and the visit type (git, hg, svn, npm, py
- origin_visits — List the archive’s visit history for one repository URL, newest first: when each capture ran, what it produced, and whether it succeeded (“full”), partially succeeded, or failed (“not_found” — the ori
- revision — Fetch one archived commit by its Software Heritage revision id (the 40-hex id, which for a git repository is the git commit sha). Returns the commit message, author and committer with their dates, the
Tools
-
origin_search— Search the Software Heritage archive for archived origins (repository URLs) whose URL matches a substring or pattern. Returns each matching origin with its visit count and the date it was last capture -
origin_status— Report whether one repository URL is archived, and as of when. Returns the most recent visit that produced a usable snapshot: the visit date, the snapshot id, and the visit type (git, hg, svn, npm, py -
origin_visits— List the archive's visit history for one repository URL, newest first: when each capture ran, what it produced, and whether it succeeded ( full ), partially succeeded, or failed ( not_found — the orig -
revision— Fetch one archived commit by its Software Heritage revision id (the 40-hex id, which for a git repository is the git commit sha). Returns the commit message, author and committer with their dates, the