Subscriptions
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.
Subscriptionsubscription
A recurring subscription with price, cadence, and renewal.
subscriptions_querySubscriptionDashboardFindthrough vritto_findList all non-archived subscriptions. Use for renewal questions, spend summaries, card-usage lookups, and to resolve subscription IDs before any write. Defaults to a compact summary: status counts, monthlyTotalUsd, and capped lean rows (merchant, price, cadence, nextBillingOn, status).
| Field | Type | Description |
|---|---|---|
| detail | one of summary, full | Response shape: "summary" (default, counts + monthlyTotalUsd + capped lean rows) or "full" (every record incl. notes, payment card, trial, and tag fields). |
subscriptions_upsertSubscriptionCreate or Updatethrough vritto_create or vritto_updateCreate or update one subscription. Omit record.id to create (merchantName required); include a real record.id from subscriptions_querySubscriptionDashboard to update, sent fields merge over the existing record. The server resolves the merchant logo and derives nextBillingOn from lastChargeOn and cadence when omitted. Example: record { merchantName 'Netflix', price 22.99, cadence 'monthly', category 'streaming', nextBillingOn '2026-07-12' }.
| Field | Type | Description |
|---|---|---|
| record* | object | Subscription fields; merchantName is required when creating. |
| record.id | string | Existing subscription ID to update, from a prior subscriptions_querySubscriptionDashboard result. Omit to create a new subscription. |
| record.merchantName | string | Merchant or service name, e.g. 'Netflix'. Required when creating. |
| record.source | one of manual, gmail, outlook, logo_dev, import, bank | Where the record came from. Set by the ingestion pipeline; leave unset. |
| record.websiteDomain | string | Merchant website domain, e.g. 'netflix.com'. Also used to resolve the logo. |
| record.logoUrl | string | Logo image URL. Usually omit, the server resolves a logo automatically. |
| record.category | one of streaming, software, productivity, news, learning, cloud, finance, fitness, shopping, gaming, household, other | Spending category (default 'other'). |
| record.status | one of active, trial, paused, cancelled, watchlist | Lifecycle status (default 'active'). Use 'trial' for trials, 'watchlist' for services under consideration, 'cancelled' to record a cancellation while keeping history. |
| record.cadence | one of weekly, monthly, quarterly, yearly, one_time, unknown | Billing cycle (default 'monthly'). |
| record.currency | string | ISO 4217 currency code, e.g. 'USD' (default USD). |
| record.price | number | Price per billing cycle in the given currency (default 0). |
| record.startedOn | string | Date the subscription started (YYYY-MM-DD). |
| record.trialEndsOn | string | Trial end date (YYYY-MM-DD). |
| record.nextBillingOn | string | Next renewal/billing date (YYYY-MM-DD). If omitted, derived from lastChargeOn and cadence. |
| record.lastChargeOn | string | Most recent charge date (YYYY-MM-DD). |
| record.cancellationDate | string | Planned or actual cancellation date (YYYY-MM-DD). |
| record.cancellationUrl | string | The page where this subscription is actually cancelled, e.g. 'https://www.netflix.com/cancelplan'. Set it when the user gives one or a receipt names one; never guess a URL. |
| record.paymentMethod | one of card, bank, paypal, app_store, google_play, other, unknown | How the subscription is paid (default 'unknown'). |
| record.cardId | string | Finance card id that pays for this, from finance_queryOverview. Never a card number, and never invented. |
| record.cardNetwork | string | Card network for card payments, e.g. 'Visa' or 'Chase'. |
| record.cardLast4 | string | Last four digits of the paying card. Never store full card numbers. |
| record.ownerEmail | string | Email address of the account that owns the subscription. |
| record.planName | string | Plan or tier name, e.g. 'Premium 4K'. |
| record.seats | integer | Number of seats or licenses (default 1). |
| record.renewalReminderDays | integer | Days before renewal to remind (default 7). |
| record.autopay | boolean | Whether it renews automatically (default true). |
| record.notes | string | Notes, e.g. cancellation instructions. |
| record.ownerPersonId | string | People person id when the subscription is really a family member's; omit for the account owner. |
| record.tags | list of string | Tags. |
Example input
{
"record": {
"merchantName": "Spotify",
"category": "streaming",
"status": "active",
"cadence": "monthly",
"price": 11.99,
"currency": "USD",
"nextBillingOn": "2026-10-12"
}
}subscriptions_deleteSubscriptionDeletethrough vritto_deleteDelete (archive and mark cancelled) one subscription. Only for explicit removal requests, to record a cancellation while keeping the record visible, use subscriptions_upsertSubscription with status 'cancelled' instead. Resolve the ID with subscriptions_querySubscriptionDashboard first.
| Field | Type | Description |
|---|---|---|
| subscriptionId* | string | Subscription ID from a prior subscriptions_querySubscriptionDashboard result, never invented. |