People
Fields marked * are required. Updates keep every field they are not given. An AI app can ask vritto_describe for the same details, filtered to what its connection may use.
Personperson
Someone in the user's life: contact details, relationship, dates, and notes. people_find with from/to also reads their birthdays and important dates in a period.
people_findFindthrough vritto_findRead People: search by name, email, phone or relation word, list a view (touched by default), one person by id with full details, view "stats" for counts, or from/to for birthdays and important dates in a period. Search rows are compact. A search that finds nobody returns didYouMean (up to 3 likely people); ask the user one question naming them instead of searching again.
Note: Search with query; read one person with id; view 'circle' for stated relationships and pins, 'stats' for counts; from/to for birthdays and important dates in a period (at most 93 days).
| Field | Type | Description |
|---|---|---|
| type | one of person, moment, gift | 'person' (default). 'moment' and 'gift' list the LEGACY people moments and gift ideas, optionally for personId; gifting lives in Gifts. |
| id | string | Return just this person, with contact points, addresses, dates and notes. |
| personId | string | Older name for id. With type 'moment' or 'gift', only those for this person. |
| query | string | Search text: a name, email, phone, organization, tag, place or relation word ('mom'). |
| string | An exact email address to match. | |
| phone | string | An exact phone number to match. |
| view | one of all, circle, favorites, archived, touched, imported, stats | Defaults to "touched" when listing with no query, and to "all" when searching. "touched" = people the user has actually done something with. "imported" = untouched contacts from a provider import. "circle" = stated relationship or pin. "stats" = counts only (total, archived, pinned, favorites). |
| from | string | First day of a period: birthdays, remembrance days and important dates falling from this day. ALWAYS pass from/to when the question concerns a period (at most 93 days). |
| to | string | Last day of the period, inclusive. |
| start | string | Older form of from: an ISO 8601 date-time, inclusive. |
| end | string | Older form of to: an ISO 8601 date-time, exclusive. |
| detail | one of summary, full | Search rows: "summary" (default, name/relationship/org/city/tags) or "full" (complete records; prefer reading one person by id). |
| limit | integer | Max rows (default 50 in summary mode). |
Example input
{
"query": "Priya"
}people_addCreatethrough vritto_createAdd one person. Only displayName is required; add contact points, addresses, tags, dates and notes when known. Set relationshipToMe only if the user has said what this person is to them. Resolve with people_find first so nobody is added twice.
Note: Resolve first with people_find so the same person is not added twice.
| Field | Type | Description |
|---|---|---|
| record | object | Person fields. Only displayName is required at the top level; entries inside emails, phones, addresses, importantDates, relationships, and notes have their own required fields. |
| record.displayName* | string | Full display name. |
| record.givenName | string | Given name. |
| record.middleName | string | Middle name. |
| record.familyName | string | Family name. |
| record.nickname | string | Nickname. |
| record.pronouns | string | Pronouns. |
| record.photoUrl | string | Photo URL. Must be https:// - http:// and other schemes are rejected. Pass "" to clear it. |
| record.birthday | string | Annual birthday in MM-DD format, e.g. "03-14"; must be a real calendar date. Pass "" to clear it. |
| record.birthYear | integer | Birth year, when known. Pass null to clear it. |
| record.organization | object | Workplace details. Merged one level deep by people_change. |
| record.emails | list of object | Email addresses. |
| record.phones | list of object | Phone numbers. |
| record.addresses | list of object | Places this person is tied to, home, work, hometown. |
| record.tags | list of string | User-authored tags (unique, case-insensitive). |
| record.importedTags | list of string | Provider labels from an import, never author these; manage via people_resolveImportedTags. |
| record.relationshipToMe | object | Who this person is to the user, only as they stated it; never inferred. |
| record.pinned | boolean | User's pin into their Circle, a placement preference, not a closeness claim. |
| record.importantDates | list of object | Dates worth remembering; recurring by default. |
| record.relationships | list of object | Links to other saved people. Each personId must already exist and cannot be this person. |
| record.notes | list of object | Relationship notes. |
| record.favorite | boolean | Whether this person is a favorite. |
| person | object | Older form of record (people_createPerson). |
| person.displayName | string | |
| gift | object | LEGACY older form (people_createPersonGift): a gift idea. Use gifts_add instead. |
| gift.title | string | |
| moment | object | LEGACY older form (people_createPeopleMoment). Never create new moments. |
| moment.title | string |
Example input
{
"record": {
"displayName": "Priya Shah",
"givenName": "Priya",
"familyName": "Shah",
"emails": [
{
"id": "email1",
"label": "Personal",
"value": "priya.shah@example.com"
}
],
"birthday": "03-12",
"birthYear": 1994
}
}people_changeUpdatethrough vritto_updateChange one person by record.id: sent fields change, others keep their values; organization and relationshipToMe merge one level deep, ARRAYS replace wholesale (read the person first and send each array complete). Pin with pinned, archive with archived, state a relationship with relationshipToMe.
Note: Omitted fields keep their values; organization and relationshipToMe merge one level deep; arrays replace wholesale, so send the full list when changing one.
| Field | Type | Description |
|---|---|---|
| record | object | The person's id plus the fields to change. Family facts (documents, medical, nationalities) are set only here. |
| record.displayName | string | Full display name. |
| record.givenName | string | Given name. |
| record.middleName | string | Middle name. |
| record.familyName | string | Family name. |
| record.nickname | string | Nickname. |
| record.pronouns | string | Pronouns. |
| record.photoUrl | string | Photo URL. Must be https:// - http:// and other schemes are rejected. Pass "" to clear it. |
| record.birthday | string | Annual birthday in MM-DD format, e.g. "03-14"; must be a real calendar date. Pass "" to clear it. |
| record.birthYear | integer | Birth year, when known. Pass null to clear it. |
| record.organization | object | Workplace details. Merged one level deep by people_change. |
| record.emails | list of object | Email addresses. |
| record.phones | list of object | Phone numbers. |
| record.addresses | list of object | Places this person is tied to, home, work, hometown. |
| record.tags | list of string | User-authored tags (unique, case-insensitive). |
| record.importedTags | list of string | Provider labels from an import, never author these; manage via people_resolveImportedTags. |
| record.relationshipToMe | object | Who this person is to the user, only as they stated it; never inferred. |
| record.pinned | boolean | User's pin into their Circle, a placement preference, not a closeness claim. |
| record.importantDates | list of object | Dates worth remembering; recurring by default. |
| record.relationships | list of object | Links to other saved people. Each personId must already exist and cannot be this person. |
| record.notes | list of object | Relationship notes. |
| record.favorite | boolean | Whether this person is a favorite. |
| record.nationalities | list of string | |
| record.documents | list of object | ID/travel documents; array replaces wholesale. Reads never return numbers. |
| record.medical | object | Medical basics (allergies, blood type). |
| record.gender | string | |
| record.details | list of object | |
| record.passedAway | object | Only when the user says this person has died; null clears it. |
| record.id* | string | Person ID from people_find, never invented. |
| record.archived | boolean | true archives the person (kept, hidden from lists); false restores them. |
| expectedRevision | integer | Current record revision; the write aborts if it changed elsewhere. |
| personId | string | Older name for record.id, with patch, archived, pinned or relationshipToMe. |
| patch | object | Older form (people_patchPerson): the fields to change, with personId. |
| patch.displayName | string | |
| person | object | Older form (people_updatePerson): a WHOLE replacement record; every omitted field is cleared. |
| person.id | string | |
| archived | boolean | Older form, with personId. |
| pinned | boolean | Older form, with personId. |
| relationshipToMe | object | Older form (people_setPersonRelationshipToMe), with personId: replaces the whole edge. |
| relationshipToMe.kind | one of none, partner, spouse, engaged, ex_partner, parent, child, sibling, grandparent, grandchild, family, friend, colleague, mentor | What this person is to the user, a stated fact, never inferred. "none" = not stated. (No closeness ranks, by design, see the module guide.) |
| gift | object | LEGACY older form (people_updatePersonGift): a whole replacement gift idea. |
| gift.id | string | |
| moment | object | LEGACY older form (people_updatePeopleMoment): a whole replacement moment. |
| moment.id | string |
Example input
{
"record": {
"id": "person_priya",
"nickname": "Pri"
}
}people_removeDeletethrough vritto_deletePermanently delete one person, remove them from moments, and drop relationship references from other people. Only on an explicit request; archiving (people_change archived) keeps them. Resolve the id with people_find first.
Note: Archiving (people_change with archived true) keeps the person instead.
| Field | Type | Description |
|---|---|---|
| id | string | The person to delete. |
| expectedRevision | integer | Current record revision; the write aborts if it changed elsewhere. |
| personId | string | Older name for id. |
| giftId | string | LEGACY older form (people_deletePersonGift): a gift idea saved in People. |
| momentId | string | LEGACY older form (people_deletePeopleMoment). |
Kept in the Vritto app
people_resolveImportedTags: Cleans up what a connected account imported, which is reviewed in the app.people_googlePeopleAuth: Connects, syncs, or disconnects another account.people_listGooglePeopleConnections: Connects, syncs, or disconnects another account.people_syncGooglePeople: Connects, syncs, or disconnects another account.people_disconnectGooglePeople: Connects, syncs, or disconnects another account.people_applyPeopleTagGroup: Rewrites a field across every record at once, which is done in the app where the whole set is in view.