EmailVerify LogoEmailVerify

Agent Skills

Email checker agent skills for AI. Verify emails in AI workflows and automation pipelines.

Les compétences d'agent sont des capacités pré-construites qui peuvent être ajoutées aux agents IA pour étendre leurs fonctionnalités. EmailVerify fournit des compétences de vérification d'e-mail pour les frameworks d'agents IA populaires.

Que sont les compétences d'agent ?

Les compétences d'agent sont des composants modulaires et réutilisables qui donnent aux agents IA des capacités spécifiques :

  • Plug-and-play : Ajoutez des compétences à votre agent sans écrire de logique de vérification
  • Interface standardisée : Fonctionne avec différents frameworks d'agents
  • Bonnes pratiques intégrées : Gestion des erreurs, limitation de débit et mise en cache incluses

Frameworks d'agents supportés

FrameworkType de compétenceStatut
Claude Agent SDKOutilSupporté
AutoGPTPluginSupporté
LangChain AgentsOutilSupporté
CrewAIOutilSupporté
SuperAGIOutilBientôt disponible

Claude Agent SDK

Le Claude Agent SDK facilite la création d'agents IA personnalisés. Ajoutez la vérification d'e-mail comme outil :

import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic();

const tools: Anthropic.Tool[] = [
  {
    name: "verify_email",
    description: `Verify if an email address is valid and deliverable.

Returns:
- status: "valid", "invalid", or "unknown"
- deliverable: whether the email can receive messages
- disposable: whether it's a temporary email service
- role: whether it's a role-based address (info@, support@)
- score: confidence score from 0 to 1`,
    input_schema: {
      type: "object",
      properties: {
        email: {
          type: "string",
          description: "The email address to verify",
        },
      },
      required: ["email"],
    },
  },
];

async function verifyEmail(email: string) {
  const response = await fetch("https://api.emailverify.ai/v1/verify", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.EMAILVERIFY_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({ email }),
  });
  return response.json();
}

async function processToolCall(
  toolName: string,
  toolInput: Record<string, string>
) {
  if (toolName === "verify_email") {
    return await verifyEmail(toolInput.email);
  }
  throw new Error(`Unknown tool: ${toolName}`);
}

async function agentLoop(userMessage: string) {
  const messages: Anthropic.MessageParam[] = [
    { role: "user", content: userMessage },
  ];

  while (true) {
    const response = await client.messages.create({
      model: "claude-sonnet-4-20250514",
      max_tokens: 4096,
      tools,
      messages,
    });

    // Check if we need to process tool calls
    if (response.stop_reason === "tool_use") {
      const toolUseBlocks = response.content.filter(
        (block): block is Anthropic.ToolUseBlock => block.type === "tool_use"
      );

      const toolResults: Anthropic.ToolResultBlockParam[] = [];

      for (const toolUse of toolUseBlocks) {
        const result = await processToolCall(
          toolUse.name,
          toolUse.input as Record<string, string>
        );
        toolResults.push({
          type: "tool_result",
          tool_use_id: toolUse.id,
          content: JSON.stringify(result),
        });
      }

      messages.push({ role: "assistant", content: response.content });
      messages.push({ role: "user", content: toolResults });
    } else {
      // Agent is done
      const textBlock = response.content.find(
        (block): block is Anthropic.TextBlock => block.type === "text"
      );
      return textBlock?.text;
    }
  }
}

// Utilisation
const result = await agentLoop(
  "I have a list of emails to verify: john@google.com, test@mailinator.com, support@microsoft.com. Check each one and tell me which are safe to use."
);
console.log(result);

Intégration CrewAI

Ajoutez la vérification d'e-mail à vos agents CrewAI :

from crewai import Agent, Task, Crew
from crewai_tools import tool
import requests
import os

