Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.encrata.com/llms.txt

Use this file to discover all available pages before exploring further.

Overview

LangChain is a framework for building applications powered by LLMs. You can add Encrata as a custom tool so your LangChain agents can enrich emails, validate deliverability, and check breach exposure on the fly.

Installation

pip install langchain langchain-openai requests

Define Encrata tools

import requests
from langchain.tools import tool

ENCRATA_API_KEY = "YOUR_API_KEY"
BASE_URL = "https://encrata.com/api/agent"
HEADERS = {
    "Authorization": f"Bearer {ENCRATA_API_KEY}",
    "Content-Type": "application/json",
}

@tool
def lookup_email(email: str) -> dict:
    """Look up detailed intelligence about a person by their email address.
    Returns name, company, job role, industry, location, social profiles,
    breach history, and email validity. Costs 1 credit."""
    resp = requests.post(
        f"{BASE_URL}/lookup",
        headers=HEADERS,
        json={"e": email},
    )
    resp.raise_for_status()
    return resp.json()

@tool
def validate_email(email: str) -> dict:
    """Validate whether an email address is deliverable, invalid,
    or disposable. Free — does not cost credits."""
    resp = requests.post(
        f"{BASE_URL}/validate",
        headers=HEADERS,
        json={"e": email},
    )
    resp.raise_for_status()
    return resp.json()

@tool
def check_breaches(email: str) -> dict:
    """Check if an email has been exposed in known data breaches.
    Returns breach count, affected services, and exposed data types.
    Free — does not cost credits."""
    resp = requests.post(
        f"{BASE_URL}/breaches",
        headers=HEADERS,
        json={"e": email},
    )
    resp.raise_for_status()
    return resp.json()

Use with an agent

from langchain_openai import ChatOpenAI
from langchain.agents import AgentExecutor, create_tool_calling_agent
from langchain_core.prompts import ChatPromptTemplate

llm = ChatOpenAI(model="gpt-4o")

tools = [lookup_email, validate_email, check_breaches]

prompt = ChatPromptTemplate.from_messages([
    ("system", "You are a research assistant with access to email intelligence tools."),
    ("human", "{input}"),
    ("placeholder", "{agent_scratchpad}"),
])

agent = create_tool_calling_agent(llm, tools, prompt)
executor = AgentExecutor(agent=agent, tools=tools, verbose=True)

result = executor.invoke({
    "input": "Look up satya@microsoft.com and tell me about their role and company."
})
print(result["output"])

Using the MCP server instead

If you prefer the MCP integration, LangChain supports MCP via langchain-mcp-adapters:
pip install langchain-mcp-adapters
from langchain_mcp_adapters.client import MultiServerMCPClient
from langchain_openai import ChatOpenAI
from langgraph.prebuilt import create_react_agent

llm = ChatOpenAI(model="gpt-4o")

async with MultiServerMCPClient({
    "encrata": {
        "command": "npx",
        "args": ["-y", "encrata-mcp"],
        "env": {"ENCRATA_API_KEY": "YOUR_API_KEY"},
    }
}) as client:
    tools = client.get_tools()
    agent = create_react_agent(llm, tools)
    result = await agent.ainvoke({
        "messages": [{"role": "user", "content": "Look up satya@microsoft.com"}]
    })

Next steps