Email Verification

Verify if an email address is valid and deliverable

How to use it

  1. Hit Copy the whole skill.
  2. Claude: ⋯ → Download .md, then Customize → Skills → Add → Upload skill.
    ChatGPT: make a Project and paste it into Instructions.
    Neither? Paste it at the top of a new chat — it works for that chat.
  3. Describe your job in plain words. The AI follows the skill from there.
Claude Code — installs the whole folder, not just SKILL.md
npx degit gooseworks-ai/goose-skills/skills/lead-generation/capabilities/verify-email#main ~/.claude/skills/verify-email

For one project only, change the path to .claude/skills/verify-email.

Not working?
  • Check which app you pasted it into — the steps above name the right one.
  • Some skills need the paid tier of Claude or ChatGPT.
Step-by-step guide with screenshots · Ask in the forum

Paste into Claude, ChatGPT or Cursor.

Show the full text135 lines
verify-email/SKILL.md135 lines5.0 KBpushed 96d agoRawView on GitHub

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, or unknown
  • score (integer) - Confidence score 0-100
  • result (string) - deliverable, undeliverable, or risky (deprecated — use status)
  • 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, or accept_all
  • result (string) - deliverable, undeliverable, or risky
  • score (integer) - Confidence score 0-100
  • smtp_provider (string) - Email provider name (e.g., "Google Workspace")
  • mx (object) - records array 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 email parameter
  • 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---
2name: verify-email
3description: Verify if an email address is valid and deliverable
4source: orthogonal
5---
6 
7 
8# Email Verification
9 
10## Setup
11 
12Read your credentials from ~/.gooseworks/credentials.json:
13```bash
14export GOOSEWORKS_API_KEY=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json'))['api_key'])")
15export GOOSEWORKS_API_BASE=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json')).get('api_base','https://api.gooseworks.ai'))")
16```
17 
18If ~/.gooseworks/credentials.json does not exist, tell the user to run: `npx gooseworks login`
19 
20All endpoints use Bearer auth: `-H "Authorization: Bearer $GOOSEWORKS_API_KEY"`
21 
22 
23Check 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 
35Uses 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```bash
42curl -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```bash
51curl -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
64Returns `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
80Returns `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 
91Also 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```bash
106curl -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```bash
114curl -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 

Discussion

Alternatives

Also in Company & contact data