Data Tools

data-tools is the email-finding server. It takes a person’s name and a company domain, generates every common email pattern (first@, first.last@, flast@, f.last@, etc.), and verifies each candidate against the domain’s mail server via SMTP using Reacher — without sending a single email.

Endpoint

https://data.gtm-engine.sh
TransportPath
MCP/mcp
REST/api/v0/{tool_name}

Tools

ToolTokensDescription
ping0Health check
get_email5Find a person’s professional email

get_email

ParameterTypeRequiredDescription
namestringYesFull name of the person (e.g. "Justin Mares")
domainstringYesCompany domain (e.g. "kettleandfire.com")
input_parametersobjectNoFree-form metadata echoed back in the response (useful for batch processing)
$curl -X POST https://data.gtm-engine.sh/api/v0/get_email \
> -H "Authorization: Bearer $GTM_ENGINE_API_KEY" \
> -H "Content-Type: application/json" \
> -d '{
> "name": "Justin Mares",
> "domain": "kettleandfire.com",
> "input_parameters": {"source": "linkedin"}
> }'
1{
2 "email": "justin@kettleandfire.com",
3 "is_catch_all": false,
4 "domain": "kettleandfire.com",
5 "input_parameters": {"source": "linkedin"}
6}

Response fields

FieldTypeDescription
emailstring | nullThe verified deliverable email, or null if no candidate verified
is_catch_allbooleantrue if the domain accepts mail at any address — treat the result with caution
domainstringEchoes back the input domain
input_parametersobjectEchoes back the input metadata (for batch correlation)

When is_catch_all is true

Catch-all domains accept SMTP traffic for every local-part, so verification can’t disambiguate the true address. The response still returns the most likely candidate (by pattern frequency) but you should:

  • Treat the result as a hypothesis, not a certainty.
  • Cross-check with LinkedIn or a recent press mention before sending.
  • Consider whether deliverability is enough or you need an actual reply to confirm the address.

How verification works

get_email does three things:

  1. Generate candidates. Every common pattern is produced from the name (justin@, justinmares@, justin.mares@, j.mares@, jmares@, etc.).
  2. Verify via SMTP. Each candidate is checked through Reacher: it speaks SMTP with the domain’s MX records, issues RCPT TO, and observes the server’s response — without DATA (no mail is sent).
  3. Return the first deliverable hit. Catch-all domains are detected by sending a known-bogus address; if it accepts, is_catch_all is set to true.

This adds 2–5 seconds of latency per call.

Required environment variables (self-host)

VariableDescription
WORKOS_API_KEYAuth (production only)
STRIPE_SECRET_KEYBilling (production only)
REACHER_URLRequired — Reacher endpoint for SMTP verification
NEXT_PUBLIC_URLRequired — public URL

Next steps