B2B enrichment and intelligence MCP server for AI agents. Provides access to 60M companies and 300M contacts with enrichment, search, and intent signal capabilities.
DataLayer MCP has 11 well-named tools with consistent verb_noun patterns (enrich_*, search_*, lookup_*, company_*). All tools have descriptions (avg ~120 chars, within baseline 34-392 range). Input schemas are present with typed parameters and descriptions. However, output schemas are NOT documented in the source code, only input schemas are visible. Parameter descriptions lack constraint details (e.g., no min/max for pagination, no enum for seniority/function filters). Error handling is minimal, no recovery guidance or actionable error messages visible. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite all tools being READ_ONLY. Pagination parameters exist but lack explicit limits documentation in descriptions.
List employees at a company, filterable by seniority and function.
Get headcount breakdown by department (15 departments) for a company.
Get open job counts by department — a hiring intent signal.
Get the full tech stack of a company across 16 categories — CRM, cloud, marketing automation, analytics, and more.
Get a full company profile with signals — industry, headcount, revenue, tech stack, funding, traffic, Google ad spend, employee growth rate.
Get a full contact profile — name, email, phone, job title, seniority, LinkedIn, current employer.
Output schemas not documented. LLMs cannot infer what fields to expect from responses, forcing them to guess at downstream field names and risk broken tool chains.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All 11 tools are READ_ONLY but lack explicit annotations, agents cannot determine retry safety or side-effect risk without reading descriptions.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | <=2025-11-25 | v2 |
Find companies showing buying intent — scored by web traffic, Google ad spend, hiring velocity, employee growth, and funding. Costs 5 credits per result.
Find a specific company by domain, LinkedIn URL, or name.
Find a specific person by email, phone, LinkedIn URL, or name + company domain.
Search 60M+ companies by industry, location, size, tech stack, funding, traffic, growth, and more. Returns paginated results.
Search 300M+ contacts by title, seniority, function, company, location, and more. Returns paginated results.
Pagination parameters (page, per_page) lack constraint documentation. No explicit min/max values in descriptions; per_page max is '100' in some tools but not stated in parameter descriptions, forcing LLMs to guess valid ranges.
Enum parameters lack formal enum constraints. 'seniority' and 'function' filters are described as free-form strings with examples (e.g., 'VP, Director, C-Suite') instead of declared enums, inviting hallucinated values.
No error recovery guidance. API errors are caught and re-thrown (src/lib/api.ts) but no tool-level error handling provides actionable next steps (e.g., 'Try search_companies() with fewer filters' or 'Rate limit exceeded; retry in 60s').