An Email In, a Full Person Profile Out
Why person enrichment belongs behind one pay-per-call endpoint: an email in, a structured person record and a likelihood score out, on Monid.

Copy this line to your agent to turn an email into a full person profile.
set up https://monid.ai/SKILL.md and use pdl /v5/person/enrich to turn an email into a full person profile
Person enrichment should be one call: an identifier goes in, a structured person record comes out, and you pay for that one lookup and nothing else. That is the whole reason we put People Data Labs person enrich behind a single pay-per-call endpoint on Monid. Monid is a pay-per-call data API marketplace: one key and one wallet reach hundreds of external data endpoints across scraping, people and company enrichment, social data, and search, with the price shown before anything executes. This post is about the shape of that endpoint, and the handful of fields that decide whether an enriched row is something you can act on.
TL;DR
- One identifier in (an email, a phone, a name plus company, or a LinkedIn URL), one structured person record out.
/v5/person/enrichon People Data Labs does the whole match. - Every match carries a
likelihoodscore from 1 to 10. That single number is the trust gate: automate the confident matches, hand-check the rest. - You read the per-call price before you spend it. Enrichment prices in the cents range, always visible at monid.ai/tools.
- The fields that make a row actionable are few:
full_name,job_title_levelsfor seniority routing,job_company_namefor account matching,locationfor timezone, and social handles pluswork_emailas the fallback to reach someone. - One wallet, and Monid ships as an MCP server, so an agent can enrich a record mid-flow without a detour through a separate vendor signup.
Principle 1: one identifier in, one structured record out
The mistake most enrichment stacks make is treating a person as many lookups. One tool for the email, another for the title, a third for the LinkedIn URL. /v5/person/enrich collapses that. You hand it whatever single identifier you happen to hold, and it returns one matched record against a large person dataset.
The endpoint accepts an email, a phone, a name (or first_name plus last_name) with company, a profile field for a LinkedIn URL, an email_hash, or a pdl_id. You can add location fields like locality, region, and country to disambiguate a common name. More identifiers means a tighter match, but one is enough to start. The output is a person: name and title, current company and role, seniority, employment history, education, social profiles, location, and available contact fields. The full field list lives in the PDL person enrichment docs.

Reading the schema costs nothing:
monid inspect -p pdl -e /v5/person/enrich
# -> input schema, docs, and the per-call price (free)
Principle 2: a likelihood score you gate trust on
A match without a confidence signal is a liability. You cannot tell an exact hit from a hopeful guess, so you either trust the whole batch or distrust it. /v5/person/enrich returns a likelihood score from 1 to 10 on every match, and the input takes a min_likelihood floor. The default is 2, which is loose on purpose. For anything that touches a real reply or writes to a CRM, we raise it.
monid run -p pdl -e /v5/person/enrich \
-i '{"email": "j.torres@northwind.io", "min_likelihood": 6}' -w
# -> one person record with a likelihood score attached
The score is what makes the endpoint safe to automate. Confident matches flow straight through, uncertain ones get flagged for a human, and a query that clears no record returns no match rather than a wrong somebody. You can also require a field, so a match only counts when it comes back with, say, an email. Greeting the wrong Torres by name is worse than not greeting them at all, and the score is the lever that prevents it.
Principle 3: per-call billing you read before you spend
Enrichment usage is bursty. You research a few hundred people before a push, then nothing for weeks. A per-seat license bills the same in both, which is the wrong shape. Behind one endpoint, the cost is one call per lookup, in the cents range, and you see the exact number before it runs. Free discovery and a free schema check mean the only step that touches your wallet is the run itself.
The magnitude matters more than any single figure: enriching a couple hundred inbound emails lands in the low tens of dollars, checking a handful of replies is pocket change, and a month where you enrich nobody costs nothing. Live per-endpoint prices are at monid.ai/tools, shown by monid inspect before you commit.
Principle 4: the fields that make a row actionable
A person record is large, but the part that makes a row do work is small. Four or five fields carry it.
full_nameis the greeting, title-cased, no cleanup.job_title_levelsis normalized seniority as an array (cxo,director,manager). You branch on it in code without parsing free text, so VPs route to a human and individual contributors route to nurture.job_company_namematches the record to an account in your CRM.locationsets the timezone you reach out in.- Social handles and
work_emailare the reach layer. When the primary channel is missing, a returned LinkedIn or Twitter handle is the fallback that keeps the row contactable.
Everything else on the record is context you can pull forward later if the relationship moves. Designing to these fields is what turns an enriched blob into a routable row.
Principle 5: one wallet, and an agent can call it mid-flow
Because every provider sits behind one key and one wallet, adding enrichment to a workflow does not mean a new vendor contract. And because Monid ships as an MCP server, an agent handed "enrich this and route it" runs the call itself: it reads the schema for free, enriches the record, keeps the high-likelihood matches, flags the rest, and moves on. Visible prices plus free discovery are what make handing an agent the wallet feel safe.
For agents
Grab an API key at app.monid.ai, then paste this to your agent and hand it the key:
set up https://monid.ai/SKILL.md
It learns the whole discover, inspect, run workflow itself. More details in the agent quickstart.
For humans
npm install -g @monid-ai/cli
monid keys add --label main --key <your-api-key>
More details in the CLI quickstart.
FAQ
Do I need a People Data Labs account? No. You integrate Monid once and fund one pay-as-you-go wallet. PDL is reached through the same key, billed at the price shown before each run.
What identifiers can I pass in? An email, a phone, a name plus company, a LinkedIn URL, an email hash, or a PDL id, plus optional location fields to disambiguate a common name. Any one is enough, and more identifiers tighten the match.
How do I keep a wrong match out of my system?
Raise min_likelihood on the call and require the field you cannot ship without, such as an email. Anything that cannot clear the bar returns no match, so you flag it for review instead of trusting a stranger.
What does one enrichment cost?
It prices per call in the cents range, shown by monid inspect before you run and listed at monid.ai/tools. You pay only for the lookups you make, with nothing renewing in the background.