Skip To Main Content
All modules

Goals

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.

Goalgoal

A goal with progress, milestones, check-ins, and links.

goals_getGoalFindthrough vritto_find

Fetch one goal by ID, including its metric values, milestones, and check-ins. Use only when the goal ID is already known.

FieldTypeDescription
goalId*stringGoal ID.
goals_queryGoalsFindthrough vritto_find

Search goals with optional text query and status/priority/horizon/area/tag filters, e.g. { status: "active", limit: 20 }. Cancelled goals are excluded. Rows are compact summaries (id/title/status/targetDate/progressPct/lastCheckInAt/tags); pass detail 'full' or fetch one goal with goals_getGoal when the user needs check-ins, milestones, or the full why.

FieldTypeDescription
querystringFree-text search over titles, whys, tags, and check-ins.
statusone of planned, active, paused, achieved, missed, cancelledFilter by status.
priorityone of low, normal, high, urgentFilter by priority.
horizonone of weekly, monthly, quarterly, yearly, customFilter by horizon.
areastringFilter by area.
tagstringFilter by tag.
ownerPersonIdstringOnly goals owned by this person ID.
linkedModuleIdstringOnly goals linked to records of this module.
linkedEntityIdstringOnly goals linked to this record ID (combine with linkedModuleId).
includeArchivedbooleanInclude cancelled goals; default false.
detailone of summary, fullRow shape: "summary" (default, id/title/status/targetDate/progressPct/lastCheckInAt/tags) or "full" (every field incl. check-ins, milestones, and habit log).
limitintegerMax records to return (default 50 in summary mode).
goals_createGoalCreatethrough vritto_create

Create a goal. Only goal.title is required; include horizon, priority, metricType, startValue/currentValue/targetValue, unit, and targetDate when known, e.g. { title: "Ship Vritto beta", horizon: "quarterly", metricType: "percent", targetValue: 100, currentValue: 30, priority: "high" }.

FieldTypeDescription
goal*objectGoal fields; only title is required.
goal.title*stringGoal title.
goal.whystringReason this goal matters.
goal.statusone of planned, active, paused, achieved, missed, cancelledGoal status; defaults to "active".
goal.priorityone of low, normal, high, urgentPriority; defaults to "normal".
goal.kindone of objective, key_result, habit, targetGoal kind; defaults to "objective".
goal.horizonone of weekly, monthly, quarterly, yearly, customTime horizon; defaults to "quarterly".
goal.areastringArea or domain.
goal.startDatestringStart date YYYY-MM-DD.
goal.targetDatestringTarget date YYYY-MM-DD.
goal.metricTypeone of percent, number, currency, booleanHow progress is measured; defaults to "percent".
goal.startValuenumberStarting metric value; defaults to 0.
goal.currentValuenumberCurrent metric value; defaults to 0.
goal.targetValuenumberTarget metric value; defaults to 100 (1 for boolean metrics).
goal.unitstringMetric unit, e.g. "%", "kg", "$".
goal.progressnumberProgress percent; the server recomputes it from metric values when possible.
goal.progressModeone of manual, linkedHow progress is computed; defaults to "manual". Use "linked" to roll progress up from contributing linked records.
goal.habitCadenceone of daily, weeklyCadence for kind "habit" goals; defaults to "daily". Habit progress is adherence over a trailing window.
goal.confidenceintegerConfidence from 0 to 100; defaults to 70.
goal.ownerPersonIdslist of stringOwner person IDs.
goal.tagslist of stringTags.
goal.linkedRefslist of objectCross-module records linked to this goal. Prefer goals_linkGoalRef / goals_unlinkGoalRef for incremental link changes.
goal.milestoneslist of objectGoal milestones.
goal.favoritebooleanMark the goal as a favorite.
goal.idempotencyKeystringStable dedupe key so a retried create does not duplicate the goal.
Example input
{
  "goal": {
    "title": "Run a half marathon",
    "kind": "target",
    "horizon": "quarterly",
    "targetDate": "2026-12-06",
    "metricType": "number",
    "startValue": 0,
    "targetValue": 21.1,
    "unit": "km"
  }
}
goals_addGoalCheckInUpdatethrough vritto_update

Add a progress check-in to one goal; the goal's currentValue and confidence are updated from it, e.g. { goalId, checkIn: { summary: "Finished onboarding flow.", progressValue: 45, confidence: 75 } }. Preferred way to record progress.

FieldTypeDescription
goalId*stringGoal ID.
checkIn*objectGoal check-in fields.
checkIn.datestringCheck-in date YYYY-MM-DD; defaults to today.
checkIn.summarystringProgress summary: what happened since the last check-in.
checkIn.confidenceintegerConfidence from 0 to 100; defaults to 70.
checkIn.progressValuenumberCurrent metric value after this check-in; becomes the goal's currentValue (defaults to 0, so always pass the real value).
checkIn.nextStepstringNext concrete step.
checkIn.blockerslist of stringBlockers.
expectedRevisionintegerOptional revision guard; the write is rejected if the stored revision differs.
Example input
{
  "goalId": "goal_half",
  "checkIn": {
    "date": "2026-09-26",
    "summary": "Long run felt strong",
    "progressValue": 14,
    "confidence": 75
  }
}
goals_linkGoalRefUpdatethrough vritto_update