@tool("Email Verification Tool")
def verify_email(email: str) -> str:
    """Verify if an email address is valid and deliverable.

    Args:
        email: The email address to verify

    Returns:
        Verification result with status, deliverability, and risk flags
    """
    response = requests.post(
        'https://api.emailverify.ai/v1/verify',
        headers={
            'Authorization': f'Bearer {os.environ["EMAILVERIFY_API_KEY"]}',
            'Content-Type': 'application/json',
        },
        json={'email': email}
    )
    result = response.json()
    return f"Email: {email}, Status: {result['status']}, Score: {result['score']}"

# Créer un agent avec la compétence de vérification
data_quality_agent = Agent(
    role='Data Quality Specialist',
    goal='Ensure all email addresses in the database are valid and deliverable',
    backstory='Expert in data validation and email deliverability',
    tools=[verify_email],
    verbose=True
)

# Créer une tâche
verification_task = Task(
    description='Verify the following email addresses and report which ones are invalid: {emails}',
    expected_output='A report of all emails with their verification status',
    agent=data_quality_agent
)

# Exécuter l'équipe
crew = Crew(
    agents=[data_quality_agent],
    tasks=[verification_task]
)

result = crew.kickoff(inputs={
    'emails': 'john@google.com, fake@invalid.xyz, test@mailinator.com'
})
print(result)

Plugin AutoGPT

Créez un plugin AutoGPT pour la vérification d'e-mail :

# autogpt_plugins/emailverify/__init__.py
from typing import Any, Dict, List, Optional, Tuple, TypeVar
import requests
import os

PromptGenerator = TypeVar("PromptGenerator")

class EmailVerifyPlugin:
    def __init__(self):
        self.api_key = os.environ.get("EMAILVERIFY_API_KEY")

    @staticmethod
    def get_name() -> str:
        return "EmailVerify Email Verification"

    def can_handle_post_prompt(self) -> bool:
        return True

    def post_prompt(self, prompt: PromptGenerator) -> PromptGenerator:
        prompt.add_command(
            "verify_email",
            "Verify if an email is valid",
            {"email": "<email_address>"},
            self.verify_email
        )
        return prompt

    def verify_email(self, email: str) -> str:
        response = requests.post(
            'https://api.emailverify.ai/v1/verify',
            headers={
                'Authorization': f'Bearer {self.api_key}',
                'Content-Type': 'application/json',
            },
            json={'email': email}
        )
        result = response.json()

        if result['status'] == 'valid':
            return f"✅ {email} is valid (score: {result['score']})"
        elif result['status'] == 'invalid':
            return f"❌ {email} is invalid"
        else:
            return f"⚠️ {email} status unknown"

Bonnes pratiques

1. Description de compétence

Écrivez des descriptions claires pour que l'agent sache quand utiliser la compétence :

description: `Verify if an email address is valid and deliverable.

Use this skill when:
- User asks to check an email address
- Validating contact information before saving
- Cleaning email lists
- Checking if an email is disposable or role-based

Returns: status, deliverability, disposable flag, role flag, confidence score`

2. Gestion des erreurs

Intégrez une gestion robuste des erreurs dans votre compétence :

@tool("Email Verification")
def verify_email(email: str) -> str:
    try:
        response = requests.post(
            'https://api.emailverify.ai/v1/verify',
            headers={
                'Authorization': f'Bearer {os.environ["EMAILVERIFY_API_KEY"]}',
                'Content-Type': 'application/json',
            },
            json={'email': email},
            timeout=30
        )

        if response.status_code == 429:
            return "Rate limit exceeded. Please try again later."

        response.raise_for_status()
        return response.json()

    except requests.exceptions.Timeout:
        return "Verification timed out. Please try again."
    except Exception as e:
        return f"Verification failed: {str(e)}"

3. Opérations en lot

Pour plusieurs e-mails, utilisez l'endpoint en masse :

const verifyBulkSkill = {
  name: "verify_emails_bulk",
  description: "Verify multiple email addresses at once. More efficient for lists.",
  input_schema: {
    type: "object",
    properties: {
      emails: {
        type: "array",
        items: { type: "string" },
        description: "Array of emails to verify (max 100)",
      },
    },
    required: ["emails"],
  },
};

Prochaines étapes

On this page