MCP
Connect AI Dealigence directly to your agent.
A live MCP server at aidealigence.com/mcp - works with or without a trailing slash, authenticated with the same API key as the REST API. Ten tools, thin wrappers over the same research engine - no separate contract to learn.
{
"mcpServers": {
"ai-dealigence": {
"url": "https://aidealigence.com/mcp",
"headers": {
"Authorization": "Bearer dl_live_xxx"
}
}
}
}{
"mcpServers": {
"ai-dealigence": {
"command": "npx",
"args": [
"-y", "mcp-remote",
"https://aidealigence.com/mcp",
"--header", "Authorization: Bearer dl_live_xxx"
]
}
}
}{
"mcpServers": {
"ai-dealigence": {
"command": "npx",
"args": [
"-y", "mcp-remote",
"https://aidealigence.com/mcp",
"--header", "Authorization: Bearer dl_live_xxx"
]
}
}
}import time, requests
from langchain_core.tools import tool
API_KEY = "dl_live_xxx"
BASE = "https://aidealigence.com/api/v1"
@tool
def resolve_objective(objective: str) -> dict:
"""Resolve a business objective to verified decision-makers,
with evidence. Real research - takes minutes, not seconds."""
headers = {"Authorization": f"Bearer {API_KEY}"}
created = requests.post(
f"{BASE}/objectives", json={"objective": objective}, headers=headers
).json()
while created["status"] == "researching":
time.sleep(5)
created = requests.get(
f"{BASE}/objectives/{created['id']}", headers=headers
).json()
return created
# LangGraph: add resolve_objective to your ToolNode / bind_tools() list
# exactly like any other tool - it's a plain @tool, nothing MCP-specific
# required.import time, requests
from crewai.tools import tool
API_KEY = "dl_live_xxx"
BASE = "https://aidealigence.com/api/v1"
@tool("Resolve business objective")
def resolve_objective(objective: str) -> dict:
"""Resolve a business objective to verified decision-makers,
with evidence. Real research - takes minutes, not seconds."""
headers = {"Authorization": f"Bearer {API_KEY}"}
created = requests.post(
f"{BASE}/objectives", json={"objective": objective}, headers=headers
).json()
while created["status"] == "researching":
time.sleep(5)
created = requests.get(
f"{BASE}/objectives/{created['id']}", headers=headers
).json()
return created
# Add resolve_objective to any Agent's tools=[...] list.Ten tools, composable
Small and specific rather than one do-everything call - a model can reason about when to use each one.
resolve_objective
Find the people most capable of achieving a business objective.
objective (string, required), location (string, optional), max_results (integer, default 5)
find_decision_maker
Find the most relevant decision maker inside a specified company.
company (string, required), objective (string, required)
resolve_company
Find companies relevant to a business objective.
objective (string, required), market (string, optional)
resolve_function
Determine which organisational function owns an objective.
objective (string, required), company (string, optional)
verify_person
Verify whether a person currently holds a specified role.
person_id (string, required)
get_evidence
Retrieve the evidence behind a recommendation.
evidence_id (string, required)
find_access_route
Find a legitimate route to reach the recommended person.
person_id (string, required)
compare_targets
Compare several candidates by relevance, authority, and access.
person_ids (array of strings, required)
generate_contact_package
Build a person's contact package: emails, phones, WhatsApp, LinkedIn, X and bio pages, each labelled Business or Personal with its source, date and confidence, plus warm-introduction paths and a suggested approach. Costs 5 credits.
person_id (string, required), objective (string, optional)
get_contact_package
Read a contact package already built for a person. Free to read.
person_id (string, required)
Works with
Auth today is a bearer API key, the same one the REST API uses - a working model, not a placeholder. Full OAuth 2.1 authorization (client registration, delegated end-user consent) is the documented next step once there’s a concrete reason to need it.
Troubleshooting
A tool call that fails returns a real MCP tool error (is_error: true on the result, not a bare crash) with the same structured error body the REST API uses - see the error codes for what each one means. A malformed request to the server itself (missing headers, invalid JSON-RPC) returns a standard JSON-RPC error object instead, before any tool even runs.
401/403 almost always means the Authorization header didn’t reach the server - check your client config passes it exactly as shown above, and that a bridge process like mcp-remote is actually forwarding --header rather than dropping it.