Attach or update one cross-module link on a goal (deduped by moduleId + entityId), e.g. link a goal to a project: { goalId, ref: { moduleId: "projects", entityId: "...", relation: "supports" } }. Set contributesToProgress true (with progressMode "linked" on the goal) to let the record drive goal progress.

FieldTypeDescription
goalId*stringGoal ID.
ref*objectThe link to attach or update.
ref.moduleId*stringModule ID of the linked record.
ref.entityId*stringLinked record ID.
ref.labelstringHuman-readable label.
ref.routestringIn-app route.
ref.relationone of supports, tracks, blocks, referenceHow the record relates to the goal; defaults to "supports".
ref.weightnumberRelative weight in linked-progress roll-up; defaults to 1.
ref.progressnumberThis link's own progress percent; defaults to 0.
ref.contributesToProgressbooleanWhether this link feeds the goal's progress in linked mode; defaults to false.
expectedRevisionintegerOptional revision guard; the write is rejected if the stored revision differs.
goals_patchGoalUpdatethrough vritto_update

Update selected fields of one goal, e.g. { goalId, patch: { currentValue: 55, confidence: 80 } }. Only include the fields being changed; progress is recomputed server-side.

FieldTypeDescription
goalId*stringGoal ID.
patch*objectGoal fields to change; omitted fields are kept.
patch.titlestringGoal title.
patch.whystringReason this goal matters.
patch.statusone of planned, active, paused, achieved, missed, cancelledGoal status; defaults to "active".
patch.priorityone of low, normal, high, urgentPriority; defaults to "normal".
patch.kindone of objective, key_result, habit, targetGoal kind; defaults to "objective".
patch.horizonone of weekly, monthly, quarterly, yearly, customTime horizon; defaults to "quarterly".
patch.areastringArea or domain.
patch.startDatestringStart date YYYY-MM-DD.
patch.targetDatestringTarget date YYYY-MM-DD.
patch.metricTypeone of percent, number, currency, booleanHow progress is measured; defaults to "percent".
patch.startValuenumberStarting metric value; defaults to 0.
patch.currentValuenumberCurrent metric value; defaults to 0.
patch.targetValuenumberTarget metric value; defaults to 100 (1 for boolean metrics).
patch.unitstringMetric unit, e.g. "%", "kg", "$".
patch.progressnumberProgress percent; the server recomputes it from metric values when possible.
patch.progressModeone of manual, linkedHow progress is computed; defaults to "manual". Use "linked" to roll progress up from contributing linked records.
patch.habitCadenceone of daily, weeklyCadence for kind "habit" goals; defaults to "daily". Habit progress is adherence over a trailing window.
patch.confidenceintegerConfidence from 0 to 100; defaults to 70.
patch.ownerPersonIdslist of stringOwner person IDs.
patch.tagslist of stringTags.
patch.linkedRefslist of objectCross-module records linked to this goal. Prefer goals_linkGoalRef / goals_unlinkGoalRef for incremental link changes.
patch.milestoneslist of objectGoal milestones.
patch.favoritebooleanMark the goal as a favorite.
patch.idempotencyKeystringStable dedupe key so a retried create does not duplicate the goal.
expectedRevisionintegerOptional revision guard; the write is rejected if the stored revision differs.
Example input
{
  "goalId": "goal_half",
  "patch": {
    "currentValue": 12,
    "confidence": 70
  }
}
goals_setGoalStatusUpdatethrough vritto_update

Set one goal's status, e.g. mark it "achieved", "paused", or back to "active". Use deleteGoal instead when the user wants the goal removed.

FieldTypeDescription
goalId*stringGoal ID.
status*one of planned, active, paused, achieved, missed, cancelledNew goal status.
expectedRevisionintegerOptional revision guard; the write is rejected if the stored revision differs.
Example input
{
  "goalId": "goal_half",
  "status": "achieved"
}
goals_toggleGoalHabitDayUpdatethrough vritto_update

Toggle a habit goal's completion for one day (defaults to today); calling again for the same date undoes it. Use for "I did my habit today" / "mark my run done for yesterday". Habit adherence and progress are recomputed automatically.

FieldTypeDescription
goalId*stringGoal ID.
datestringHabit completion date YYYY-MM-DD; defaults to today.
expectedRevisionintegerOptional revision guard; the write is rejected if the stored revision differs.
goals_unlinkGoalRefUpdatethrough vritto_update

Remove one cross-module link from a goal, identified by moduleId + entityId.

FieldTypeDescription
goalId*stringGoal ID.
moduleId*stringModule ID of the link to remove.
entityId*stringEntity ID of the link to remove.
expectedRevisionintegerOptional revision guard; the write is rejected if the stored revision differs.
goals_deleteGoalDeletethrough vritto_delete

Delete one goal by ID (marks it cancelled). Use only for explicit deletion requests.

FieldTypeDescription
goalId*stringGoal ID.
expectedRevisionintegerOptional revision guard; the write is rejected if the stored revision differs.

Kept in the Vritto app

  • goals_updateGoal: Replaces a whole record and clears omitted fields; the merge operation is on MCP instead.