Skip To Main Content
All modules

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_getPersonFindthrough vritto_find

Fetch one person by ID.

FieldTypeDescription
personId*stringPerson ID.
people_queryPeopleFindthrough vritto_find

Search people by free text, optionally scoped. Listing without a query defaults to "touched" (people the user actually knows) rather than their whole address book. Rows are compact summaries; people_getPerson for one full record.

FieldTypeDescription
querystringSearch query.
viewone of all, circle, favorites, archived, touched, importedView. Defaults to "touched" when listing with no query, and to "all" when searching. "touched" = people the user has actually done something with (stated a relationship, pinned, edited, or named in a meal/gift/watch/trip). "imported" = the complement, untouched contacts from a provider import. "circ
detailone of summary, fullRow shape: "summary" (default, name/relationship/org/city/tags) or "full" (complete person records, prefer people_getPerson instead).
limitintegerMax records to return (default 50 in summary mode).
people_queryPeopleStatsFindthrough vritto_find

Count people: total, archived, pinned, favorites. Prefer this over people_queryPeople for how-many questions.

No input.

people_resolvePersonFindthrough vritto_find

Resolve a person by name, email, or phone before any write. Returns ranked candidates with confidence.

FieldTypeDescription
querystringName or search query.
emailstringExact email address.
phonestringExact phone number.
detailone of summary, fullCandidate shape: "summary" (default, name/relationship/org) or "full" (complete person records).
limitintegerMaximum candidates (defaults to 8).
people_createPersonCreatethrough vritto_create

Create 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.

Note: Resolve first with people_resolvePerson so the same person is not added twice.

FieldTypeDescription
person*objectPerson fields. Only displayName is required at the top level; entries inside emails, phones, addresses, importantDates, relationships, and notes have their own required fields.
person.displayName*stringFull display name.
person.givenNamestringGiven name.
person.middleNamestringMiddle name.
person.familyNamestringFamily name.
person.nicknamestringNickname.
person.pronounsstringPronouns.
person.photoUrlstringPhoto URL. Must be https:// - http:// and other schemes are rejected. Pass "" to clear it.
person.birthdaystringAnnual birthday in MM-DD format, e.g. "03-14"; must be a real calendar date. Pass "" to clear it.
person.birthYearintegerBirth year, when known. Pass null to clear it.
person.organizationobjectWorkplace details. Merged one level deep by people_patchPerson.
person.emailslist of objectEmail addresses.
person.phoneslist of objectPhone numbers.
person.addresseslist of objectPlaces this person is tied to, home, work, hometown.
person.tagslist of stringUser-authored tags (unique, case-insensitive).
person.importedTagslist of stringProvider labels from an import, never author these. Include them UNCHANGED on people_updatePerson (omitting clears them); manage via people_resolveImportedTags.
person.relationshipToMeobjectWho this person is to the user, only as they stated it; prefer people_setPersonRelationshipToMe.
person.pinnedbooleanUser's pin into their Circle, a placement preference, not a closeness claim; prefer people_setPersonPinned.
person.importantDateslist of objectDates worth remembering; recurring by default.
person.relationshipslist of objectLinks to other saved people. Each personId must already exist and cannot be this person.
person.noteslist of objectRelationship notes.
person.favoritebooleanWhether this person is a favorite.
Example input
{
  "person": {
    "displayName": "Priya Shah",
    "givenName": "Priya",
    "familyName": "Shah",
    "emails": [
      {
        "id": "email1",
        "label": "Personal",
        "value": "priya.shah@example.com"
      }
    ],
    "birthday": "03-12",
    "birthYear": 1994
  }
}
people_applyPeopleTagGroupUpdatethrough vritto_update

Apply a tag as a group across people: members get the tag, everyone else loses it. Pass currentTag when renaming an existing group.

FieldTypeDescription
tag*stringGroup (tag) name to apply.
currentTagstringExisting group name being renamed, if any.
memberIds*list of stringPerson IDs that should carry the tag; others lose it.
people_patchPersonUpdatethrough vritto_update

Patch one person: omitted fields keep their values; organization/relationshipToMe merge one level deep. ARRAYS replace wholesale: read the person first and send each array complete.

Note: Omitted fields keep their values; arrays replace wholesale, so send the full list when changing one.

FieldTypeDescription
personId*stringPerson ID.
patch*objectPerson fields to change; omitted fields keep their current value. Family facts (documents, medical, nationalities) are settable ONLY here.
patch.displayNamestringFull display name.
patch.givenNamestringGiven name.
patch.middleNamestringMiddle name.
patch.familyNamestringFamily name.
patch.nicknamestringNickname.
patch.pronounsstringPronouns.
patch.photoUrlstringPhoto URL. Must be https:// - http:// and other schemes are rejected. Pass "" to clear it.
patch.birthdaystringAnnual birthday in MM-DD format, e.g. "03-14"; must be a real calendar date. Pass "" to clear it.
patch.birthYearintegerBirth year, when known. Pass null to clear it.
patch.organizationobjectWorkplace details. Merged one level deep by people_patchPerson.
patch.emailslist of objectEmail addresses.
patch.phoneslist of objectPhone numbers.
patch.addresseslist of objectPlaces this person is tied to, home, work, hometown.
patch.tagslist of stringUser-authored tags (unique, case-insensitive).
patch.importedTagslist of stringProvider labels from an import, never author these. Include them UNCHANGED on people_updatePerson (omitting clears them); manage via people_resolveImportedTags.
patch.relationshipToMeobjectWho this person is to the user, only as they stated it; prefer people_setPersonRelationshipToMe.
patch.pinnedbooleanUser's pin into their Circle, a placement preference, not a closeness claim; prefer people_setPersonPinned.
patch.importantDateslist of objectDates worth remembering; recurring by default.
patch.relationshipslist of objectLinks to other saved people. Each personId must already exist and cannot be this person.
patch.noteslist of objectRelationship notes.
patch.favoritebooleanWhether this person is a favorite.
patch.nationalitieslist of string
patch.documentslist of objectID/travel documents; array replaces wholesale. Reads never return numbers.
patch.medicalobjectMedical basics (allergies, blood type).
expectedRevisionintegerCurrent record revision; the write aborts if it changed elsewhere.
Example input
{
  "personId": "person_priya",
  "patch": {
    "nickname": "Pri"
  }
}
people_resolveImportedTagsUpdatethrough vritto_update

