@pipeworx/sigstore-rekor
Connect: https://gateway.pipeworx.io/sigstore-rekor/mcp · Install: one-click buttons
No MCP client? Skip the connection: POST https://gateway.pipeworx.io/v1/tools/search_packs {"query":"..."} to find a tool below, GET /v1/tools/<name> for its schema, POST the same URL with arguments for the data — see For AI agents.
Tools: 4
The Sigstore Rekor public transparency log — the immutable, append-only record of software signing events behind cosign, npm and PyPI provenance, and SLSA attestations.
Tools
rekor_log_info(...)— current log state: total entries, signed tree head, Merkle root, retired shards. Call it for the upper bound onlog_index.rekor_entry_by_index(log_index)— one entry by its integer position, body decoded.rekor_search_by_hash(hash | email)— given a sha256 artifact digest (or a signing-certificate email identity), every entry that signed it. Returns uuids.rekor_entry(uuid)— one entry by uuid, with signing certificate, integration time and inclusion proof.
Auth
Keyless.
Data sources
- https://rekor.sigstore.dev/api/v1/log — signed tree head and shard list.
- https://rekor.sigstore.dev/api/v1/log/entries?logIndex=N — entry by position.
- https://rekor.sigstore.dev/api/v1/index/retrieve — POST
{hash}or{email}, returns uuids. - https://rekor.sigstore.dev/api/v1/log/entries/{uuid} — entry by uuid.
Notes the next person would otherwise rediscover:
bodyis base64-encoded JSON. Every tool here decodes it intoentry_bodyand lifts the artifact digest and entry kind to the top level; a caller that reads the raw field gets an opaque blob.logIndexanduuidare different identifier spaces.rekor_search_by_hashreturns uuids, so it feedsrekor_entry, notrekor_entry_by_index.- Entry KINDS (
rekord,hashedrekord,intoto,dsse) do not share a body shape.summarize()looks each field up where that kind puts it and returns null where the kind has no equivalent — do not assumeartifact_digestis always populated. - The index search hashes want the
sha256:<hex>form. A bare hex digest is what every other tool prints, so both are accepted and normalised in-pack. - No entry for a digest is NOT evidence the artifact is bad — only that there
is no public signing record. The tool says so in its
note.
Tools
- rekor_log_info — Current state of the Sigstore Rekor public transparency log: total number of signing entries, the signed tree head, the Merkle root hash and every retired shard. AUTHORITATIVE for how many software si
- rekor_entry_by_index — Fetch one Sigstore Rekor transparency-log entry by its integer position in the log, with the base64 body already decoded: entry kind, signed artifact digest, signature, signing certificate, integratio
- rekor_search_by_hash — Given a sha256 digest of a file, container layer or package, find every Sigstore transparency-log entry that signed it — the answer to “was this artifact ever signed, and by whom”. Also searches by th
- rekor_entry — Fetch one Sigstore Rekor transparency-log entry by its uuid — the 80-hex id rekor_search_by_hash returns — decoded into entry kind, signed artifact digest, signature and signing certificate, integrati
Tools
rekor_entry— Fetch one Sigstore Rekor transparency-log entry by its uuid — the 80-hex id rekor_search_by_hash returns — decoded into entry kind, signed artifact digest, signature and signing certificate, integratirekor_entry_by_index— Fetch one Sigstore Rekor transparency-log entry by its integer position in the log, with the base64 body already decoded: entry kind, signed artifact digest, signature, signing certificate, integratiorekor_log_info— Current state of the Sigstore Rekor public transparency log: total number of signing entries, the signed tree head, the Merkle root hash and every retired shard. AUTHORITATIVE for how many software sirekor_search_by_hash— Given a sha256 digest of a file, container layer or package, find every Sigstore transparency-log entry that signed it — the answer to was this artifact ever signed, and by whom . Also searches by the