trykittai-mcp-server
Servidor mcp de TryKitt.ai
Un servidor FastMCP (Protocolo de Contexto de Modelo) que proporciona funciones de verificación y búsqueda de correo electrónico mediante la API TryKitt.ai . Este servidor permite a los asistentes de IA encontrar y verificar direcciones de correo electrónico B2B con alta precisión y bajas tasas de rebote.
Características
Verificación de correo electrónico : verifique direcciones de correo electrónico con SMTP avanzado y verificación general
Búsqueda de correo electrónico : encuentre direcciones de correo electrónico de personas usando su nombre y dominio de la empresa
Gestión de trabajos : seguimiento y control de la verificación de correo electrónico/búsqueda de trabajos
Procesamiento en tiempo real : obtenga resultados inmediatos para las operaciones de correo electrónico
Alta precisión : aprovecha los algoritmos de verificación avanzados de TryKitt.ai con una tasa de rebote <0,1 %
Related MCP server: ones-wiki-mcp-server
Instalación
Clonar este repositorio:
git clone https://github.com/avivshafir/trykittai-mcp-server
cd trykittai-mcp-serverInicializar un nuevo entorno de Python con uv:
# Initialize a new uv project (if starting fresh)
uv init
# Or create a virtual environment
uv venv
# Activate the virtual environment
source .venv/bin/activate # On macOS/LinuxInstalar dependencias usando uv:
# Using uv (recommended)
uv syncConfiguración
Obtén tu clave API de TryKitt.ai:
Visita TryKitt.ai
Regístrese para obtener una cuenta
Vaya a la configuración de su API para obtener su clave API
Establezca su clave API como una variable de entorno:
export TRYKITT_API_KEY="your_api_key_here"O cree un archivo .env en la raíz del proyecto:
TRYKITT_API_KEY=your_api_key_hereUso
Ejecución del servidor
Inicie el servidor FastMCP:
python server.pyEl servidor se iniciará y estará disponible para conexiones MCP.
Agregar a clientes MCP
Para utilizar este servidor con clientes compatibles con MCP, deberá configurar el cliente para que se conecte a este servidor.
Escritorio de Claude
Agregue la siguiente configuración a su archivo de configuración de Claude Desktop:
macOS : ~/Library/Application Support/Claude/claude_desktop_config.json Windows : %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"trykittai": {
"command": "python",
"args": ["/path/to/your/trykittai-mcp-server/server.py"],
"env": {
"TRYKITT_API_KEY": "your_api_key_here"
}
}
}
}Otros clientes de MCP
Para otros clientes compatibles con MCP, configúrelos para que se conecten a:
Comando :
pythonArgumentos :
["/path/to/your/trykittai-mcp-server/server.py"]Variables de entorno :
TRYKITT_API_KEY=your_api_key_here
Uso con uv
Si está utilizando uv, también puede ejecutar el servidor con:
{
"mcpServers": {
"trykittai": {
"command": "uv",
"args": ["run", "python", "server.py"],
"cwd": "/path/to/your/trykittai-mcp-server",
"env": {
"TRYKITT_API_KEY": "your_api_key_here"
}
}
}
}Nota : reemplace /path/to/your/trykittai-mcp-server con la ruta absoluta real a su directorio de proyecto y your_api_key_here con su clave API de TryKitt.ai real.
Herramientas disponibles
1. Verificación de correo electrónico ( verify_email_send )
Verificar si una dirección de correo electrónico es válida y se puede entregar.
Parámetros:
email(obligatorio): La dirección de correo electrónico para verificarcustom_data(opcional): datos personalizados para asociar con la solicitud
Ejemplo:
result = await verify_email_send("john.doe@example.com")2. Búsqueda de correo electrónico ( find_email )
Busque una dirección de correo electrónico para una persona según su nombre y el dominio de su empresa.
Parámetros:
full_name(obligatorio): El nombre completo de la personadomain(obligatorio): El dominio o sitio web de la empresalinkedin_url(opcional): URL del perfil de LinkedIn para una mayor precisióncustom_data(opcional): datos personalizados para asociar con la solicitud
Ejemplo:
result = await find_email(
full_name="John Doe",
domain="example.com",
linkedin_url="https://linkedin.com/in/johndoe"
)3. Estado del trabajo ( get_job_status )
Comprobar el estado de un trabajo enviado anteriormente.
Parámetros:
job_id(obligatorio): El ID del trabajo a comprobar
Ejemplo:
result = await get_job_status("job_123456")4. Lista de trabajos ( list_jobs )
Enumere todos los trabajos (Nota: este punto final puede tener disponibilidad limitada).
Ejemplo:
result = await list_jobs()Formato de respuesta de la API
Verificación de correo electrónico exitosa
{
"id": "job_123456",
"status": "completed",
"result": {
"email": "john.doe@example.com",
"valid": true,
"deliverable": true,
"confidence": 0.95,
"verification_type": "smtp_catchall"
}
}Búsqueda exitosa de correos electrónicos
{
"id": "job_789012",
"status": "completed",
"result": {
"email": "john.doe@example.com",
"confidence": 0.88,
"sources": ["pattern_matching", "web_scraping"]
}
}Manejo de errores
El servidor gestiona varios escenarios de error:
Claves API no válidas
Limitación de velocidad
Tiempos de espera de la red
Formatos de correo electrónico no válidos
Errores de verificación de dominio
Respuestas de error comunes:
{
"error": "Invalid API key",
"code": 401
}Configuración
Variables de entorno
TRYKITT_API_KEY: Su clave API de TryKitt.ai (obligatoria)
Configuración SSL
El servidor está configurado para funcionar con los puntos finales de la API de TryKitt.ai. La verificación SSL está deshabilitada por compatibilidad.
Desarrollo
Estructura del proyecto
trykittai-mcp-server/
├── server.py # Main FastMCP server implementation
├── pyproject.toml # Project dependencies and configuration
├── uv.lock # Dependency lock file
├── README.md # This file
├── LICENSE # MIT License
└── .venv/ # Virtual environmentDependencias
fastmcp: marco FastMCP para crear servidores MCPhttpx: Cliente HTTP asíncrono para solicitudes APIpydantic: Validación de datos y gestión de configuraciones
Acerca de TryKitt.ai
TryKitt.ai es un servicio avanzado de verificación y búsqueda de correo electrónico que:
Proporciona verificación de correo electrónico gratuita e ilimitada para usuarios individuales
Logra tasas de rebote <0,1% mediante verificación avanzada
Funciona de 2 a 5 veces más rápido que las soluciones alternativas
Utiliza servidores de identidad empresarial para la verificación general
Detecta cambios de trabajo y los valida contra sistemas reales
Obtenga más información en https://trykitt.ai/
Licencia
Este proyecto está licenciado bajo la licencia MIT: consulte el archivo de LICENCIA para obtener más detalles.
Contribuyendo
Bifurcar el repositorio
Crear una rama de características
Realiza tus cambios
Agregue pruebas si corresponde
Enviar una solicitud de extracción
Apoyo
Para cuestiones relacionadas con:
Este servidor MCP: Abra un problema en este repositorio
API de TryKitt.ai: Contacta con el soporte de TryKitt.ai
Marco FastMCP: consulte la documentación de FastMCP
Registro de cambios
versión 1.0.0
Versión inicial con verificación de correo electrónico y capacidades de búsqueda
Seguimiento del estado del trabajo
Soporte de procesamiento en tiempo real
Integración de FastMCP
Available Tools
4 toolsfind_emailC
Find an email address for a person.
Args:
full_name: The full name of the person
domain: The company domain or website
linkedin_url: Optional LinkedIn profile URL
custom_data: Optional custom data to associate with the request
| Name | Required | Description | Default |
|---|---|---|---|
| full_name | Yes | ||
| domain | Yes | ||
| linkedin_url | No | ||
| custom_data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool 'finds' an email address, implying a read-only operation, but does not specify accuracy, data sources, rate limits, or authentication needs. For a tool with no annotations and potential privacy implications, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the purpose, followed by parameter details. It uses a clear structure with bullet points for args. However, the parameter explanations are very brief and could be more informative, slightly reducing efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of finding email addresses, no annotations, no output schema, and low parameter coverage, the description is incomplete. It lacks details on return values, error handling, data sources, and accuracy, which are crucial for effective tool use. The description does not adequately compensate for the missing structured data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds minimal semantics beyond the input schema. It lists parameters with brief explanations (e.g., 'full_name: The full name of the person'), but with 0% schema description coverage, it does not fully compensate. The explanations are basic and do not provide format details or usage examples, leaving gaps for the required parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Find an email address for a person.' It specifies the verb ('find') and resource ('email address'), but does not distinguish it from sibling tools like 'verify_email_send', which might have overlapping functionality. The purpose is specific but lacks sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention sibling tools like 'verify_email_send' or specify contexts where this tool is preferred. Usage is implied only through the parameter descriptions, but no explicit when/when-not instructions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_job_statusB
Get the status of a job.
Args:
job_id: The ID of the job to check
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool 'Get[s] the status of a job,' implying a read-only operation, but doesn't clarify aspects like whether it requires authentication, has rate limits, returns specific status formats (e.g., pending, completed), or handles errors. This leaves significant gaps for an agent to understand how to use it effectively.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is highly concise and well-structured. It starts with a clear purpose statement, followed by a brief 'Args' section that lists the parameter with a simple explanation. There's no unnecessary information, and every sentence serves a functional role in guiding usage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It doesn't cover behavioral aspects like authentication needs, error handling, or what the status output looks like (e.g., string values, timestamps). For a tool that likely returns critical operational data, this leaves the agent without enough context to use it reliably in complex scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaningful context for the single parameter: 'job_id: The ID of the job to check.' This clarifies that 'job_id' is an identifier used to retrieve status, which is helpful since schema description coverage is 0% (the schema only provides a title and type without explanation). With one parameter, the baseline is 4, and the description compensates well by explaining its purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get the status of a job.' It uses a specific verb ('Get') and resource ('status of a job'), making the function unambiguous. However, it doesn't differentiate from sibling tools like 'list_jobs', which might provide a broader overview rather than specific status checks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'list_jobs' for listing multiple jobs or other tools for related operations. There's no context about prerequisites, such as needing a job ID from another operation, or when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_jobsD
List jobs
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure but offers none. 'List jobs' doesn't indicate whether this is a read-only operation, whether it requires authentication, what format results are returned in, if there are rate limits, or any other behavioral characteristics. The description fails to provide any operational context beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
While technically concise with just two words, this description represents under-specification rather than effective brevity. The single phrase 'List jobs' fails to provide necessary context that would help an agent understand when and how to use this tool. Conciseness should not come at the expense of clarity and completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, the description 'List jobs' is completely inadequate. It doesn't explain what constitutes a 'job' in this context, what information is returned, whether results are paginated, or any other operational details. The description fails to provide the minimal context needed for effective tool invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the input schema has 100% description coverage (though empty). With no parameters to document, the description doesn't need to compensate for schema gaps. The baseline for zero-parameter tools is 4, as there's no parameter semantics burden on the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List jobs' is a tautology that merely restates the tool name without adding meaningful context. It specifies the verb ('list') and resource ('jobs'), but provides no differentiation from sibling tools like 'get_job_status' or additional scope information. This minimal description fails to clarify what type of jobs are being listed or under what conditions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides absolutely no guidance on when to use this tool versus alternatives like 'get_job_status' or other sibling tools. There's no mention of appropriate contexts, prerequisites, or exclusions. Users must infer usage patterns from the tool name alone, which is insufficient for effective tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_email_sendC
verify an email using trykitt.
Args:
email: The email address to verify
custom_data: Optional custom data to associate with the request
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | |||
| custom_data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'verify an email using trykitt' but fails to explain key traits like whether this is a read-only or mutative operation, what the expected outcome is (e.g., sends an email, returns a status), or any rate limits or authentication needs. This leaves significant gaps in understanding the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loaded with the main purpose, followed by parameter details in a structured 'Args:' section. It avoids unnecessary elaboration, but the lack of context and behavioral details means it could be more informative without sacrificing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (2 parameters, no annotations, no output schema), the description is incomplete. It doesn't explain what 'verify' means in practice, what happens after invocation (e.g., sends an email, returns a job ID), or how it relates to sibling tools, leaving the agent with insufficient context for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description lists parameters ('email' and 'custom_data') and notes that 'custom_data' is optional, adding basic semantics beyond the input schema. However, with 0% schema description coverage, it doesn't fully compensate by explaining parameter formats (e.g., email validation rules, custom_data structure), leaving the agent with incomplete information for proper usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'verify an email using trykitt' which provides a basic verb+resource combination, but it's vague about what verification entails (e.g., sending a verification email, checking validity). It doesn't distinguish from siblings like 'find_email' or 'get_job_status', leaving ambiguity about the specific action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'find_email' or 'get_job_status'. The description lacks context about prerequisites, such as whether this initiates a verification process or checks an existing one, leaving the agent without clear usage instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
- First observed
find_email - First observed
get_job_status - First observed
list_jobs - First observed
verify_email_send
TDQS
Scored across 4 tools
Each tool has a clearly distinct purpose with no overlap: find_email locates email addresses, get_job_status checks job status, list_jobs enumerates jobs, and verify_email_send validates emails. The descriptions clearly differentiate their functions, eliminating any potential for agent misselection.
The naming follows a consistent verb_noun pattern (find_email, get_job_status, list_jobs, verify_email_send), with all tools using snake_case. The minor deviation is 'verify_email_send' which includes an extra verb 'send', but overall the pattern is predictable and readable.
With 4 tools, this server is well-scoped for its purpose of email and job management. Each tool earns its place by covering distinct aspects: email discovery, job tracking, and email verification, without being overly sparse or bloated.
The tool surface covers core operations like finding and verifying emails, and managing jobs, but has notable gaps. For example, there are no tools to create or delete jobs, or to handle email sending beyond verification, which could limit agent workflows in this domain.
Maintenance
Related MCP Connectors
Official MCP server for Agentwork — delegate tasks to AI agents with human-in-the-loop
Related MCP Servers
- -
- -
- -
- AlicenseNot gradedqualityAmaintenanceOfficial MCP Server for Buildkite.54MIT