Skip to main content
Glama
mambalabsdev

Person LinkedIn URL Resolver MCP Server

Person LinkedIn URL Resolver MCP Server

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

Give it a person's name and company domain (or company name). Each run reads Google result pages through the Apify Google SERP proxy and returns one row per person with the LinkedIn profile URL, the headline and follower count Google shows, and a match confidence. It never opens LinkedIn and needs no LinkedIn account.

What's Inside

Related MCP server: LinkedInMCP

What it does

  • match_status is found at a confidence of 0.8 or more with a clear lead over every other profile, ambiguous (the likely URL), not_found, or blocked.

  • company_match says whether the company is current (headline or a present role), former (marked prev, ex, or former), or only mentioned.

  • Posts, articles, and directory pages are dropped; only /in/ profile URLs are returned.

All of the work runs on Apify. This package is a thin client that starts the actor run, waits for it, and hands back the dataset rows.

Quick start

You need Node.js 18 or newer and an Apify account with an API token.

Add this to your Claude Desktop config (claude_desktop_config.json), Cursor, or any MCP client:

{
  "mcpServers": {
    "mamba-person-linkedin-url-resolver": {
      "command": "npx",
      "args": [
        "-y",
        "@mambalabsdev/mcp-person-linkedin-url-resolver"
      ],
      "env": {
        "APIFY_TOKEN": "your-apify-token"
      }
    }
  }
}

Restart the client. The resolve_person_linkedin_url tool appears.

Prerequisites

Example prompts

  • "Find the LinkedIn profile of Armon Dadgar at hashicorp.com."

  • "Here are 20 names and company domains from my CRM. Find each LinkedIn URL and tell me which ones are certain."

Tool

resolve_person_linkedin_url. One tool. Example arguments:

{ "full_name": "Armon Dadgar", "company_domain": "hashicorp.com" }

Inputs

Every buyer facing input of the actor, unchanged. Omitted inputs take the actor's own defaults.

Input

Type

Description

full_name

string

First and last name

company_domain

string

The company domain; give this or company_name

company_name

string

Optional company name

job_title

string

Optional; a small boost when the headline agrees

location

string

Optional; a small boost when the snippet agrees

keywords

string

Optional extra query words

persons

array

Up to 500 lines as Full Name | company.com | job title

country

string

Google country code. Default us

allow_name_only

string

true searches without a company; never found

max_charge_usd

string

Optional cost cap for the run

Pricing

Pay per event on Apify, billed to your Apify account. Prices in USD.

Event

Free plan

Bronze

Silver

Gold

person-searched, per input person

$0.035

$0.03325

$0.0315

$0.02975

apify-actor-start, per run start

$0.0005

$0.0005

$0.0005

$0.0005

found, ambiguous, and not_found rows each cost one person-searched. blocked and error rows are free. The actor reads at most 2 Google result pages per person.

Your keys

The actor needs no key and holds none. Mamba Labs pays the platform costs of the run, Google SERP proxy traffic included.

Full actor documentation

apify.com/mambalabs/person-linkedin-url-resolver

License

MIT. See LICENSE.

Available Tools

1 tool
resolve_person_linkedin_urlResolve a person's LinkedIn URLA
Read-only

Find a person's LinkedIn profile URL from their name and company domain or company name, read from Google result pages through the Apify Google SERP proxy; LinkedIn itself is never opened. Returns one row per person with linkedin_url, match_status (found at a confidence of 0.8 or more with a clear lead over any other profile, ambiguous with the likely URL, not_found, or blocked), match_confidence from 0 to 1, name_match, company_match (current, former, mentioned, none), the headline, snippet, and follower count Google shows, and the runner up. Batch up to 500 persons in persons. A run that does not succeed is returned as an error with its run ID. Read-only; requires an APIFY_TOKEN; Apify charges one event per person searched (found, ambiguous, or not found); blocked and error rows are free.

