Docs
Listen Enrich
Keep LinkedIn professional context beside the sales conversation that prompted the lookup.
Look up an exact profile
- Open Listen Enrich in the app, or select an author from a mention. Provide an exact LinkedIn profile if the author has no linked profile.
- Request an estimate. Check the target, operation and credit cost before confirming.
- Confirm once. Keep the request identifier while the lookup runs. On an uncertain result, inspect its status rather than starting another lookup.
- Read the saved contact after success. Missing fields remain missing. Profile enrichment never initiates an email lookup.
Request work email separately
Eligible saved LinkedIn contacts need first and last name, company and employer domain. Request a new email estimate and explicitly confirm its cost. New profile and work-email lookups are LinkedIn-only. Only deliverable verified results are labeled verified; no result is a valid outcome.
MCP and CLI
Use list_contacts for saved reads and enrich_contact for estimates, confirmed execution and status polling. Show the exact target and credit cost to the person before confirmation. Reuse the idempotency key on retries for the same quote.
# Repository CLI until the updated npm package is released
node cli/earshots.mjs contacts --workspace <workspace-id> --search engineer --network linkedin
node cli/earshots.mjs enrich --workspace <workspace-id> --url <linkedin-profile-url>
# After the person approves the displayed target and cost:
node cli/earshots.mjs enrich --workspace <workspace-id> --confirm --quote-id <quoteId> --idempotency-key <uuid>
node cli/earshots.mjs enrich --workspace <workspace-id> --request-id <request-id>
# Separate email estimate:
node cli/earshots.mjs enrich --workspace <workspace-id> --operation email --contact-id <contact-id>An expired quote needs a new estimate and confirmation. A needs_review result must be reviewed before another paid attempt. Neither MCP nor CLI accepts provider terms or sends messages.
Read saved contacts over REST
Create a workspace key with contacts:read. Older keys do not gain the permission automatically. GET /api/v1/contacts follows the shared limit, cursor and UTC date filters; dates filter contact creation time. It does not request profiles or email.
curl --location --fail-with-body \
--header "Authorization: Bearer $EARSHOTS_API_KEY" \
'https://earshots.dev/api/v1/contacts?limit=25'