mcp-domain-to-linkedin-url-resolver
Resolve company domains or names to LinkedIn company URLs and return flat, Clay-ready JSON rows.
Resolve a single domain, a single company name, or a list of bare domains in one run.
Return LinkedIn company URL and slug, resolution method, confidence (high/medium/low), plus Facebook, Instagram, X, and YouTube links.
Optionally include firmographics from public search snippets: employee count estimate, industry, HQ location, follower count, and company description.
Use public search results and never send a request to LinkedIn.
Cache successful resolutions for 7 days; use skipCache to force a fresh lookup.
Batch domain lists with batchSize from 1 to 10 (default 2).
Require at least one of company_domain, company_name, or domains; a domain takes priority over a name.
Return errors with the Apify run ID for unsuccessful runs.
Consume Apify credits and require an APIFY_TOKEN.
Do not find people.
Returns the company's Facebook page URL as part of the resolved company profile, alongside the LinkedIn URL and other social links.
Returns the company's Instagram profile URL as part of the resolved company profile, alongside the LinkedIn URL and other social links.
Returns the company's YouTube channel URL as part of the resolved company profile, alongside the LinkedIn URL and other social links.
Domain to LinkedIn URL Resolver MCP Server
An MCP server that resolves a company domain or name to its LinkedIn company URL. It wraps the Mamba Labs Domain to LinkedIn URL Resolver actor on Apify and returns a Clay-ready flat JSON row to any MCP client.
What's Inside
Related MCP server: Company Identity Resolver MCP Server
What it does
Give it a company domain or a company name and it finds the matching LinkedIn company URL in public search results (it never requests a page on LinkedIn), with a confidence of high, medium, or low so you know how much to trust it, plus the company's Facebook, Instagram, X, and YouTube links, all in one flat row. Firmographics (employee count, industry, headquarters, follower count, description) are read from search result snippets when you set includeFirmographics to true; they are off by default and null when off or when no snippet states them. Pass domains to resolve a list in one call ready for Clay, a CRM, or an AI agent workflow. All of the resolution runs on Apify. This package is a thin client that calls the actor and hands back the result.
Quick start
You need Node.js 18 or newer and an Apify account with an API token.
Add this to your Claude Desktop config:
{
"mcpServers": {
"mamba-linkedin-resolver": {
"command": "npx",
"args": ["-y", "@mambalabsdev/mcp-domain-to-linkedin-url-resolver"],
"env": {
"APIFY_TOKEN": "your-apify-token"
}
}
}
}Get your token at https://console.apify.com/account/integrations, paste it in, and restart Claude Desktop. The resolve_linkedin_url tool will be available.
Prerequisites
Node.js 18 or newer
An Apify account with an API token
Example prompts
"Find the LinkedIn page for stripe.com."
"What is the LinkedIn company URL for openai.com? Include the confidence score."
"Resolve the company named Figma to its LinkedIn URL and firmographics."
"Get the LinkedIn URL, employee count, and industry for datadoghq.com, with firmographics on."
"Resolve the LinkedIn pages for stripe.com, notion.so, and figma.com."
Inputs
company_domain(optional): the bare company domain, nohttps://and no trailing slash. Example:stripe.comcompany_name(optional): the company name.domains(optional, array): a list of bare domains resolved in one run, one row per domain.batchSize(optional, integer): how many domains from the list are resolved at once. 1 to 10. Default 2.includeFirmographics(optional, boolean): also reademployee_count_approx,industry,hq_location,follower_count, andcompany_descriptionfrom search result snippets. No request is sent to LinkedIn. Default false. Those fields are null when it is off or when no snippet states them. The string forms"true"and"false"are accepted too.skipCache(optional, boolean): ignore the 7 day cache and resolve again. Default false. The string forms are accepted too.
Provide at least one of company_domain, company_name, or domains. If a domain and a name are both given, the domain takes priority.
Output
The tool returns the actor's flat JSON row per company: company_domain, company_name, linkedin_company_url, linkedin_slug, resolution_method, confidence (high, medium, or low), facebook_url, instagram_url, twitter_url, youtube_url, the firmographic fields employee_count_approx, industry, hq_location, follower_count, and company_description (null unless includeFirmographics is true), slug_mismatch, run_date, degraded, and degradation_reason.
Example output
Run with includeFirmographics set to true.
{
"company_domain": "linear.app",
"company_name": "Linear",
"linkedin_company_url": "https://www.linkedin.com/company/linear-app",
"linkedin_slug": "linear-app",
"resolution_method": "google_search",
"confidence": "high",
"industry": "Software Development",
"employee_count_approx": "201",
"hq_location": "San Francisco, California, United States",
"run_date": "2026-05-28"
}Features
Public search results (Brave, then Bing) checked against the slug variants the domain implies. No request is sent to linkedin.com
Fixes the LinkedIn URL gaps in Clay native enrichment
Confidence scoring (high, medium, low) and resolution_method
Social links on every row; firmographics (employee count, industry, HQ) when
includeFirmographicsis trueOne domain or a list per call
Pricing
Domain to LinkedIn URL Resolver is pay per event on Apify.
Event | Price | Fires when |
| $0.00005 | Once per run, on start, one event per GB of memory (minimum one). Apify's start event. |
| $0.006 (FREE tier), down to $0.0051 on GOLD and above | Once per row written to the dataset. |
| number | Optional cost cap in USD for this run. The actor stops before an item that could take its charges past this amount. |
The tool starts the actor run and polls it to a finished status, so a long run is not cut off at 300 seconds. A run that does not succeed comes back as an error with its run ID and status.
Full actor documentation
This server is a thin client and holds no resolution logic. For the complete input and output reference, pricing, and run history, see the Apify Store page:
https://apify.com/mambalabs/domain-to-linkedin-url-resolver
Mamba Labs GTM Suite
This server is part of the Mamba Labs GTM Suite, a fleet of twelve specialized MCP servers for go-to-market signal intelligence, each backed by a dedicated Apify actor.
Actor | Immutable Actor ID |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
Built by Mamba Labs | npm | Apify Store
License
MIT
Built by Mamba Labs. https://apify.com/mambalabs
Available Tools
1 toolresolve_linkedin_urlResolve LinkedIn URLARead-onlyIdempotent
Resolve a company domain or name, or a list of domains, to the LinkedIn company URL. Returns one flat, Clay-ready JSON row per company with the LinkedIn URL and slug, a confidence of high, medium, or low, the resolution method, and Facebook, Instagram, X, and YouTube links. The URL is read from public search results; no request is ever sent to LinkedIn. Firmographics (employee count, industry, headquarters, follower count, description) are read from search result snippets only when includeFirmographics is true; with it off, or when no snippet states them, those fields are null. Successful resolutions are cached for 7 days unless skipCache is true. Use it when you have a domain or a name and need the LinkedIn company page; it does not find people. Provide company_domain, company_name, or domains. A run that does not succeed is returned as an error with its run ID. Read-only; requires an APIFY_TOKEN and consumes Apify credits per call.
| Name | Required | Description | Default |
|---|---|---|---|
| domains | No | A list of bare company domains to resolve in one run, one row per domain. Example: ["stripe.com", "datadoghq.com"]. | |
| batchSize | No | How many domains from the list are resolved at once. 1 to 10. Default: 2. | |
| skipCache | No | When false, the default, a successful resolution is cached for 7 days and reused. Set true to force a fresh resolution. Accepts true or false, or the strings "true" and "false". Default: false. | |
| company_name | No | Company name. Required if company_domain and domains are not provided. | |
| company_domain | No | Bare company domain without https:// and without a trailing slash. Example: stripe.com. Required if company_name and domains are not provided. | |
| includeFirmographics | No | When true, also reads firmographics from search result snippets about the LinkedIn company page: follower_count and company_description for most established companies, and employee_count_approx, industry, and hq_location when a snippet states them. No request is sent to LinkedIn. Off by default because it can add a search. The firmographic fields are null when it is off or when no snippet states them. Accepts true or false, or the strings "true" and "false". Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/openWorld/idempotent annotations: it discloses that the URL is read from public search results and no request hits LinkedIn, that successes are cached 7 days unless skipCache is true, that failures return an error with a run ID, and that it needs an APIFY_TOKEN and consumes Apify credits. That is the exact operational context an agent needs before calling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and routing guidance are front-loaded and every sentence is substantive, but the firmographics null behavior is stated twice and the caching/credit notes lengthen the block more than needed. Slightly trimmed, it would lose nothing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden itself and does so: per-company JSON rows, the confidence scale, the resolution method, and the social fields. Auth requirements, cost, caching, and error reporting are all covered, leaving no gap for a 6-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents domains, batchSize, skipCache, company_name, company_domain, and includeFirmographics in comparable detail (including the null-firmographics behavior the description repeats). The description restates the input alternatives and the firmographics tradeoff rather than adding format or default information not already in the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Resolve a company domain or name... to the LinkedIn company URL') and enumerates the output shape (URL, slug, confidence, resolution method, social links). An agent knows exactly what comes back without opening a schema. No siblings exist, so no differentiation is needed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use ('Use it when you have a domain or a name and need the LinkedIn company page'), explicit exclusion ('it does not find people'), and the accepted input alternatives ('Provide company_domain, company_name, or domains'). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v1.0.7- Changed
resolve_linkedin_url7 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / batchSizeAdded value: +{ + "description": "How many domains from the list are resolved at once. 1 to 10. Default: 2.", + "maximum": 10, + "minimum": 1, + "type": "integer" +} - changed
Input schema / properties / company_domain / descriptionPrevious value: -"Bare company domain without https:// and without a trailing slash. Example: stripe.com. Required if company_name is not provided."New value: +"Bare company domain without https:// and without a trailing slash. Example: stripe.com. Required if company_name and domains are not provided." - changed
Input schema / properties / company_name / descriptionPrevious value: -"Company name. Required if company_domain is not provided."New value: +"Company name. Required if company_domain and domains are not provided." - added
Input schema / properties / domainsAdded value: +{ + "description": "A list of bare company domains to resolve in one run, one row per domain. Example: [\"stripe.com\", \"datadoghq.com\"].", + "items": { + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / includeFirmographicsAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "enum": [ + "false", + "true" + ], + "type": "string" + } + ], + "description": "When true, also reads firmographics from search result snippets about the LinkedIn company page: follower_count and company_description for most established companies, and employee_count_approx, industry, and hq_location when a snippet states them. No request is sent to LinkedIn. Off by default because it can add a search. The firmographic fields are null when it is off or when no snippet states them. Accepts true or false, or the strings \"true\" and \"false\". Default: false." +} - added
Input schema / properties / skipCacheAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "enum": [ + "false", + "true" + ], + "type": "string" + } + ], + "description": "When false, the default, a successful resolution is cached for 7 days and reused. Set true to force a fresh resolution. Accepts true or false, or the strings \"true\" and \"false\". Default: false." +}
1 tool update
v1.0.3- First observed
resolve_linkedin_url
TDQS
Scored across 1 tool
There is only one tool, so there is no possibility of confusing it with a sibling tool. Its purpose (domain/name to LinkedIn company URL) is stated explicitly, including what it does not do (find people).
The single name resolve_linkedin_url follows a clear snake_case verb_noun convention. There are no competing conventions to clash with.
One tool is thin in absolute terms, but the server's scope is intentionally narrow and the tool absorbs single/batch input, firmographics, caching, and multi-platform social output. It is slightly under-scoped rather than mismatched, since there is no second operation (e.g. reverse lookup, cache management) exposed.
For a domain-to-LinkedIn-URL resolver, the surface covers the core operation plus batch input, optional firmographics, confidence scoring, and error/run-ID reporting. Minor gaps exist (no reverse LinkedIn-to-domain lookup, no cache inspection/clearing), but nothing that blocks the primary workflow.
Maintenance
Related MCP Connectors
LinkedIn companies, hiring signals and public profiles by URL. No login, no cookies. Pay per result.
Enrich any domain into a full company profile with firmographics and buying signals.
LinkedIn company size, industry, website, HQ, followers, posts from links, domains or names.
Find decision makers at any company: name, job title and LinkedIn profile URL. No login needed.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceDomain -> company intelligence for AI agents. Look up company name, country, contacts, and social profiles from any MCP-compatible client.6MIT
- AlicenseAqualityAmaintenanceResolves any combination of company name, domain, or LinkedIn URL into the canonical company identity (name, domain, LinkedIn URL) with confidence scores and match method.1123 npmMIT
- FlicenseNot gradedqualityBmaintenanceEnables AI agents to extract structured firmographic data from public LinkedIn company URLs, returning fields like name, industry, size, and headquarters.-
- AlicenseAqualityAmaintenanceResolves company domains to their LinkedIn pages, providing exact follower counts and public firmographics such as industry, company size band, headquarters, founded year, and specialties.1382 npmMIT