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
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