> ## Documentation index
> Fetch the complete documentation index at: https://docs.leadmcp.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Enrichment

Match identifiers to stored rows.

Takes up to 100 work emails, phone numbers or LinkedIn URLs and returns the matching stored rows. The result keeps the input order, one result per input. You pay one contact credit for each match, and a miss costs nothing. Matching is exact: an email is lowercased and a LinkedIn URL reduces to its slug. When two contacts share a work email, the later `last_updated` wins and a `duplicate_work_email` warning says so. When two contacts share a LinkedIn slug, the later `last_updated` wins and a `duplicate_linkedin` warning says so. Both duplicate warnings include `keys_applied` and a `hint`. Phones match mobile_phone or direct_phone. A number shared by multiple contacts returns matched false and reason ambiguous. It costs zero contact credits. An input that is no email, phone or LinkedIn profile URL returns reason invalid and costs zero contact credits. The forms `mailto:` and `Name <email>` are accepted. Send the full profile URL. To find a person by name, use `POST /contacts/search` with `domains` and a `where` leaf on `name` with `contains`. Each matched input costs one contact credit, including repeated inputs.

## Modes

- `stored`: `stored` reads our own store and is the only working value in v1.
- `refresh`: `refresh` is reserved and returns 400 enrich.mode_unavailable until v2.

Sending mode: refresh returns 400 enrich.mode_unavailable. The value is reserved for v2.

One call takes at most 100 inputs.
