> ## Documentation Index
> Fetch the complete documentation index at: https://docs.oneshotagent.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Verify Email

> Verify email address deliverability

## Overview

Verify whether an email address is deliverable. Checks MX records, mailbox existence, and other factors to determine if an email will be successfully delivered.

## Request Body

<ParamField body="email" type="string" required>
  Email address to verify
</ParamField>

<Snippet file="audit-context-params.mdx" />

## Response (202 - Processing)

```json theme={null}
{
  "request_id": "req_abc123",
  "status": "processing",
  "tool": "verify_email",
  "message": "Email verification job queued successfully"
}
```

## Job Result

```json theme={null}
{
  "status": "completed",
  "result": {
    "email": "user@example.com",
    "valid": true,
    "deliverable": true,
    "catch_all": false,
    "disposable": false
  }
}
```

### Result Fields

| Field         | Type      | Description                                               |
| ------------- | --------- | --------------------------------------------------------- |
| `valid`       | `boolean` | Email format and domain are valid                         |
| `deliverable` | `boolean` | Mailbox exists and can receive email                      |
| `catch_all`   | `boolean` | Domain accepts all emails (can't verify specific mailbox) |
| `disposable`  | `boolean` | Temporary/disposable email address                        |

## SDK Usage

```typescript theme={null}
const result = await agent.verifyEmail({
  email: "user@example.com",
});

if (result.deliverable) {
  console.log("Email is deliverable");
} else if (result.catch_all) {
  console.log("Catch-all domain — may or may not deliver");
} else if (result.disposable) {
  console.log("Disposable email — skip");
}
```

## Example: Verify Before Sending

```typescript theme={null}
// Find email first
const found = await agent.findEmail({
  full_name: "John Doe",
  company_domain: "example.com",
});

if (found.found) {
  // Verify before sending
  const verification = await agent.verifyEmail({
    email: found.email,
  });

  if (verification.deliverable) {
    await agent.email({
      to: found.email,
      subject: "Hello",
      body: "Your message here...",
    });
  } else {
    console.log(`Skipping undeliverable email (catch_all: ${verification.catch_all}, disposable: ${verification.disposable})`);
  }
}
```

## Best Practices

1. **Always verify before bulk sends** - Reduces bounce rates
2. **Handle catch-all domains** - These accept all emails but may not deliver
3. **Skip disposable emails** - Usually not worth sending to
4. **Consider role-based emails** - May go to shared inboxes
