PeopleSearch.im
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
People search, LinkedIn lookup and verified work emails for AI agents. First search needs no login.
| Author | im.peoplesearch |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 2339 ms |
| Last measured | 2026-10-24 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"PeopleSearch.im": {
"url": "https://peoplesearch.im/api/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (13)
people_searchread-onlySearch a global professional database for people and get a sample of matches plus the true total match count. Ask with `filters` (recommended: state each part exactly, for example {"job_titles": ["M&A Associate", "Investment Banking Associate"], "locations": ["Frankfurt", "Munich"], "industries": ["Investment Banking"], "schools": ["University of Mannheim"]}) or with `query`, a plain-English sentence that is parsed for you (for example 'Heads of Marketing at Series B SaaS in New York'). Results are masked previews (a masked name, role, industry, company size and location) and each one carries an opaque `token`. Searching is FREE and spends no credits: use it to check that the right people come back before you pay, and refine the filters if they do not. To look up one named person, give `first_name` and `last_name` with their company or company domain when known. For a kind of employer no industry names exactly, use `company_keywords` (words its own description contains, for example ["hostel"] or ["SEO"] with industries ["Marketing Services"]). If nothing matches exactly, the search broadens itself: a job title is read more broadly first (`broadenedRole` gives the title as asked and as searched), then the least essential filters are dropped and `broadenedBy` names them; `ignored` lists any filter that could not be applied. To get a person's real name, LinkedIn and verified email, pass their token to reveal_profile, or use find_people with the same filters to unlock a batch in one call. It also works before a PeopleSearch.im account is connected: without one it returns up to 3 previews per search, up to 10 searches a day.
Parameters:
limit— integer — How many masked previews to return (1-25, default 10). This does not limit the reported total.query— string — Who you are looking for, in plain English (role, seniority, industry, company, company size, location). Parsed for you. A company's website identifies it exactly, alone or in brackets after its name ('Head of Growth at Linear (linear.app)'). Optional when `filters` is given, where it is only a label.filters— object — Exact filters, recommended for AI agents and programs: state each part of the request instead of a sentence. Values inside one list are alternatives (OR); different fields must all match (AND). Give a few variants where people word things differently (titles: ["M&A Associate", "Investment Banking Associate"]). When filters are given, `query` is only a label and is not parsed.
Hints: read-only yes · destructive no · idempotent yes · open-world yes
reveal_profileUnlock ONE person from a people_search result. Pass the `token` from that result. Spends 1 credit and returns the full profile: real name, current title and company, location and LinkedIn URL. Set `include_email` to true to also look up their verified professional (work) email in the same call, which spends 1 more credit that is refunded if no email is found. Revealing the same person again is free (idempotent). The email is looked up live and may take a moment: if it returns emailStatus 'searching', call reveal_profile again with the same token (no extra charge) to collect it.
Parameters:
token(required) — string — The opaque `token` of a person returned by people_search.include_email— boolean — Also fetch the person's verified professional email (a second credit, refunded if none is found). Default false.
Hints: read-only no · destructive no · idempotent yes · open-world yes
find_peopleThe list-building tool. Runs a people search exactly as people_search does (the same `filters` or `query`, including its automatic broadening, reported in `broadenedBy`) and unlocks up to `count` full profiles in ONE atomic charge: 1 credit per newly unlocked person, and anyone you already own is free. Pass the same filters you checked with people_search, so you pay for the people you saw. Returns each person's real name, title, company, location, LinkedIn URL and an `id`. Emails are NOT fetched here (that is a separate credit): after unlocking, call fetch_email with each person's `id` to get their verified work email. WARNING for autonomous use: this can spend up to `count` credits in a single call, so choose `count` deliberately and confirm with the user before large batches. Returns an out-of-credits error instead of overspending.
Parameters:
count— integer — How many people to unlock, 1-100 (default 25). Spends up to this many credits.query— string — Who you are looking for, in plain English (role, seniority, industry, company, company size, location). Parsed for you. A company's website identifies it exactly, alone or in brackets after its name ('Head of Growth at Linear (linear.app)'). Optional when `filters` is given, where it is only a label.filters— object — Exact filters, recommended for AI agents and programs: state each part of the request instead of a sentence. Values inside one list are alternatives (OR); different fields must all match (AND). Give a few variants where people word things differently (titles: ["M&A Associate", "Investment Banking Associate"]). When filters are given, `query` is only a label and is not parsed.
Hints: read-only no · destructive no · idempotent yes · open-world yes
fetch_emailLook up the verified professional (work) email for a person you have already unlocked with find_people (or reveal_profile). Pass their `id`. Spends 1 credit, refunded automatically if no email is found. The lookup is live: if it returns emailStatus 'searching', call fetch_email again with the same id (no extra charge) to collect the result once it resolves. Returns a professional address, never a personal one; not every person has a findable work email.
Parameters:
profile_id(required) — string — The `id` of a person returned by find_people (or reveal_profile).
Hints: read-only no · destructive no · idempotent yes · open-world yes
find_work_emailFind and verify the professional (work) email of a person you can name: give their first name, last name and the company they work at (its domain, such as acme.com, matches best; a company name also works). Returns the address with a confidence label (Verified or Likely) and their LinkedIn profile when it can be matched. Spends 2 credits, refunded automatically if no email is found. People who asked to be removed from PeopleSearch.im are never looked up. To find people you cannot name yet, use people_search or find_people, then fetch_email.
Parameters:
first_name(required) — string — The person's first name.last_name(required) — string — The person's last name.company_or_domain(required) — string — The company they work at: its domain (best, e.g. acme.com) or its name.
Hints: read-only no · destructive no · idempotent no · open-world yes
verify_emailCheck whether an email address exists and is safe to send to, before it bounces. Returns a deliverability verdict (deliverable, undeliverable, or unknown) without sending anything. Spends 1 credit, refunded if no verdict can be reached.
Parameters:
email(required) — string — The email address to verify, e.g. [email protected].
Hints: read-only no · destructive no · idempotent no · open-world yes
find_company_emailsGiven a company domain or name, return the contactable role-based email addresses discovered for that organization (such as contact@, sales@, support@), each with a confidence level. Use this for reaching a company inbox, not a specific named person (for a named person use find_people or find_linkedin_profile). Spends 2 credits, refunded if none are found.
Parameters:
domain_or_company(required) — string — A company domain (preferred, e.g. acme.com) or company name.
Hints: read-only no · destructive no · idempotent no · open-world yes
reverse_email_lookupTurn a professional email address into the real person behind it and their LinkedIn profile. Best for work emails; free-mailbox addresses often have no public profile to match. Spends 13 credits (this is the single most expensive lookup), refunded automatically if no match is found.
Parameters:
email(required) — string — The email address to identify, e.g. [email protected].
Hints: read-only no · destructive no · idempotent no · open-world yes
find_linkedin_profileFind the LinkedIn profile URL for a named person. Provide their first and last name; adding the company or domain sharply improves the match. Spends 2 credits, refunded if no confident match is found.
Parameters:
first_name(required) — string — The person's first name.last_name(required) — string — The person's last name.company_or_domain— string — Optional but recommended: the company name or domain they work at, to disambiguate common names.
Hints: read-only no · destructive no · idempotent no · open-world yes
lookup_linkedin_profileTurn a LinkedIn profile URL into clean structured data: name, current role and company, and location. Spends 2 credits, refunded if the profile cannot be retrieved.
Parameters:
linkedin_url(required) — string — A LinkedIn profile URL, e.g. https://linkedin.com/in/…
Hints: read-only no · destructive no · idempotent no · open-world yes
lookup_companyTurn a LinkedIn company URL into firmographic data: industry, size, location and website. Spends 1 credit, refunded if the company cannot be retrieved.
Parameters:
linkedin_company_url(required) — string — A LinkedIn company URL, e.g. https://linkedin.com/company/…
Hints: read-only no · destructive no · idempotent no · open-world yes
company_searchread-onlySearch a global company database and get matching companies with industry, size, location and website. Three ways to ask: a company's website ('warmly.ai') returns that one company, the most exact way to identify one; a company's name ('Warmly') returns the companies of that name; a description in plain English ('Series B fintech companies in London with 50-200 employees') returns the companies that fit it. Searching companies is FREE and spends no credits. It also works before a PeopleSearch.im account is connected: without one it returns up to 3 companies per search, up to 10 searches a day.
Parameters:
query(required) — string — A company's website, a company's name, or the companies you want described in plain English.
Hints: read-only yes · destructive no · idempotent yes · open-world yes
check_creditsread-onlyReturn the current credit balance for the API key making the request. Free and read-only. Use it before a large find_people call to confirm there are enough credits.
Hints: read-only yes · destructive no · idempotent yes · open-world no
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.