Enrichley validates email addresses, and it is unusually good at the hard case: catch-all domains that accept everything and tell you nothing. Running a list through it before outreach protects a sending reputation that takes months to rebuild.
Enrichley is the gate. Everything enrichment produced passes through it on the way to a sequencer.
the waterfall whose output Enrichley checks
the last stop before anything sends
protect the mailboxes doing the volume
pair a clean list with a mailbox you can check is healthy
a second opinion on the borderline addresses
A skill is a whole pipeline your agent already knows. These ones call Enrichley as part of the run.
Top GitHub contributors at top companies. Enrich via Prospeo for a never-resting senior engineering pipeline.
Re-qualify cold Recruit CRM candidates against the current ICP. Warm leads back into active flow.
Every tool ships with a written playbook, and the agent loads it before the first call. Auth, rate limits, what each call costs, which actions need your approval, and the mistakes worth avoiding. It is the difference between an agent that knows the tool and one that guesses at it.
Read the Enrichley docs →HOW in lib/enrichley.py. Docs cached at reference/docs/enrichley/raw/.
https://api.enrichley.io/api/v1 · Auth: header x-api-key (env ENRICHLEY_API_KEY; never hardcode). Rate limit ~10 req/s, 10 concurrent.validate_email(email) → POST /validate-single-email. Specialises in catch-all/risky verdicts.request().Final deliverability gate before sending: run emails (from Apollo/Lusha/LeadMagic/FullEnrich) through Enrichley, drop undeliverable, keep catch-alls it clears. Per-row in a deterministic loop for volume.
lib/enrichley.pyImport: from lib.enrichley import Enrichley → instantiate Enrichley() (reads key from env). Base: https://api.enrichley.io/api/v1. Generic passthrough: request(method, path, *, params, json).
validate_email(email: str, **opts) -> dict — POST /validate-single-email — validate one email (handles catch-all/risky).