Games
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.
Gamegame
A game in the user's library, with status and rating.
games_queryGamePersonLinksFindthrough vritto_findRead games linked to one Vritto People record: what they recommended, play logs shared with them, and their favorite/dislike taste records.
| Field | Type | Description |
|---|---|---|
| personId* | string | Vritto People record ID. |
| detail | one of summary, full | Row shape for linked records and play logs: "summary" (default, compact) or "full" (every field incl. notes). |
| limit | integer | Maximum linked records per bucket (default 100). |
games_queryGameRecordsFindthrough vritto_findSearch the user's saved game library by text and/or play status. Use this to resolve mediaRecordId values before play-log or record writes.
| Field | Type | Description |
|---|---|---|
| query | string | Case-insensitive text matched against title, overview, genres, and tags. |
| status | one of want_to_play, playing, beaten, completed, on_hold, dropped | Filter by play status. |
| detail | one of summary, full | Row shape: "summary" (default, id/title/status/rating/year) or "full" (every field incl. journal notes and overview). |
| limit | integer | Maximum records (default 50 in summary mode). |
| cursor | string | Pagination cursor from a previous nextCursor. |
games_queryGameStatsFindthrough vritto_findSummarize the game library: totals, play-log counts by year and month, and rating distribution. Prefer this for how-many-games-played questions.
| Field | Type | Description |
|---|---|---|
| year | string | Optional four-digit year filter for the by-year breakdown. |
games_upsertGameRecordCreate or Updatethrough vritto_create or vritto_updateSave a game to the library. Prefer passing providerId alone to import full IGDB metadata (existing status/rating/notes/tags are preserved); pass record only for manual or full-record writes, which replace stored fields.
Note: Pass providerId from vritto_lookup (game_catalog) to save with full details. A record body replaces stored fields.
| Field | Type | Description |
|---|---|---|
| providerId | string | IGDB game ID: pass this alone to import/save with IGDB metadata. |
| status | one of want_to_play, playing, beaten, completed, on_hold, dropped | Initial play status for a provider-only quick-save (providerId without record); only applied when creating, an existing record's status wins. Ignored when record is passed. |
| mediaRecordId | string | Existing saved record ID to overwrite; defaults to a provider-derived ID. |
| record | object | Full game record body. The write replaces the stored record, so include every field to keep. |
| record.providerRef* | object | Provider reference identifying the game. |
| record.title* | string | Game title. |
| record.originalTitle | string | |
| record.overview | string | |
| record.releaseDate | string | YYYY-MM-DD release date; also the default first-play date. |
| record.genres | list of string | |
| record.storyline | string | IGDB storyline text. |
| record.platformsAvailable | list of string | Platforms the game is available on. |
| record.developers | list of string | |
| record.publishers | list of string | |
| record.gameModes | list of string | Game modes, e.g. Single player, Multiplayer, Co-operative. |
| record.playerPerspectives | list of string | Player perspectives, e.g. First person, Third person. |
| record.themes | list of string | IGDB themes. |
| record.keywords | list of string | IGDB keywords. |
| record.franchises | list of string | Franchises the game belongs to. |
| record.series | list of string | Game series/collections the game belongs to. |
| record.timeToBeat | object | How long to beat, in hours. |
| record.startedOn | string | YYYY-MM-DD the user started playing. |
| record.finishedOn | string | YYYY-MM-DD the user beat/finished the game. |
| record.platformPlayed | string | Platform the user played on, e.g. PS5 or Steam Deck. |
| record.replayCount | integer | Completed replays beyond the first playthrough. |
| record.metacritic | integer | Critic score 0-100. |
| record.igdbRating | integer | IGDB rating 0-100. |
| record.status | one of want_to_play, playing, beaten, completed, on_hold, dropped | Play status; defaults to "want_to_play". |
| record.rating | one of dislike, okay, like, love | Rating on Vritto's four-point scale. |
| record.journalNotes | string | Owner journal notes. |
| record.recommendedByPersonIds | list of string | Vritto People record IDs who recommended this game. |
| record.tags | list of string | List names/tags. |
Example input
{
"providerId": "217590",
"status": "playing"
}games_deleteGameRecordDeletethrough vritto_deleteRemove one saved game plus all of its play logs and recommendations. Only for explicit removals.
| Field | Type | Description |
|---|---|---|
| mediaRecordId* | string | Saved game record ID to delete. |
Game Play Loggame_play_log
One play session of a saved game.
games_queryGamePlayLogsFindthrough vritto_findList game play logs (title, date, platform, hours, rating), newest first. Supports a played-date range, ALWAYS pass from/to when the question concerns a period (a year, a month, 'recently'). Rows are compact summaries; pass detail 'full' only when the user needs full session notes.
| Field | Type | Description |
|---|---|---|
| mediaRecordId | string | Limit logs to one saved game record. |
| from | string | Only logs played ON or AFTER this YYYY-MM-DD date. |
| to | string | Only logs played ON or BEFORE this YYYY-MM-DD date. |
| detail | one of summary, full | Row shape: "summary" (default, title/date/platform/hours/rating + notes preview) or "full" (every field incl. complete notes). |
| limit | integer | Maximum logs (default 100 in summary mode). |
| cursor | string | Pagination cursor from a previous nextCursor. |
games_addGamePlayLogCreatethrough vritto_createLog a play session of a saved game and mark the record playing. Use this to mark games as played after resolving the mediaRecordId; omit watchedOn when the release-date default is acceptable.
| Field | Type | Description |
|---|---|---|
| watchLogId | string | Explicit play log ID; reusing the same ID makes retries idempotent. Defaults to a random ID. |
| log* | object | Play log fields. |
| log.mediaRecordId* | string | Saved game record ID; resolve it with games_queryGameRecords first. |
| log.watchedOn | string | YYYY-MM-DD play date. Omit to default to the IGDB release date, marked as defaulted so the user can edit it later. |
| log.platform | string | Where it was played, e.g. PS5 or Steam Deck. |
| log.platformType | one of pc, playstation, xbox, nintendo, mobile, handheld, other | Platform family; defaults to "pc". |
| log.platformService | string | Storefront/service name, e.g. Steam or Game Pass. |
| log.hoursPlayed | number | Hours played in this session. |
| log.platformCountry | one of US, IN | Country whose catalog the platform was played in; omit when unknown. |
| log.placeKey | string | Places key where it was played: google:<placeId> or manual:<uuid>, from the Places module. |
| log.locationLabel | string | Free-text location label. |
| log.watchedWithPersonIds | list of string | Vritto People record IDs the user played with; must reference active People records. |
| log.notes | string | Journal notes for this session. |
| log.rating | one of dislike, okay, like, love | Rating on Vritto's four-point scale. |
Example input
{
"log": {
"mediaRecordId": "game_hades2",
"watchedOn": "2026-09-25",
"platformType": "pc",
"hoursPlayed": 2.5,
"rating": "love"
}
}games_updateGamePlayLogUpdatethrough vritto_updateRewrite an existing game play log. The log body replaces the stored fields, so include mediaRecordId and every field to keep.
Note: The log body replaces the stored fields; read the log first and send every field to keep.
| Field | Type | Description |
|---|---|---|
| watchLogId* | string | Existing play log ID. |
| log* | object | Play log fields. |
| log.mediaRecordId* | string | Saved game record ID; resolve it with games_queryGameRecords first. |
| log.watchedOn | string | YYYY-MM-DD play date. Omit to default to the IGDB release date, marked as defaulted so the user can edit it later. |
| log.platform | string | Where it was played, e.g. PS5 or Steam Deck. |
| log.platformType | one of pc, playstation, xbox, nintendo, mobile, handheld, other | Platform family; defaults to "pc". |
| log.platformService | string | Storefront/service name, e.g. Steam or Game Pass. |
| log.hoursPlayed | number | Hours played in this session. |
| log.platformCountry | one of US, IN | Country whose catalog the platform was played in; omit when unknown. |
| log.placeKey | string | Places key where it was played: google:<placeId> or manual:<uuid>, from the Places module. |
| log.locationLabel | string | Free-text location label. |
| log.watchedWithPersonIds | list of string | Vritto People record IDs the user played with; must reference active People records. |
| log.notes | string | Journal notes for this session. |
| log.rating | one of dislike, okay, like, love | Rating on Vritto's four-point scale. |
games_deleteGamePlayLogDeletethrough vritto_deleteDelete one game play log and refresh the record's play count and last-played date. Only for explicit removals.
| Field | Type | Description |
|---|---|---|
| watchLogId* | string | Play log ID to delete. |
Game Recommendationgame_recommendation
A person's recommendation of a saved game.
games_upsertGameRecommendationCreate or Updatethrough vritto_create or vritto_updateRecord that a Vritto person recommended a saved game, and track the recommendation's status. Also links the person on the game record.
| Field | Type | Description |
|---|---|---|
| recommendationId | string | Existing recommendation ID; defaults to a game+person derived ID. |
| recommendation* | object | |
| recommendation.mediaRecordId* | string | Saved game record ID. |
| recommendation.personId* | string | Vritto People record ID of the recommender. |
| recommendation.status | one of open, accepted, dismissed, watched | Recommendation status; defaults to "open". |
| recommendation.note | string | Why they recommended it. |
Person's Game Tastegame_taste
A person's favorite or disliked game.
games_upsertGamePersonTasteCreate or Updatethrough vritto_create or vritto_updateRecord a Vritto person's favorite/dislike taste for a game identified by provider reference (the game does not need to be saved).
| Field | Type | Description |
|---|---|---|
| personTasteId | string | Existing taste record ID; defaults to a person+game derived ID. |
| personTaste* | object | |
| personTaste.personId* | string | Vritto People record ID. |
| personTaste.providerRef* | object | Provider reference identifying the game. |
| personTaste.taste* | one of favorite, dislike | Whether the person loves or avoids it. |
| personTaste.note | string |
Game Cataloggame_catalog
IGDB reference data, for saving a game with full details.
games_discoverGamesLook Upthrough vritto_lookupBrowse IGDB discovery lists (popular, new releases, upcoming, top rated) when the user wants suggestions rather than a title search.
| Field | Type | Description |
|---|---|---|
| category | one of popular, new_releases, upcoming, top_rated | Discovery list; defaults to "popular". |
games_getGameDetailsLook Upthrough vritto_lookupFetch full IGDB details (summary, genres, platforms, developers, publishers, ratings) for one game by IGDB ID.
| Field | Type | Description |
|---|---|---|
| providerId* | string | IGDB game ID (numeric string). |
games_searchGamesLook Upthrough vritto_lookupSearch IGDB for games by title; an empty query returns popular games. Returns provider metadata, not the user's saved library: use games_queryGameRecords for saved games.
| Field | Type | Description |
|---|---|---|
| query | string | Search text. Omit to return popular games. |