NameRequiredDescriptionDefault
countryNoTwo letter Google country code. Default us.
personsNoSeveral persons, one per line as Full Name | company.com | job title. Up to 500.
keywordsNoOptional extra words for the Google query.
locationNoOptional city or country. A small boost when the snippet agrees.
full_nameNoThe person's first and last name, for example Armon Dadgar.
job_titleNoOptional. A headline that agrees gets a small boost.
company_nameNoOptional. The company name as people write it, used instead of the word in the domain.
company_domainNoThe company domain, for example hashicorp.com. Give this or company_name.
max_charge_usdNoOptional. The run stops before a charge that would pass this amount.
allow_name_onlyNotrue searches a person with no company; such a row is never found, only ambiguous. Default false.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only cover read-only/open-world/non-idempotent safety traits; the description adds substantial unannotated behavior — the 0.8 confidence threshold and clear-lead rule for 'found', the ambiguous/not_found/blocked taxonomy, per-event billing with free blocked rows, token requirements, and error-with-run-ID failure mode. This is exactly the context annotations cannot supply.

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 lead sentence is front-loaded with purpose and mechanism, followed by return fields, batching, and cost/auth constraints in a logical order with no filler. It is a single dense paragraph whose return-field enumeration runs long, slightly hurting scanability.

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 and no siblings, the description fully covers what the agent needs: return fields (linkedin_url, match_status, match_confidence, name_match, company_match, headline, snippet, followers, runner-up), failure behavior, billing model, and auth. Nothing required to call it correctly is missing.

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 every parameter is already documented in structured form; the description mainly restates the persons batch limit and cost behavior rather than adding parameter-level meaning. With the schema doing the heavy lifting, baseline 3 applies — it does not compensate for anything missing because nothing is missing.

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 (find a person's LinkedIn profile URL) and names the exact inputs it derives from (name plus company domain or name). It also discloses the mechanism (Google result pages via the Apify SERP proxy, LinkedIn never opened), so an agent knows both outcome and method without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear operating context: batch up to 500 persons, requires an APIFY_TOKEN, one billed event per person with blocked/error rows free, and max_charge_usd can cap spend. It does not state exclusions or a counter-case (e.g., when not to use versus manual lookup, or how allow_name_only interacts with ambiguous results beyond a schema note), so it falls short of a 5.

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.0
    • First observedresolve_person_linkedin_url

TDQS

A4.4/5.0

Scored across 1 tool

Disambiguation5/5

There is only one tool, so there is no possibility of misselection or overlap with a sibling. Its purpose is stated precisely (name + company → LinkedIn URL via Google SERP), leaving no ambiguity about what it does or does not do.

Naming Consistency5/5

The single name resolve_person_linkedin_url follows a clear verb_object convention in snake_case. Nothing else exists to break the pattern, and the name is fully self-describing.

Tool Count3/5

The server's scope is deliberately narrow (one resolution operation), so a single tool is defensible and it absorbs volume via the 500-person batch parameter. Still, a one-tool surface is thin, and the run-ID error path hints at lifecycle operations that were folded into the blob rather than exposed as tools.

Completeness4/5

The single tool covers the core workflow end to end: batch input, structured output with confidence, match status, matched components, and runner-up, plus explicit blocked/error semantics. The notable gap is that failures return a run ID with no companion tool to retrieve or retry that run, which an agent cannot work around from this surface alone.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Released 3.0.0: 22 MCP tools, guided offline setup, local stdio, Chrome and manual login. No hosted deployment or job-research brief. Writes need opt-in, reviewed preview and human approval. Unofficial; provider compatibility, first-use cohorts, coordinated erasure and Windows privacy proof remain unverified. No mandatory paid service.
    22
    367 npm
    12
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    An innovative MCP server that transforms LinkedIn API interactions, enabling advanced people search, profile retrieval, and job market intelligence through natural language.
    49 npm
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables searching and scraping of LinkedIn profiles, companies, jobs, and posts using natural language through MCP-compatible AI clients.
    13
    MIT