@pipeworx/crtsh

Connect: https://gateway.pipeworx.io/crtsh/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: 2

Certificate Transparency log search from crt.sh — every TLS certificate ever issued for a domain and its subdomains, with issuer, validity window, serial number and the full SAN list.

Tools

  • crtsh_search_domain(domain, include_subdomains?, exclude_expired?, limit?) — every logged certificate for a domain, de-duplicated by certificate id and sorted newest-first, plus unique_names: every distinct hostname seen across all of them. That list is the subdomain-enumeration answer most callers actually want.
  • crtsh_certificate(id?, serial?, include_pem?) — one certificate by crt.sh id or by hex serial number. Returns the PEM body; a lookup by serial also carries the logged metadata, a lookup by id returns the PEM alone (see Traps).

Auth

Keyless.

Data sources

crt.sh is operated by Sectigo and is a JSON view over a PostgreSQL database of the public Certificate Transparency logs.

Traps

  • crt.sh is slow. A wildcard query on a large domain routinely takes 10-20s and the server enforces no query timeout of its own. Every call in this pack is bound at 25s rather than the pack default.
  • output=json is honoured only for identity-style queriesq=, serial=, Identity=. ?id=<n>&output=json answers the literal string Unsupported output type: json with HTTP 200. Parsed without checking, that is a silent zero; crtJson() rejects any body that does not start with [ or {.
  • ?d=<id> and ?id=<id> are different parameters. d returns the PEM; id renders an HTML page. This is why crtsh_certificate can return the PEM for an id but not its metadata — there is no JSON-by-id endpoint, so metadata arrives only on the serial= path.
  • name_value packs every SAN into one newline-separated field. Splitting it is the difference between reporting 8 certificates and the 40 hostnames the caller asked for.
  • One certificate appears as several rows — crt.sh returns one row per (certificate, matching identity), so a cert with six matching SANs is six rows with the same id. De-duplicate by id or every count is inflated.
  • A precertificate and its final certificate are two CT entries with two crt.sh ids and the same serial number, so an id count roughly doubles the number of certificates actually issued. crtsh_search_domain reports both: total_log_entries_found (distinct crt.sh ids) and unique_certificates_found (distinct serials). Quote the second one when answering “how many certificates”.
  • CT covers publicly trusted CAs only. A host behind an internal or private CA appears nowhere here; an empty result is not proof the host does not exist.

Tools

  • crtsh_search_domain — “Find subdomains of [domain]” / “what TLS certificates exist for [domain]” / “certificate transparency for [host]” / “who issued the cert for [site]” — every certificate ever logged to the public Cert
  • crtsh_certificate — “Show me certificate [crt.sh id]” / “get the PEM for cert [id]” / “which certificate has serial [hex]” — fetch one logged certificate from crt.sh by its crt.sh id or by its hex serial number. Returns

Tools

  • crtsh_certificate — Show me certificate [crt.sh id] / get the PEM for cert [id] / which certificate has serial [hex] — fetch one logged certificate from crt.sh by its crt.sh id or by its hex serial number. Returns the PE
  • crtsh_search_domain — Find subdomains of [domain] / what TLS certificates exist for [domain] / certificate transparency for [host] / who issued the cert for [site] — every certificate ever logged to the public Certificate

Regenerated from source · build September 18, 2026