Skip to main content
Glama
mambalabsdev

mcp-domain-to-linkedin-url-resolver

Domain to LinkedIn URL Resolver MCP Server

Smithery Glama score MCP Registry npm version npm downloads license mcpservers.org

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, no https:// and no trailing slash. Example: stripe.com

  • company_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 read employee_count_approx, industry, hq_location, follower_count, and company_description from 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 includeFirmographics is true

  • One domain or a list per call

Pricing

Domain to LinkedIn URL Resolver is pay per event on Apify.

Event

Price

Fires when

apify-actor-start

$0.00005

Once per run, on start, one event per GB of memory (minimum one). Apify's start event.

apify-default-dataset-item

$0.006 (FREE tier), down to $0.0051 on GOLD and above

Once per row written to the dataset.

max_charge_usd

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

GTM Hiring Signal Scraper

D7O1SA2EqwHGsGr1P

GTM Tech Stack Signal Enrichment

qyd7nNyqFPelQViBx

GTM Signals Aggregator

xKdRfnfFNkdMpFuNs

Job Board Keyword Signal Scanner

4DvqpvhMR74NLcDDY

Domain to LinkedIn URL Resolver

3HtnSaqPHOg1Qg5gx

ICP Fit Scorer

W161DT8W4kW55dMFh

Domain Deliverability Checker

0tVgxI7A6o9jMlxmc

Company Firmographic Enricher

YlUtLWjfPpqykmB8g

Company Social Presence Mapper

4k6CCemkgBDz18m2h

Company Identity Resolver

lr8fTRAmZCBZmuwwh

Company Change-Event Feed

oX44rS0fkEJ3rXLWe

Funding & Press Signal Scanner

FS13X6dhQVgX3XOM6

Built by Mamba Labs | npm | Apify Store

License

MIT

Built by Mamba Labs. https://apify.com/mambalabs

Available Tools

1 tool
resolve_linkedin_urlResolve LinkedIn URLA
Read-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.

NameRequiredDescriptionDefault
domainsNoA list of bare company domains to resolve in one run, one row per domain. Example: ["stripe.com", "datadoghq.com"].
batchSizeNoHow many domains from the list are resolved at once. 1 to 10. Default: 2.
skipCacheNoWhen 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_nameNoCompany name. Required if company_domain and domains are not provided.
company_domainNoBare company domain without https:// and without a trailing slash. Example: stripe.com. Required if company_name and domains are not provided.
includeFirmographicsNoWhen 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

A4.6/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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. 1 tool updatev1.0.7
    • Changedresolve_linkedin_url7 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / batchSize
        Added value: +{
        +  "description": "How many domains from the list are resolved at once. 1 to 10. Default: 2.",
        +  "maximum": 10,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • changedInput schema / properties / company_domain / description
        Previous 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."
      • changedInput schema / properties / company_name / description
        Previous value: -"Company name. Required if company_domain is not provided."New value: +"Company name. Required if company_domain and domains are not provided."
      • addedInput schema / properties / domains
        Added 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"
        +}
      • addedInput schema / properties / includeFirmographics
        Added 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."
        +}
      • addedInput schema / properties / skipCache
        Added 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."
        +}
  2. 1 tool updatev1.0.3
    • First observedresolve_linkedin_url

TDQS

A4.6/5.0

Scored across 1 tool

Disambiguation5/5

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

Naming Consistency5/5

The single name resolve_linkedin_url follows a clear snake_case verb_noun convention. There are no competing conventions to clash with.

Tool Count4/5

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.

Completeness4/5

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

ActivityMaintained
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Resolves any combination of company name, domain, or LinkedIn URL into the canonical company identity (name, domain, LinkedIn URL) with confidence scores and match method.
    1
    123 npm
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to extract structured firmographic data from public LinkedIn company URLs, returning fields like name, industry, size, and headquarters.
    -
  • A
    license
    A
    quality
    A
    maintenance
    Resolves company domains to their LinkedIn pages, providing exact follower counts and public firmographics such as industry, company size band, headquarters, founded year, and specialties.
    1
    382 npm
    MIT