Read consented website contacts with an MCP cursor

This reads stored account-owned contacts. It does not start identification, guarantee a match or grant permission to contact a person for a new purpose.

1. Check the account and pixel

Connect from the connection hub with your own private account key. Use whoami(), setup_status() and list_pixels() to locate your pixel and current access status. Review get_policy(pixel_id) before using the results. Evaluator connections return labeled synthetic fixtures only.

2. Choose one retrieval mode

Use get_contacts(pixel_id, on="YYYY-MM-DD") for a UTC day. Alternatively use get_contacts(pixel_id, after=0) to start a cursor pull. Supply either on or after, never both. The cursor is a nonnegative integer, and day values use a real UTC calendar date.

3. Continue from the saved cursor

After successfully processing the returned rows, save high_water and use it as the next after. If processing is interrupted, retry from the last successfully committed cursor and deduplicate using the stored contact id returned with each row. New rows can arrive between reads. An empty response can mean there are no new stored contacts; it does not prove there was no website traffic or consent. Keep retrieved customer data private and within your authorized purpose.

4. Recover without duplicate actions

A 401 needs a valid private key. A 403 needs the account or evaluator next action. A 404 needs a pixel owned by the same account. A temporary 502/503 warrants bounded retry. Do not repeat signup or key issuance as a retrieval retry.

Pricing and limits

30-day trial without a card, then $1 per account/month. Includes 3 pixels and 500 new contacts per UTC calendar month. No extra charges. New resolution pauses when the trial expires until subscribed. At the monthly contact limit, new resolution pauses until the next UTC calendar month; subscribing does not raise this limit.