Provided by People Data Labs
Enrich One Person from an Email, Phone, LinkedIn URL or Name and Company (PDL)
Enrich one person from an email address, a phone number, a social profile URL such as a LinkedIn page, or a name together with their company: the record carries identity, employment history, location, education, skills and public social profiles. One person per call — for a page of people use the PDL person search Endpoint, and for several known people at once the PDL bulk Endpoint. Nothing is charged when PDL has no match.
How to run it
Step 1Set up
Once: paste this into your agent's chat. The Skill installs the CLI and logs in by itself. For an agent that cannot use a shell, connect it over MCP instead.
set up https://glasser.ai/SKILL.md
Show me how to use the People Data Labs endpoint /v5/person/enrich on Glasser.glasser run -p pdl -e '/v5/person/enrich' -i '{"email":"ada@example.com","min_likelihood":6}' --endpoint-version 6Uses endpoint version 6. Inspect the current price before running. Install and log in first on Get Started.
Once per Run:
IDEMPOTENCY_KEY=$(uuidgen)Run it, and copy this same block to send it again:
curl -X POST https://api.glasser.ai/v1/runs \
-H "Authorization: Bearer gl_..." \
-H "Idempotency-Key: $IDEMPOTENCY_KEY" \
-H "Content-Type: application/json" \
-d '{"provider":"pdl","endpoint":"/v5/person/enrich","input":{"email":"ada@example.com","min_likelihood":6},"endpoint_version":6}'Reuse the same Idempotency-Key to send it again: the second send is a read of the first Run. A new key is a new Run and a new Charge. Uses endpoint version 6; inspect the current price before running.
Step 2Try a specific example task
When you need to prepare outreach to a prospect, you might look for a contact email to complete their outreach record.
Copy this prompt into your agent to look up a prospect’s contact email.
Use pdl:/v5/person/enrich on Glasser.
Find the contact email for my prospect so I can prepare an outreach record.Endpoint structure
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"email": {
"type": "string",
"allOf": [
{
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9-]*\\.)+[A-Z]{2,}$"
}
]
},
"phone": {
"type": "string",
"minLength": 1
},
"company": {
"type": "string",
"minLength": 1
},
"profile": {
"type": "string",
"minLength": 1
},
"required": {
"type": "string",
"minLength": 1,
"description": "PDL's condition on the returned fields, for example `education AND (emails OR phone_numbers)`: a record without them is no match and is not charged. It does not work on a field you also send as input."
},
"min_likelihood": {
"type": "integer",
"maximum": 10,
"minimum": 1,
"description": "PDL's match floor, 1 to 10 (PDL's default is 2): below it PDL returns no match instead of a weaker one, and no match is not charged. PDL suggests 6 or more when accuracy matters."
}
},
"additionalProperties": false
}{
"email": "ada@example.com",
"min_likelihood": 6
}This Endpoint publishes no output schema. You get the Provider's own response body, unchanged — we do not warrant a shape we cannot guarantee.
How pricing works
| Data returned | Charged only when data is returned. | $0.30 |
|---|---|---|
| Provider error | The Provider failed to answer. | $0.00 |
| Timed out | The Run exceeded its time limit. | $0.00 |
| Internal failure | An internal error prevented completion. | $0.00 |