Verify if an email address is valid and deliverable
Email Verification

Verify if an email address is valid and deliverable
---
name: verify-email
description: Verify if an email address is valid and deliverable
source: orthogonal
---
# Email Verification
## Setup
Read your credentials from ~/.gooseworks/credentials.json:
```bash
export GOOSEWORKS_API_KEY=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json'))['api_key'])")
export GOOSEWORKS_API_BASE=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json')).get('api_base','https://api.gooseworks.ai'))")
```
If ~/.gooseworks/credentials.json does not exist, tell the user to run: `npx gooseworks login`Overview
If ~/.gooseworks/credentials.json does not exist, tell the user to run: npx gooseworks login
Manual install (npx, ZIP)
npx skills add gooseworks-ai/goose-skills --skill verify-email -g -a claude-codemkdir -p ~/.claude/skills && curl -sL https://codeload.github.com/gooseworks-ai/goose-skills/tar.gz/615c685f34f8 \
| tar -xz -C ~/.claude/skills --strip-components=4 goose-skills-615c685f34f8/skills/lead-generation/capabilities/verify-emailNew-Item -ItemType Directory -Force "$HOME\.claude\skills" | Out-Null; Invoke-WebRequest "https://m.agentalley.io/zip/fb430daed33072185841/verify-email.zip" -OutFile "$env:TEMP\verify-email.zip"; Expand-Archive "$env:TEMP\verify-email.zip" -DestinationPath "$HOME\.claude\skills" -ForceConnects with Agent Alley MCP · agentalley.io/mcp
Files included
SKILL.md5.0 KBskill.meta.json280 B
Read the files here
gooseworks-ai/
Show the full text135 lines
Email Verification
Setup
Read your credentials from ~/.gooseworks/credentials.json:
export GOOSEWORKS_API_KEY=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json'))['api_key'])")
export GOOSEWORKS_API_BASE=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json')).get('api_base','https://api.gooseworks.ai'))")
If ~/.gooseworks/credentials.json does not exist, tell the user to run: npx gooseworks login
All endpoints use Bearer auth: -H "Authorization: Bearer $GOOSEWORKS_API_KEY"
Check if an email address is valid, exists, and can receive mail. Prevent bounces before sending.
When to Use
- User wants to verify an email before sending
- User asks "is this email address real?"
- Cleaning an email list
- Before cold outreach to avoid bounces
- Validating user-provided email addresses
How It Works
Uses Hunter or Tomba APIs to verify email deliverability through multiple checks including syntax, domain, and mailbox verification.
Usage
Verify with Hunter
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"hunter","path":"/v2/email-verifier","query":{"email":"[email protected]"}}'
Verify with Tomba
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"tomba","path":"/v1/email-verifier","query":{"email":"[email protected]"}}'
Parameters
- email (required) - The email address to verify
Response
Hunter Response
Returns data object:
- status (string) -
valid,invalid,accept_all, orunknown - score (integer) - Confidence score 0-100
- result (string) -
deliverable,undeliverable, orrisky(deprecated — usestatus) - regexp (boolean) - Syntax is valid
- gibberish (boolean) - Address looks random
- disposable (boolean) - Temporary email service
- webmail (boolean) - Free webmail provider (Gmail, Yahoo, etc.)
- mx_records (boolean) - Domain has MX records
- smtp_server (boolean) - SMTP server responds
- smtp_check (boolean) - Mailbox exists on server
- accept_all (boolean) - Server accepts all addresses
- block (boolean) - Email is blocked
- sources (array) - Web pages where this email was found
Tomba Response
Returns data.email object:
- status (string) -
valid,invalid, oraccept_all - result (string) -
deliverable,undeliverable, orrisky - score (integer) - Confidence score 0-100
- smtp_provider (string) - Email provider name (e.g., "Google Workspace")
- mx (object) -
recordsarray of MX hostnames - mx_check, smtp_server, smtp_check (boolean) - Verification checks
- accept_all, greylisted, block (boolean) - Server behavior flags
- gibberish, disposable, webmail, regex (boolean) - Address quality checks
- whois (object) - Domain registration:
registrar_name,referral_url,created_date
Also returns data.sources array with uri, website_url, extracted_on, last_seen_on, still_on_page.
Result Types
| Status | Meaning | Action |
|---|---|---|
| valid | Mailbox exists and accepts mail | Safe to send |
| invalid | Mailbox doesn't exist or domain has no MX | Don't send |
| accept_all | Server accepts any address — can't confirm mailbox | Send with caution |
| unknown | Couldn't verify (timeout, greylisting) | Verify manually |
Examples
User: "Check if [email protected] is a real email"
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"hunter","path":"/v2/email-verifier","query":{"email":"[email protected]"}}'
User: "Verify [email protected] before I send my pitch"
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"tomba","path":"/v1/email-verifier","query":{"email":"[email protected]"}}'
Error Handling
- 400 - Missing or malformed
emailparameter - 401 - Invalid API key — check
orth auth - 429 - Rate limit exceeded — wait and retry
- If both APIs return
unknown, the mail server is likely blocking verification — try later - Tomba may return
greylisted: true— means the server deferred; retry after a few minutes
Tips
- Always verify emails before bulk sending to protect sender reputation
- "Valid" doesn't guarantee delivery - content still matters
- Role-based emails (info@, sales@) may be valid but less effective for outreach
- Disposable emails (tempmail, etc.) are detected and flagged
- Some corporate domains block verification - "unknown" doesn't mean invalid
| 1 | |
| 2 | name verify-email |
| 3 | description Verify if an email address is valid and deliverable |
| 4 | source orthogonal |
| 5 | |
| 6 | |
| 7 | |
| 8 | # Email Verification |
| 9 | |
| 10 | ## Setup |
| 11 | |
| 12 | Read your credentials from ~/.gooseworks/credentials.json: |
| 13 | |
| 14 | export GOOSEWORKS_API_KEY=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json'))['api_key'])") |
| 15 | export GOOSEWORKS_API_BASE=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json')).get('api_base','https://api.gooseworks.ai'))") |
| 16 | |
| 17 | |
| 18 | If ~/.gooseworks/credentials.json does not exist, tell the user to run: `npx gooseworks login` |
| 19 | |
| 20 | All endpoints use Bearer auth: `-H "Authorization: Bearer $GOOSEWORKS_API_KEY"` |
| 21 | |
| 22 | |
| 23 | Check if an email address is valid, exists, and can receive mail. Prevent bounces before sending. |
| 24 | |
| 25 | ## When to Use |
| 26 | |
| 27 | User wants to verify an email before sending |
| 28 | User asks "is this email address real?" |
| 29 | Cleaning an email list |
| 30 | Before cold outreach to avoid bounces |
| 31 | Validating user-provided email addresses |
| 32 | |
| 33 | ## How It Works |
| 34 | |
| 35 | Uses Hunter or Tomba APIs to verify email deliverability through multiple checks including syntax, domain, and mailbox verification. |
| 36 | |
| 37 | ## Usage |
| 38 | |
| 39 | ### Verify with Hunter |
| 40 | |
| 41 | |
| 42 | curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ |
| 43 | -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ |
| 44 | -H "Content-Type: application/json" \ |
| 45 | -d '{"api":"hunter","path":"/v2/email-verifier","query":{"email":"[email protected]"}}' |
| 46 | |
| 47 | |
| 48 | ### Verify with Tomba |
| 49 | |
| 50 | |
| 51 | curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ |
| 52 | -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ |
| 53 | -H "Content-Type: application/json" \ |
| 54 | -d '{"api":"tomba","path":"/v1/email-verifier","query":{"email":"[email protected]"}}' |
| 55 | |
| 56 | |
| 57 | ## Parameters |
| 58 | |
| 59 | **email** (required) - The email address to verify |
| 60 | |
| 61 | ## Response |
| 62 | |
| 63 | ### Hunter Response |
| 64 | Returns `data` object: |
| 65 | **status** (string) - `valid`, `invalid`, `accept_all`, or `unknown` |
| 66 | **score** (integer) - Confidence score 0-100 |
| 67 | **result** (string) - `deliverable`, `undeliverable`, or `risky` *(deprecated — use `status`)* |
| 68 | **regexp** (boolean) - Syntax is valid |
| 69 | **gibberish** (boolean) - Address looks random |
| 70 | **disposable** (boolean) - Temporary email service |
| 71 | **webmail** (boolean) - Free webmail provider (Gmail, Yahoo, etc.) |
| 72 | **mx_records** (boolean) - Domain has MX records |
| 73 | **smtp_server** (boolean) - SMTP server responds |
| 74 | **smtp_check** (boolean) - Mailbox exists on server |
| 75 | **accept_all** (boolean) - Server accepts all addresses |
| 76 | **block** (boolean) - Email is blocked |
| 77 | **sources** (array) - Web pages where this email was found |
| 78 | |
| 79 | ### Tomba Response |
| 80 | Returns `data.email` object: |
| 81 | **status** (string) - `valid`, `invalid`, or `accept_all` |
| 82 | **result** (string) - `deliverable`, `undeliverable`, or `risky` |
| 83 | **score** (integer) - Confidence score 0-100 |
| 84 | **smtp_provider** (string) - Email provider name (e.g., "Google Workspace") |
| 85 | **mx** (object) - `records` array of MX hostnames |
| 86 | **mx_check**, **smtp_server**, **smtp_check** (boolean) - Verification checks |
| 87 | **accept_all**, **greylisted**, **block** (boolean) - Server behavior flags |
| 88 | **gibberish**, **disposable**, **webmail**, **regex** (boolean) - Address quality checks |
| 89 | **whois** (object) - Domain registration: `registrar_name`, `referral_url`, `created_date` |
| 90 | |
| 91 | Also returns `data.sources` array with `uri`, `website_url`, `extracted_on`, `last_seen_on`, `still_on_page`. |
| 92 | |
| 93 | ## Result Types |
| 94 | |
| 95 | | Status | Meaning | Action | |
| 96 | |--------|---------|--------| |
| 97 | | **valid** | Mailbox exists and accepts mail | Safe to send | |
| 98 | | **invalid** | Mailbox doesn't exist or domain has no MX | Don't send | |
| 99 | | **accept_all** | Server accepts any address — can't confirm mailbox | Send with caution | |
| 100 | | **unknown** | Couldn't verify (timeout, greylisting) | Verify manually | |
| 101 | |
| 102 | ## Examples |
| 103 | |
| 104 | **User:** "Check if [email protected] is a real email" |
| 105 | |
| 106 | curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ |
| 107 | -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ |
| 108 | -H "Content-Type: application/json" \ |
| 109 | -d '{"api":"hunter","path":"/v2/email-verifier","query":{"email":"[email protected]"}}' |
| 110 | |
| 111 | |
| 112 | **User:** "Verify [email protected] before I send my pitch" |
| 113 | |
| 114 | curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ |
| 115 | -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ |
| 116 | -H "Content-Type: application/json" \ |
| 117 | -d '{"api":"tomba","path":"/v1/email-verifier","query":{"email":"[email protected]"}}' |
| 118 | |
| 119 | |
| 120 | ## Error Handling |
| 121 | |
| 122 | **400** - Missing or malformed `email` parameter |
| 123 | **401** - Invalid API key — check `orth auth` |
| 124 | **429** - Rate limit exceeded — wait and retry |
| 125 | If both APIs return `unknown`, the mail server is likely blocking verification — try later |
| 126 | Tomba may return `greylisted: true` — means the server deferred; retry after a few minutes |
| 127 | |
| 128 | ## Tips |
| 129 | |
| 130 | Always verify emails before bulk sending to protect sender reputation |
| 131 | "Valid" doesn't guarantee delivery - content still matters |
| 132 | Role-based emails (info@, sales@) may be valid but less effective for outreach |
| 133 | Disposable emails (tempmail, etc.) are detected and flagged |
| 134 | Some corporate domains block verification - "unknown" doesn't mean invalid |
| 135 |
Details
- Updated
- Sep 21, 2026
- License
- MIT
- Stars on the repo
- ★ 1,220
- Checked
- Source
- gooseworks-ai/goose-skills ↗
- Creator
- gooseworks-ai · 206 listings
Made with verify-email

Similar skills
See all →
SkillAct as the company research engine for /sales research <urlCompany Research & Firmographic Analysis
SkillEthical people-finding and identity verificationPrivateinvestigator
SkillFree People Search to discover ICP-matching leadsApollo lead finder
SkillFind decision-makers at a specific company using ApolloCompany contact finder
SkillFind company funding history, investorsCompany funding search
SkillFull company intelligence reportCompany Intelligence - Comprehensive Company ReportsMore from gooseworks-ai
SkillMine the highest-converting ad angles from customer reviewsAd angle miner
SkillAnalyze ad campaign performance data to identify what'sAd campaign analyzer
SkillFor paid lead-gen and participant-recruitment adsAd lead quality analyzer
SkillAnalyze the message match between your ads and landing pagesAd to landing page auditor
SkillCheck and improve your brand's visibility across AI searchAeo
SkillSearch Amazon products - find items, compare pricesAmazon Product Search