How eneelkant/email-validation-tool works
MailSure is a self-hosted email-verification product served through MCP transports and an optional verify-only website API, with a static browser UI. The principal workflow accepts a single address, batch, or CSV; validation combines syntax, domain/DNS and provider signals, normalizes a result, and can cache it. MCP also exposes domain checks, job controls, statistics and disposable-list administration. README documents SMTP/catch-all as optional and disabled by default. Several validator and CSV implementations were not sampled; those links are omitted or documented with the README as evidence.
Main entry points: orchestrator.ts Validation Orchestrator · tools.ts MCP Tools · website-api.ts Website API · lifecycle.ts Runtime Lifecycle
Components 27
Interfaces
- HTTP Service
src/http/app.ts - MCP Server
src/mcp/server.ts - MCP Tools
src/mcp/tools.ts - Website API
src/http/website-api.ts
Validation
- Syntax Checks
src/validators/syntax.ts - Validation Orchestrator
src/validators/orchestrator.ts - DNS Checks
src/validators/dns.ts - Provider Classification
src/validators/disposable.ts - Free Providers
src/validators/free-provider.ts - Role Locals
src/validators/role.ts - SMTP Diagnostics
src/validators/smtp.ts - Catch-all Checks
src/validators/catch-all.ts - Result Normalization
src/validators/result-normalize.ts - Result Schemas
src/types/results.ts
Bulk Processing
- Batch Validation
src/processing/batch.ts - CSV Jobs
src/processing/csv.ts
State and Operations
- SQLite Cache and Jobs
src/database/db.ts - Runtime Lifecycle
src/runtime/lifecycle.ts - Runtime Configuration
src/config/env.ts - Disposable Sync
src/validators/disposable-sync.ts - Bounded HTTP Reads
src/utils/bounded-response.ts
Website
- Static Web UI
public/js/app.js - Browser API Client
public/js/verify.js - Browser CSV
public/js/csv.js - Frontend Config
public/js/config.js
Other components
- MCP Client
- Browser User
Connections 36
- MCP Client → MCP Server: uses
README.md - MCP Server → MCP Tools: registers tools
src/mcp/server.ts - HTTP Service → MCP Server: creates handler
src/http/app.ts - Browser User → Static Web UI: uses
README.md - Static Web UI → Browser API Client: calls
public/js/app.js - Static Web UI → Browser CSV: uses
public/js/app.js - Static Web UI → Frontend Config: reads config
README.md - Browser API Client → Website API: requests verification
README.md - HTTP Service → Website API: mounts
src/http/app.ts - Website API → Validation Orchestrator: validates
src/http/website-api.ts - Website API → Batch Validation: validates batches
src/http/website-api.ts - MCP Tools → Validation Orchestrator: validates
src/mcp/tools.ts - MCP Tools → Batch Validation: validates batches
src/mcp/tools.ts - MCP Tools → CSV Jobs: starts jobs
src/mcp/tools.ts - MCP Tools → SQLite Cache and Jobs: reads and writes
src/mcp/tools.ts - Validation Orchestrator → Syntax Checks: checks syntax
- Validation Orchestrator → DNS Checks: checks DNS
README.md - Validation Orchestrator → Provider Classification: classifies domains
README.md - Provider Classification → Free Providers: excludes overlaps
src/validators/disposable-sync.ts - Validation Orchestrator → Role Locals: checks role locals
README.md - Validation Orchestrator → SMTP Diagnostics: optionally checks
README.md - Validation Orchestrator → Catch-all Checks: optionally checks
README.md - Website API → Result Normalization: normalizes results
src/http/website-api.ts - MCP Tools → Result Normalization: normalizes results
src/mcp/tools.ts - Result Normalization → Result Schemas: shapes result
src/database/db.ts - Batch Validation → Validation Orchestrator: validates emails
- CSV Jobs → Batch Validation: processes batches
README.md - CSV Jobs → SQLite Cache and Jobs: tracks jobs
- HTTP Service → Runtime Lifecycle: checks readiness
src/http/app.ts - Runtime Lifecycle → SQLite Cache and Jobs: initializes
src/runtime/lifecycle.ts - Runtime Lifecycle → Provider Classification: loads dataset
src/runtime/lifecycle.ts - Runtime Lifecycle → Free Providers: loads dataset
src/runtime/lifecycle.ts - SQLite Cache and Jobs → Runtime Configuration: reads settings
src/database/db.ts - Disposable Sync → Bounded HTTP Reads: limits downloads
src/validators/disposable-sync.ts - Disposable Sync → Provider Classification: replaces dataset
src/validators/disposable-sync.ts - Disposable Sync → Free Providers: filters overlaps
src/validators/disposable-sync.ts