Person IDs come from
syrto_find_person, or from the person_id on an officer, shareholder or beneficial owner returned by syrto_get_company_structure. The structure route is the more precise of the two - syrto_find_person is a name search, so it can land on a namesake.
syrto_get_person_contacts
Reports the contact details held for a person and the cost of buying them. Spends no contact credits and is safe to call repeatedly.
Use it:
- Before every purchase. It supplies the cost to confirm with the user, and says whether anything can be found for this person at all.
- To read contacts already bought.
- To collect data that is still arriving. Providers return emails first and phone numbers afterwards, so contacts with status
IN_PROGRESSare incomplete for a short while. Calling this again is how the rest arrives - buying again would pay twice for it.
Arguments
string
required
The person ID, from
syrto_find_person or from a person_id in syrto_get_company_structure.string
"en" for English (default) or "it" for Italian.Returns
object
id (the person_id you passed) and name.object
What can be bought, not what is held:
has_email- an email address can be foundhas_direct_phone- a direct phone number can be foundcredit_cost- what buying it would cost
false means nothing can be found for this person at any price.object | null
What the organization has already bought:
status-COMPLETED, orIN_PROGRESSwhile more is still arrivingemails- list of email addressesphone_numbers- list of phone numbers
object | null
available and reserved credits for the organization. Omitted when the credential has no organization the API can resolve credits for.syrto_request_person_contacts
Buys a person’s contact details. This spends the organization’s credits.
Before buying
- Call
syrto_get_person_contactsfor the exactcredit_cost, and to check anything can be found for this person at all. - Tell the user whose contacts these are and what they cost, and get their explicit agreement to spend it.
- Pass that cost as
expected_credit_cost. The purchase is refused if the live price differs, which catches a stale price - it does not establish that anyone agreed to it, so step 2 still stands on its own.
When a repeat costs nothing
Two independent things decide whether a repeat is charged:- The upstream API deduplicates a dispatched purchase intent - the same person and
force_new- for 24 hours, returning the first purchase rather than charging again. - Separately, this tool refuses contacts the organization already holds, whether or not that window has passed, unless
force_newistrue.
force_new: true is protected only by the first, and buys again once the window passes.
Do not call this tool to collect contacts that are still arriving. Providers return emails first and phone numbers afterwards, and syrto_get_person_contacts returns the rest at no cost once they land.
If the call times out or fails, call it again with the same purchase intent - the same person and force_new. Adding force_new makes it a different purchase, charged in full. expected_credit_cost and language are not part of the intent.
Arguments
string
required
The person to buy contact details for.
integer
required
The
credit_cost from syrto_get_person_contacts, as shown to the user.boolean
Run a fresh provider lookup for a person whose contacts the organization already has. Charges in full. Default
false. Not for collecting in-progress data - that is free through syrto_get_person_contacts.string
"en" for English (default) or "it" for Italian.Returns
object
id and name.object | null
status (COMPLETED, or IN_PROGRESS while more is arriving), emails and phone_numbers. Omitted when the provider found nothing.integer
The price quoted for this enrichment, not a confirmed debit - the upstream API does not report what it charged.
0 is the exception and is certain: an enrichment that finds nothing is not charged for at all. A positive value can also end up uncharged, if this call repeated an identical force_new purchase within 24 hours - which is replayed upstream and is not detectable here.The provider may find nothing. That is a successful, unbilled call: it comes back with no contacts and a
warning saying so. It is “no contacts could be found”, not an error, and retrying will not change it.