Provided by Prospeo
Find a Verified Work Email from a LinkedIn URL, an Email or a Name and Employer (Prospeo)
Find one person's verified work email address, returned with their name, current role, employer and career history. Identify them by LinkedIn profile URL for the best hit rate, by an email address you already hold, or by a name together with their employer's name or website — a name on its own is not enough. Only verified addresses come back, nothing is charged when no one matches, and you pay per person found with no plan.
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 Prospeo endpoint /enrich-person on Glasser.glasser run -p prospeo -e '/enrich-person' -i '{"linkedin_url":"https://www.linkedin.com/in/dylanfield"}' --endpoint-version 2Uses endpoint version 2. 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":"prospeo","endpoint":"/enrich-person","input":{"linkedin_url":"https://www.linkedin.com/in/dylanfield"},"endpoint_version":2}'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 2; inspect the current price before running.
Step 2Try a specific example task
When you need to prepare an outreach list, you might verify an email address and review its status before adding it to a contact record.
Copy this prompt into your agent to verify an email for your outreach list.
Use prospeo:/enrich-person on Glasser.
Verify this email before I add it to an outreach list and explain the returned status.Endpoint structure
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"email": {
"type": "string",
"maxLength": 254,
"minLength": 5
},
"full_name": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"last_name": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"first_name": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"company_name": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"linkedin_url": {
"type": "string",
"pattern": "^https:\\/\\/(www\\.)?linkedin\\.com\\/",
"maxLength": 300
},
"company_website": {
"type": "string",
"pattern": "^(?!-)(?:[a-z0-9-]+\\.)+[a-z]{2,}$",
"maxLength": 253,
"minLength": 3
}
},
"additionalProperties": false
}{
"linkedin_url": "https://www.linkedin.com/in/dylanfield"
}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.02695 |
|---|---|---|
| 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 |