Promote imported provider labels to real tags and/or dismiss them, across everyone at once (case-insensitive). Only labels the user asked for, dismissing is not undoable.

FieldTypeDescription
promotelist of stringImported labels to turn into real user tags (unique, case-insensitive).
dismisslist of stringImported labels to drop (unique, case-insensitive).
people_setPersonArchivedUpdatethrough vritto_update

Archive or unarchive a person without deleting their data.

FieldTypeDescription
personId*stringPerson ID.
archived*booleanTrue to archive, false to restore.
expectedRevision*integerCurrent record revision; the write aborts if it changed elsewhere.
people_setPersonPinnedUpdatethrough vritto_update

Pin or unpin a person into the Circle, a placement preference, not a relationship claim (that is people_setPersonRelationshipToMe).

FieldTypeDescription
personId*stringPerson ID.
pinned*booleanTrue to pin into the Circle, false to unpin.
people_setPersonRelationshipToMeUpdatethrough vritto_update

State who a person is to the user, ONLY as the user said it, never inferred. Replaces the whole edge (include everything to keep); kind "none" removes it.

Note: Replaces the whole relationship; include everything to keep.

FieldTypeDescription
personId*stringPerson ID.
relationshipToMe*objectThe relationship this person has to the user, as the user stated it.
relationshipToMe.kind*one of none, partner, spouse, engaged, ex_partner, parent, child, sibling, grandparent, grandchild, family, friend, colleague, mentorWhat this person is to the user, a stated fact, never inferred. "none" = not stated. (No closeness ranks, by design, see the module guide.)
relationshipToMe.startobjectWhen the relationship began, if the user said.
relationshipToMe.endobjectWhen it ended, if the user said.
relationshipToMe.currentbooleanWhether the relationship is ongoing. Defaults to true.
relationshipToMe.notestringThe user's own words about this relationship.
expectedRevisionintegerCurrent record revision; the write aborts if it changed elsewhere.
people_deletePersonDeletethrough vritto_delete

Permanently delete a person, remove them from moments, and drop relationship references from other people. This cannot be undone.

FieldTypeDescription
personId*stringPerson ID.
expectedRevision*integerCurrent record revision; the write aborts if it changed elsewhere.

Person Momentperson_moment

A dated moment with people, from before Memories existed.

people_queryPeopleMomentsFindthrough vritto_find

List relationship moments, most recent first, optionally filtered to one person.

FieldTypeDescription
personIdstringOnly moments involving this person.
limitintegerMax records to return (defaults to 200).
people_updatePeopleMomentUpdatethrough vritto_update

Replace a relationship moment's fields by moment ID.

Note: Replaces the moment's fields; send every field to keep.

FieldTypeDescription
moment*objectComplete replacement moment, including its id.
moment.id*stringMoment ID.
moment.personIds*list of stringIDs of the people this moment involves.
moment.kind*one of memory, meetup, gift, follow_up, milestoneMoment kind.
moment.title*stringMoment title.
moment.detailsstringDetails.
moment.occurredOn*stringDate the moment occurred or is planned (YYYY-MM-DD).
moment.reminderAtstringOptional reminder time as an ISO 8601 datetime.
moment.statusone of open, completedMoment status; anything other than "open" is stored as completed.
expectedRevision*integerCurrent record revision; the write aborts if it changed elsewhere.
people_deletePeopleMomentDeletethrough vritto_delete

Permanently delete a relationship moment and cancel its reminder.

FieldTypeDescription
momentId*stringMoment ID.
expectedRevision*integerCurrent record revision; the write aborts if it changed elsewhere.

Person Dateperson_date

Birthdays and important dates on the calendar; read-only.

people_getPeopleCalendarOccurrencesFindthrough vritto_find

Read people-derived calendar occurrences (birthdays, important dates, and dated moments) inside a window of at most 93 days.

FieldTypeDescription
start*stringWindow start as an ISO 8601 datetime (inclusive).
end*stringWindow end as an ISO 8601 datetime (exclusive; at most 93 days after start).

Kept in the Vritto 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_createPersonGift: Superseded by a newer operation that is on MCP.
  • people_queryPersonGifts: Superseded by a newer operation that is on MCP.
  • people_updatePersonGift: Superseded by a newer operation that is on MCP.
  • people_deletePersonGift: Superseded by a newer operation that is on MCP.
  • people_createPeopleMoment: Superseded by a newer operation that is on MCP.
  • people_updatePerson: Replaces a whole record and clears omitted fields; the merge operation is on MCP instead.