Enrich and search people and companies, resolve identities, and enrich IP addresses.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Get suggested values for a search field along with the number of available records for each — useful for building valid Person/Company Search queries. Free on all plans. API: GET /autocomplete.
Field to autocomplete: e.g. company, school, location, region, country, industry, title, role, sub_role, skill, major.
Max suggestions to return. Default 10.
Partial text to get suggestions for, e.g. 'stanf'.
Pretty-print the JSON response.
Titlecase the returned data.
Get suggested values for a search field along with the number of available records for each — useful for building valid Person/Company Search queries. Free on all plans. API: GET /autocomplete.
| Argument | Type | Description |
|---|---|---|
| size | integer | Max suggestions to return. Default 10. |
| text | string | Partial text to get suggestions for, e.g. 'stanf'. |
| field* | string | Field to autocomplete: e.g. company, school, location, region, country, industry, title, role, sub_role, skill, major. |
| pretty | boolean | Pretty-print the JSON response. |
| titlecase | boolean | Titlecase the returned data. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"field"
],
"properties": {
"size": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Max suggestions to return. Default 10."
},
"text": {
"type": "string",
"description": "Partial text to get suggestions for, e.g. 'stanf'."
},
"field": {
"type": "string",
"description": "Field to autocomplete: e.g. company, school, location, region, country, industry, title, role, sub_role, skill, major."
},
"pretty": {
"type": "boolean",
"description": "Pretty-print the JSON response."
},
"titlecase": {
"type": "boolean",
"description": "Titlecase the returned data."
}
}
}Find the single best-matching company record. Requires a non-ambiguous input — name OR website OR ticker OR profile (website/ticker/profile resolve more reliably than name). Returns firmographics (industry, size, location, etc.) or a 404 'no match' body. API: GET /company/enrich.
| Argument | Type | Description |
|---|---|---|
| name | string | Company name, e.g. 'People Data Labs'. |
| pdl_id | string | PDL id for a company record. |
| pretty | boolean | Pretty-print the JSON response. |
| region | string | Company state / region. |
| ticker | string | Stock ticker for a public company, e.g. 'AAPL'. |
| country | string | Company country. |
| profile | string | Company social profile URL, e.g. a LinkedIn company URL. |
| website | string | Company website, e.g. 'google.com' (most reliable). |
| locality | string | Company city / locality. |
Search the full PDL Company Dataset with an Elasticsearch query object OR a SQL string over the Company Schema (e.g. all SaaS companies with 50-200 employees in the US). Paginate with scroll_token. Each returned record costs 1 credit. API: POST /company/search.
| Argument | Type | Description |
|---|---|---|
| sql | string | SQL query string, e.g. SELECT * FROM company WHERE industry='computer software'. |
| from | integer | Legacy offset (0-9999). Prefer scroll_token. |
| size | integer | Number of records to return (1-100). Default 1. |
| query | string | Elasticsearch query as a JSON string, e.g. {"query":{"term":{"industry":"computer software"}}} — pass the value of "query". |
| pretty | boolean | Pretty-print the JSON response. |
| titlecase | boolean | Titlecase the returned data. |
| scroll_token | string | Pagination token from a previous response. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"sql": {
"type": "string",
"description": "SQL query string, e.g. SELECT * FROM company WHERE industry='computer software'."
},
"from": {
"type": "integer",
"maximum": 9999,
"minimum": 0,
"description": "Legacy offset (0-9999). Prefer scroll_token."
},
"size": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Number of records to return (1-100). Default 1."
},
"query": {
"type": "string",
"description": "Elasticsearch query as a JSON string, e.g. {\"query\":{\"term\":{\"industry\":\"computer software\"}}} — pass the value of \"query\"."
},
"pretty": {
"type": "boolean",
"description": "Pretty-print the JSON response."
},
"titlecase": {
"type": "boolean",
"description": "Titlecase the returned data."
},
"scroll_token": {
"type": "string",
"description": "Pagination token from a previous response."
}
}
}Enrich an IP address with its location, company, and (optionally) associated person data via a 1:1 match against PDL's IP dataset. API: GET /ip/enrich.
| Argument | Type | Description |
|---|---|---|
| ip* | string | The IP address to enrich, e.g. '72.212.42.169'. |
| pretty | boolean | Pretty-print the JSON response. |
| titlecase | boolean | Titlecase the returned data. |
| return_person | boolean | Include associated person data if available. |
| min_confidence | string | Minimum confidence level required to return a match. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"ip"
],
"properties": {
"ip": {
"type": "string",
"description": "The IP address to enrich, e.g. '72.212.42.169'."
},
"pretty": {
"type": "boolean",
"description": "Pretty-print the JSON response."
},
"titlecase": {
"type": "boolean",
"description": "Titlecase the returned data."
},
"return_person": {
"type": "boolean",
"description": "Include associated person data if available."
},
"min_confidence": {
"enum": [
"very high",
"high",
"moderate",
"low",
"very low"
],
"type": "string",
"description": "Minimum confidence level required to return a match."
}
}
}Search PDL's Job Posting Dataset (millions of active & historical postings sourced from company career pages) with an Elasticsearch query object OR a SQL string. Beta — may require plan access (HTTP 403 if not enabled). Each returned posting costs 1 credit. API: POST /job_posting/search.
| Argument | Type | Description |
|---|---|---|
| sql | string | SQL query string over the job posting dataset. |
| size | integer | Number of records to return (1-100). Default 1. |
| query | string | Elasticsearch query as a JSON string, e.g. {"query":{"term":{"title_role":"engineering"}}} — pass the value of "query". |
| pretty | boolean | Pretty-print the JSON response. |
| scroll_token | string | Pagination token from a previous response. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"sql": {
"type": "string",
"description": "SQL query string over the job posting dataset."
},
"size": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Number of records to return (1-100). Default 1."
},
"query": {
"type": "string",
"description": "Elasticsearch query as a JSON string, e.g. {\"query\":{\"term\":{\"title_role\":\"engineering\"}}} — pass the value of \"query\"."
},
"pretty": {
"type": "boolean",
"description": "Pretty-print the JSON response."
},
"scroll_token": {
"type": "string",
"description": "Pagination token from a previous response."
}
}
}Find the single best-matching person profile for a set of identifying attributes (name, email, phone, profile URL, company, etc.). Returns one record plus a likelihood score (1-10), or a 404 'no match' body. Use uniquely-identifying inputs for best results. API: GET /person/enrich.
| Argument | Type | Description |
|---|---|---|
| lid | string | LinkedIn numerical ID. |
| name | string | Full name, e.g. 'Sean Thorne'. |
| any | Email address, or an array of email addresses. | |
| phone | string | Phone number (E.164 or local). |
| pdl_id | string | PDL persistent ID for a person record. |
| pretty | boolean | Pretty-print the JSON response. |
| region | string | State / region, e.g. 'california'. |
| school | string | School name or website the person attended. |
| company | string | Company name, website, or PDL company id the person works at. |
Given broad, possibly-ambiguous attributes about a person, return up to 20 strongly-related profiles ranked by match score. Sits between enrich (1:1) and search (open-ended) — ideal when you can't uniquely resolve someone. API: GET /person/identify.
| Argument | Type | Description |
|---|---|---|
| lid | string | LinkedIn numerical ID. |
| name | string | Full name, e.g. 'Sean Thorne'. |
| any | Email address, or an array of email addresses. | |
| phone | string | Phone number (E.164 or local). |
| pdl_id | string | PDL persistent ID for a person record. |
| pretty | boolean | Pretty-print the JSON response. |
| region | string | State / region, e.g. 'california'. |
| school | string | School name or website the person attended. |
| company | string | Company name, website, or PDL company id the person works at. |
Search the full PDL Person Dataset with an Elasticsearch query object OR a SQL string over the Person Schema (e.g. everyone with job_title_role='engineering' at a company). Returns matching profiles sorted by completeness; paginate with scroll_token. Each returned record costs 1 credit. API: POST /person/search.
| Argument | Type | Description |
|---|---|---|
| sql | string | SQL query string, e.g. SELECT * FROM person WHERE job_company_name='people data labs'. |
| from | integer | Legacy offset (0-9999). Prefer scroll_token. |
| size | integer | Number of records to return (1-100). Default 1. |
| query | string | Elasticsearch query as a JSON string, e.g. {"query":{"term":{"job_company_name":"people data labs"}}} — pass the value of "query". |
| pretty | boolean | Pretty-print the JSON response. |
| dataset | string | Dataset(s) to search: resume, email, phone, mobile_phone, street_address, consumer_social, developer, all. Comma-separate; prefix '-' to exclude. |
| titlecase | boolean | Titlecase the returned data. |
| scroll_token |
| location | string | Company location free-text. |
| titlecase | boolean | Titlecase the returned data. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"name": {
"type": "string",
"description": "Company name, e.g. 'People Data Labs'."
},
"pdl_id": {
"type": "string",
"description": "PDL id for a company record."
},
"pretty": {
"type": "boolean",
"description": "Pretty-print the JSON response."
},
"region": {
"type": "string",
"description": "Company state / region."
},
"ticker": {
"type": "string",
"description": "Stock ticker for a public company, e.g. 'AAPL'."
},
"country": {
"type": "string",
"description": "Company country."
},
"profile": {
"type": "string",
"description": "Company social profile URL, e.g. a LinkedIn company URL."
},
"website": {
"type": "string",
"description": "Company website, e.g. 'google.com' (most reliable)."
},
"locality": {
"type": "string",
"description": "Company city / locality."
},
"location": {
"type": "string",
"description": "Company location free-text."
},
"titlecase": {
"type": "boolean",
"description": "Titlecase the returned data."
}
}
}| country | string | Country name, e.g. 'united states'. |
| profile | any | Social profile URL(s), e.g. a LinkedIn URL. String or array. |
| locality | string | City / locality, e.g. 'san francisco'. |
| location | string | Free-text location, e.g. 'San Francisco, CA, USA'. |
| required | string | Only return a match that contains these fields, e.g. 'emails AND mobile_phone'. |
| last_name | string | Last / family name. |
| titlecase | boolean | Titlecase the returned data (default false = lowercase). |
| birth_date | string | Birth date (yyyy or yyyy-mm-dd). |
| first_name | string | First / given name. |
| postal_code | string | Postal / ZIP code (assumed US if no country). |
| min_likelihood | integer | Only return a 200 if match confidence >= this (1-10). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"lid": {
"type": "string",
"description": "LinkedIn numerical ID."
},
"name": {
"type": "string",
"description": "Full name, e.g. 'Sean Thorne'."
},
"email": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
],
"description": "Email address, or an array of email addresses."
},
"phone": {
"type": "string",
"description": "Phone number (E.164 or local)."
},
"pdl_id": {
"type": "string",
"description": "PDL persistent ID for a person record."
},
"pretty": {
"type": "boolean",
"description": "Pretty-print the JSON response."
},
"region": {
"type": "string",
"description": "State / region, e.g. 'california'."
},
"school": {
"type": "string",
"description": "School name or website the person attended."
},
"company": {
"type": "string",
"description": "Company name, website, or PDL company id the person works at."
},
"country": {
"type": "string",
"description": "Country name, e.g. 'united states'."
},
"profile": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
],
"description": "Social profile URL(s), e.g. a LinkedIn URL. String or array."
},
"locality": {
"type": "string",
"description": "City / locality, e.g. 'san francisco'."
},
"location": {
"type": "string",
"description": "Free-text location, e.g. 'San Francisco, CA, USA'."
},
"required": {
"type": "string",
"description": "Only return a match that contains these fields, e.g. 'emails AND mobile_phone'."
},
"last_name": {
"type": "string",
"description": "Last / family name."
},
"titlecase": {
"type": "boolean",
"description": "Titlecase the returned data (default false = lowercase)."
},
"birth_date": {
"type": "string",
"description": "Birth date (yyyy or yyyy-mm-dd)."
},
"first_name": {
"type": "string",
"description": "First / given name."
},
"postal_code": {
"type": "string",
"description": "Postal / ZIP code (assumed US if no country)."
},
"min_likelihood": {
"type": "integer",
"maximum": 10,
"minimum": 1,
"description": "Only return a 200 if match confidence >= this (1-10)."
}
}
}| country | string | Country name, e.g. 'united states'. |
| profile | any | Social profile URL(s), e.g. a LinkedIn URL. String or array. |
| locality | string | City / locality, e.g. 'san francisco'. |
| location | string | Free-text location, e.g. 'San Francisco, CA, USA'. |
| last_name | string | Last / family name. |
| titlecase | boolean | Titlecase the returned data (default false = lowercase). |
| birth_date | string | Birth date (yyyy or yyyy-mm-dd). |
| first_name | string | First / given name. |
| postal_code | string | Postal / ZIP code (assumed US if no country). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"lid": {
"type": "string",
"description": "LinkedIn numerical ID."
},
"name": {
"type": "string",
"description": "Full name, e.g. 'Sean Thorne'."
},
"email": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
],
"description": "Email address, or an array of email addresses."
},
"phone": {
"type": "string",
"description": "Phone number (E.164 or local)."
},
"pdl_id": {
"type": "string",
"description": "PDL persistent ID for a person record."
},
"pretty": {
"type": "boolean",
"description": "Pretty-print the JSON response."
},
"region": {
"type": "string",
"description": "State / region, e.g. 'california'."
},
"school": {
"type": "string",
"description": "School name or website the person attended."
},
"company": {
"type": "string",
"description": "Company name, website, or PDL company id the person works at."
},
"country": {
"type": "string",
"description": "Country name, e.g. 'united states'."
},
"profile": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
],
"description": "Social profile URL(s), e.g. a LinkedIn URL. String or array."
},
"locality": {
"type": "string",
"description": "City / locality, e.g. 'san francisco'."
},
"location": {
"type": "string",
"description": "Free-text location, e.g. 'San Francisco, CA, USA'."
},
"last_name": {
"type": "string",
"description": "Last / family name."
},
"titlecase": {
"type": "boolean",
"description": "Titlecase the returned data (default false = lowercase)."
},
"birth_date": {
"type": "string",
"description": "Birth date (yyyy or yyyy-mm-dd)."
},
"first_name": {
"type": "string",
"description": "First / given name."
},
"postal_code": {
"type": "string",
"description": "Postal / ZIP code (assumed US if no country)."
}
}
}| string |
| Pagination token from a previous response. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"sql": {
"type": "string",
"description": "SQL query string, e.g. SELECT * FROM person WHERE job_company_name='people data labs'."
},
"from": {
"type": "integer",
"maximum": 9999,
"minimum": 0,
"description": "Legacy offset (0-9999). Prefer scroll_token."
},
"size": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Number of records to return (1-100). Default 1."
},
"query": {
"type": "string",
"description": "Elasticsearch query as a JSON string, e.g. {\"query\":{\"term\":{\"job_company_name\":\"people data labs\"}}} — pass the value of \"query\"."
},
"pretty": {
"type": "boolean",
"description": "Pretty-print the JSON response."
},
"dataset": {
"type": "string",
"description": "Dataset(s) to search: resume, email, phone, mobile_phone, street_address, consumer_social, developer, all. Comma-separate; prefix '-' to exclude."
},
"titlecase": {
"type": "boolean",
"description": "Titlecase the returned data."
},
"scroll_token": {
"type": "string",
"description": "Pagination token from a previous response."
}
}
}