“where are we?”
Assist
assist
General reasoning over your data world — answers questions the specific skills don't cover, explains what's happening, and orients you. Uses the read-only tools to ground every answer.
The catalog
Everything below ships today and runs by asking — no modules to license, no implementation project, no training course. Answers come back with the proof attached; anything that would change your data shows you exactly what happens first and waits for your yes.
“where are we?”
assist
General reasoning over your data world — answers questions the specific skills don't cover, explains what's happening, and orients you. Uses the read-only tools to ground every answer.
“Where do I have a wellhead pressure column?”
find_data_by_columns
Locate datasets/tables that CONTAIN given column names when the user doesn't know which dataset holds them — searches cataloged column metadata first, then connected-source schemas. Returns ranked candidates; never reads data content.
“What were total sales by region last quarter?”
query_data
Answer a natural-language question about one or more datasets — aggregations, filters, comparisons, trends, and COUNTS (how many rows / records are in a dataset) — with a verified, show-your-work SQL answer.
“Bring up yesterday's chat”
recall_thread
Bring back a past conversation — 'bring up yesterday's chat', 'open the ILI thread from last week' — by date phrase and/or topic; returns the matching threads to reopen.
“What did we decide about the Houston pipeline last week?”
recall_across_threads
Find what the user and Kaarvi discussed in the user's OTHER conversations — 'what did we decide about the Houston pipeline last week?', 'search my conversations for the null replacement policy' — returning the exact earlier text with the conversation it came from. Use recall_conversation for THIS conversation's own earlier parts.
“In the part above where you gave the cumulative total, break it down by region”
recall_conversation
Pull up the EXACT earlier part of THIS conversation the user is referring to — 'the part where you gave a cumulative metric', 'what number did you say for Q3 earlier' — retrieving the verbatim exchange (including ones condensed out of the working window) so you can quote it and build on it, instead of paraphrasing a summary.
“What columns does this dataset have?”
describe_dataset
Describe a dataset from catalog METADATA — instantly and for free: what columns does it have, their names and data types, how many rows and columns, its size, where it came from (source connection/table), and its general shape/schema. Use for 'what columns does this dataset have', 'what's the schema', 'how many rows', 'describe this dataset', 'what type is the X column'. (For STATISTICS — distributions, null rates, uniqueness, quality scores — that's profile_dataset, which runs a real scan.)
“Where's my data from MyAppDb?”
list_datasets_by_source
List and GROUP the user's DATASETS by their ORIGIN — which source connection / edge device / cloud store / warehouse each dataset came from. Answers \"where's my data from <connection>\", \"what did I import from <connection>\", \"show my edge datasets\", \"list my datasets by source/connection\", \"which datasets came from <connection>\", \"show my datasets grouped by where they came from\". Groups by origin (File Uploads / Databases / Edge Devices / Cloud / Warehouses / NoSQL / API / Pipeline outputs / Kaarvi-generated) using the backend origin taxonomy. (For ONE dataset's columns/schema use describe_dataset; for the connections themselves — health, reconnect — use manage_connections.)
“Correct the understanding of this dataset: the grain is one row per deliverable”
correct_understanding
Correct what I understand a dataset to BE — its grain ('one row per deliverable'), its genre ('this is a status report, not a plain table'), or the narration of that reading. A governed edit: it writes a new dossier version plus an audit receipt, and I reason from the corrected understanding immediately. Use for 'correct the understanding of X', 'the grain is actually one row per Y', 'that dataset isn't a ledger, it's a register'. (Fixing the DATA itself is the data-quality lane, not this.)
“Actually, undo that”
undo_fix
Undo an applied data fix on the working copy — 'undo that last fix', 'roll back the median imputation on pressure'. Restores the fix's pre-state from its undo snapshot; every OTHER applied fix is preserved. The original dataset is untouched (fixes live on a working copy until promoted).
“Throw the cleanup away”
discard_cleanup
Throw away the staged cleanup on a dataset — 'discard the cleanup', 'throw those changes away'. Drops the working copy and ALL its applied fixes permanently (stated before you confirm). The original dataset is untouched.
“Promote it — replace the original”
promote_dataset
Promote the cleaned working copy — REPLACE the original dataset with the fixed data ('promote it', 'make the cleaned version the real one'). The original is preserved in a backup and can be put back ('put the original back'). Export-as-new is a different act (save_results).
“Put the original back”
restore_original
Put the original back — restore a PROMOTED dataset from the backup taken at promote time ('put the original back', 'restore the pre-cleanup data'). The restored row count is reconciled exactly against the backup before finalizing. This is a terminal act: the current (promoted) data is retained as a named, inspectable snapshot for the audit trail — there is no one-command reinstate.
“Show me everything I've changed so far”
show_changes
Show everything changed so far on a dataset's staged cleanup — the original-vs-now diff ('show me everything I've changed', 'what did the cleanup do?'). Read-only; paginated at the SQL level so it stays bounded on any size.
“Show me the result”
preview_data
Show the data itself, paginated — 'show me the rows', 'let me see the result', 'give me the complete list', 'a full list I can scroll', 'preview page 2'. Working-copy-aware: after a cleanup it shows the FIXED data, and mode='compare' shows original vs cleaned side-by-side with the changed rows marked. Read-only; SQL-paginated so it stays bounded on any size.
“Profile the customers dataset”
profile_dataset
Profile a dataset's quality: column stats, null/distinct counts, type inference, and quality score. Use to summarize or assess the health of a table.
“Fix the missing emails in customers”
fix_data
Detect and fix data quality issues (missing values, duplicates, outliers, type mismatches) on a working copy. Always previews before applying.
“Are there any anomalies in the sensor readings?”
detect_anomalies
Find statistical outliers in a dataset — z-score, IQR, and MAD (modified z-score), all computed full-scale in the database (all rows) and consensus-ranked: columns flagged by more methods rank first. isolation_forest joins on request (bounded ML, honestly labeled).
“What's the primary key of this table?”
suggest_keys
DISCOVERY, not validation: detect candidate primary keys — single-column AND composite (column combinations) — plus foreign-key relationships in a dataset, with measured uniqueness. Screens on a bounded sample, verifies survivors exactly. (Asserting that a STATED column is unique is validate_data's job.)
“Validate that order_id is unique”
validate_data
ASSERT a stated expectation holds — a pass/fail verdict on the user's own rule: 'validate that order_id is unique', PK integrity, range, freshness, pattern, cross-field, type — and optionally write the results back. (Discovering which columns COULD be keys is suggest_keys; this skill checks the rule the user states.)
“Re-profile customer_events now”
reprofile_dataset
Refresh a dataset's catalog truth: recompute its metadata and quality statistics (row/column counts, score, factors) when they've gone stale. A governed act — never re-ingests data.
“Undo that re-profile”
restore_reprofile
Undo a re-profile: put a dataset's catalog numbers (row/column counts, quality score, last-profiled) back to what they were before the last refresh. The governed reverse of reprofile_dataset — restores from the act's receipt, never re-ingests.
“Is the data quality of table 42 improving?”
quality_trends
Answer 'is my data quality improving?' — the quality-score history of a table over its recent reports (overall/completeness/accuracy/consistency), with the direction of travel. Read-only and free.
“Clean this dataset”
clean_dataset
One conversational cleaning session — 'clean this dataset': detect the quality issues, show the ranked fix plan, and on your confirm apply the SAFE fixes (imputation, trims, exact-duplicate removal) on a reversible working copy. Risky fixes are listed for individual confirmation via fix_data, never auto-applied.
“What can you do about drift on this table?”
fix_strategies
Enumerate what Kaarvi can fix and how — the engine's own fix vocabulary: every issue family, its EXACT strategy names, SAFE/RISKY class, parameter shapes, best-fit hints, and scale notes. Use it before recommending or applying a fix ('what can you do about drift?', 'how can you merge near-duplicate names?'). The full menu also enumerates the pipeline transform vocabulary (declarative ops, node types, trigger kinds, publish/reverse verbs), the governed PII masking actions ('what ways can you mask a phone number?'), and the anomaly-repair families. Read-only registry metadata — free, no data touched.
“Stop watching this dataset”
set_dataset_watch
Turn Kaarvi's standing quality watch on a dataset off or back on — 'stop watching this dataset' / 'stop the standing re-profile on staging_events' ends its periodic re-sense and its quality-trajectory forecast notices; 'watch it again' resumes them. Persistent (survives restarts) and reversible by saying so. Event-driven snapshots from your own actions are unaffected.
“Revoke the key called ci-deploy”
manage_api_keys
Revoke one of your personal API keys by name ('revoke the CI key') — permanent by design: the platform mints a new key instead of reviving an old one. Creating a key stays in Settings: the secret is shown exactly once there, and a conversation is a persisted record it must never enter. (To just SEE your keys, list_api_keys is the free read.)
“What API keys do I have?”
list_api_keys
Show your personal API keys — names, prefixes, expiry, last use, usage counts; never the secret itself. 'What API keys do I have?', 'show my API keys'. Read-only and free — an observation never sits behind a confirm card (honest-action law). (To revoke one, manage_api_keys is the act; to mint one, Settings → API Keys.)
“Automate this”
manage_autonomy
Move a capability up or down the autonomy ladder — the six rungs (watch, notice, propose, do with approval, do under lease, standing) that govern what Kaarvi may do on its own. 'Automate this', 'do this on your own from now on', 'stop automating fix data', 'retire fix data'. Promotion to an autonomous rung composes a bounded lease first; every move is confirmed, recorded, and reversible. Org defaults are admin-only. (To just SEE the ladder, show_autonomy_map is the read.)
“Show the autonomy map”
show_autonomy_map
Show the autonomy map — where every capability sits on the six-rung ladder (watch, notice, propose, do with approval, do under lease, standing), which leases back the autonomous rungs, and what Kaarvi may do without asking. 'Show the autonomy map', 'what can you do without asking', 'what can you do on your own'. Everyone sees their own map; admins can ask org-wide. Read-only and free. (To MOVE a rung — 'automate this', 'stop automating X' — manage_autonomy is the confirmed act.)
“Mask the salary column on Payroll for analysts”
manage_column_policies
Set or remove column-masking policies by talking — the column-level RBAC rules the gateway's deny map enforces. Dataset-scoped ('mask salary on Payroll for analysts') or identity-class-scoped ('mask every SSN-classified column org-wide'). Removing a rule is the built-in undo, and every change is audited and takes effect immediately. Org-admin only. Any masking request scoped to WHO may see a column ('for analysts', 'for viewers', a role or audience) is THIS standing rule — not a data operation. (To just SEE the rules, show_column_policies is the free read; to transform the VALUES in a working copy instead, apply_masking is the data operation.)
“What column policies do we have?”
show_column_policies
List this organization's column-masking policies — which columns are masked, on which dataset or identity class, for which roles, in which style. 'What column policies do we have?', 'which columns are masked?'. Read-only and free; org-admin only (the rules themselves are governance state). (To set or remove a rule, manage_column_policies is the act.)
“Did the ST2 wave pass its gate?”
devloop_status
Build-truth from the platform's own gate receipts — for free: whether a wave's most recent gate run was green or red and when, per epic or overall. Use for 'did the ST2 wave pass its gate', 'is everything you've built actually running', 'which waves are red', 'build status'.
“Send my reports as reports@acme.com”
manage_email_senders
Change or clear the From identity Kaarvi's emails use — yours, your organization's (admin), or the platform default (superadmin). 'Send my reports as reports@acme.com', 'clear the org sender'. Changing the identity re-verifies the sender before the next send, and the reply says so. First-time provider/credential setup lives in Settings — secrets never enter a conversation. (To just SEE the sender picture, show_email_senders is the free read.)
“Who do our emails send as?”
show_email_senders
Show the From identity Kaarvi's emails use at a scope — yours, your organization's (admin), or the platform default (superadmin) — with its verification state; secrets appear only as presence flags, never values. 'Who do our emails send as?', 'what sender do my reports use?'. Read-only and free. (To change or clear it, manage_email_senders is the act.)
“For everyone here: fiscal year starts in February”
manage_glossary
The org's shared glossary — business terms defined once, known to every thread and every member of the org. Define or correct a term ('for everyone here: fiscal year starts in February'), look one up ('what does margin mean here?'), list terms (optionally those changed recently), revert a term to an earlier version, or retire one. Writes are governed: preview → confirm, versioned, receipted; an admin's definition can only be changed by an admin.
“Does this table contain PII?”
detect_pii
Scan a dataset for personally identifiable information (emails, names, SSNs, phone numbers, addresses) and flag affected columns.
“Classify the sensitivity of these columns”
classify_data
READ-ONLY analysis: classify a dataset's columns by sensitivity / data category using AI (public, internal, confidential, restricted) and REPORT the result in the conversation — records nothing, tags nothing, changes no masking. The write half that records tags is apply_classification.
“What's the governance status of my data?”
governance_status
Summarize governance posture: classification coverage, compliance, ownership, and drift — answerable for a dataset or the whole org.
“Is this data GDPR compliant?”
check_compliance
Scan a dataset against compliance frameworks (GDPR, HIPAA, SOC2, PCI, …) and report violations.
“Apply the PII-masking policy to these tables”
apply_policy
Evaluate or enforce a governance policy against datasets, detecting conflicts and blocking violations per the enforcement mode.
“That's not PII, the email_hash column is public”
calibrate_classification
Correct a column's data classification in conversation ('that's not PII', 'this should be Confidential') — records the correction as governed feedback that recalibrates future automatic classification. The learning loop: your corrections make Kaarvi's classification better over time.
“Classify and tag the customers dataset”
apply_classification
The WRITE half of classification: run automatic sensitivity/PII/PHI classification on a dataset and RECORD the results — tags columns in the governance register and the catalog, which drives column masking for non-privileged users. Preview shows what will be tagged before anything is written. (classify_data is the read-only report half that records nothing.)
“Create a retention policy for customer PII that blocks exports”
manage_policy
Author and steer a governance POLICY's whole life from chat — 'create a retention policy for customer PII', 'update the sharing policy: block instead of warn', 'publish it', 'roll the access policy back to version 2', 'archive the old handling policy'. Content changes are VERSIONED; rollback is always available. (apply_policy evaluates and enforces; this one writes the law itself.)
“Make sam@acme.com the owner of the customers table”
assign_ownership
Assign or transfer a catalog asset's OWNER or STEWARD from chat — 'make sam@acme.com the owner of the customers table', 'transfer stewardship of orders to Alex'. The previous holder is named in the reply, so handing it back is one sentence.
“Apply the PII Retention policy to the customers table”
assign_policy
Apply or stop applying a governance POLICY to catalog assets by NAME — 'apply the PII Retention policy to the customers table', 'assign the sharing policy to the email column of customers', 'stop applying it to orders'. This is what makes a published policy actually bite: apply_policy evaluates/enforces ONLY over these assignments, and manage_policy writes the law itself.
“Always confirm any changes to fix data with me”
manage_governance
Set a standing ORG governance rule on Kaarvi's autonomy — a boundary that sits ABOVE any lease. 'Always confirm any changes to fix data with me', 'never auto-run cleanups without asking', 'list our standing rules', 'lift that rule'. The rule forces Kaarvi to check with a human before the covered kind of change, even under a standing authorization. Setting or lifting a rule is org-admin only, recorded, and reversible.
“invite jane@acme.com as an admin”
invite_user
Invite a person by email to join YOUR organization with a role ('invite jane@acme.com as an admin', 'send an invite to bob@acme.com'). Org-admin only. The invite is always scoped to your own org and expires after a set window. Preview shows the email, role, org and expiry before you confirm — nothing is sent until you do.
“make bob@acme.com an admin”
assign_role
Assign a role to a user in YOUR organization ('make bob@acme.com an admin', 'give jane the user role'). Org-admin only. The user is resolved by email WITHIN your org, and the same privilege ceiling as the console applies — a non-superadmin cannot grant a superadmin/globally-privileged role. Preview shows the user's current roles and the target role before you confirm.
“cap our monthly spend at $5,000”
set_spending_cap
Set or update your organization's monthly spending cap in dollars ('cap our spend at $5,000 a month', 'set a spending limit'). Billing-admin only. Preview shows the current cap, the new cap and current month usage before you confirm.
“grant the oil_gas pack to Acme Corp”
grant_pack
Grant an entitlement pack (domain/marketplace pack) to an organization ('grant the oil_gas pack to Acme', 'give Acme Corp the legal pack'). SUPERADMIN only. Preview shows the org, the pack and the org's current packs before you confirm.
“enable SSO for my organization”
configure_sso
Configure your organization's single sign-on — enable, disable, or update the identity provider settings ('enable SSO', 'update our SSO settings', 'turn off SSO'). Org-admin only, and available on Team and higher plans. Preview shows the exact config diff with secret values (certificates, private key) masked as *** before you confirm.
“Show me every loop the platform ran last week”
show_loops
Show the autonomous loops the platform ran — every act with its full trust trail (who authorized it, its bounds, verification, reversibility, what it learned). 'Show me every loop the platform ran last week', 'what did you do on your own this week?'. Everyone sees their own loops; admins can ask org-wide. Read-only and free.
“What has our deployment ever sent the network?”
show_membrane_provenance
Show the membrane's two-directional provenance — the trust surface for shared patterns. Outbound: everything your deployment ever contributed to the network (only the SHAPE of a pattern ever travels, never a row of your data), answerable in one turn. Inbound: everything your deployment inherited FROM the network, each with the scrub proof that no other customer's data came with it — 'this came from the network, your data never left, here is the proof'. 'What have we sent the hive?', 'what did we take from the network and is it clean?', 'show our pattern provenance'. Read-only and free.
“Share the churn pattern with the network”
manage_membrane
Contribute a pattern to the membrane network — only the SHAPE travels, never a row of your data, and the scrub proof rides along — or withdraw your organization's authorization, which marks everything contributed under it withdrawn. 'Share the churn pattern with the network', 'withdraw our patterns from the membrane'. show_membrane_provenance is the read-back. Org-admin only; the publish door fails shut when closed.
“Show the operator access trail for ops@kaarvi.ai”
operator_trail
Read the operator break-glass trail for ONE named Kaarvi operator (the data subject) — every covered act they performed into customer organisations, with the organisation, what was reached for, when, on which surface, and the stated reason. The subject-access (DSAR) read for the trail. Platform-operator only (a superadmin of the operator organisation), read-only, free; rows carry names, never ids.
“mask the PII in this dataset”
apply_masking
MASK the sensitive values in a dataset — actually execute it, not just report what is sensitive. Creates a masked working copy you can preview, export (CSV/Excel/JSON/Parquet), save to the catalog, or push to a database. Answers 'mask the PII', 'redact the card numbers', 'apply masking to cvv'. This is a one-off DATA operation on a copy — NOT access control: a masking request scoped to WHO may see a column ('mask salary for analysts', 'mask email for viewers') is a standing rule and belongs to manage_column_policies.
“prove your unproven skills”
prove_skills
Run a governed proving pass over the skills that lack current proof (unproven, decaying, or broken) — real turns against drill fixtures in a throwaway drill org, under a hard spend cap you set; or mark a zero-fire skill retirement-pending (removal itself is always a reviewed change).
“am I in the right workspace?”
my_workspace
Answer where the user's work lives and who shares it — 'am I in the right workspace?', 'who else from my company is here?', 'is there a workspace for my company?'. Read-only: reports the current workspace by NAME, any pending invitation to join a workspace that has verified the user's email domain, and the colleagues already in the current workspace. Changes nothing.
“join my company's workspace”
workspace_join
Join the workspace your company already has, decline it and keep your own, or leave one you joined ('join my company's workspace', 'start my own workspace instead', 'leave this workspace'). Only offered when that workspace has DNS-VERIFIED your email domain. Free — joining your own company never costs anything. The preview names the workspace, who would see what, and whether an administrator must approve, before anything happens. ALSO the ADMINISTRATOR side of that decision: show who is waiting or has asked to join this workspace ('who is waiting to join?', 'show pending join requests', 'any join requests?'), approve a named person into it ('approve Sruthi', 'let sruthi@acme.com in', 'admit them'), or turn their request down ('reject that request', 'turn down Sruthi', 'deny it'). Use this skill for ANY question about pending workspace join requests or workspace membership approvals.
“push dataset 4 to the customers table in my warehouse connection 2”
deliver
Deliver a dataset OUT to an external database/warehouse through a write-capable connector — 'push this to my Postgres', 'write dataset 4 to the sales table in my warehouse', 'export these results to Snowflake', 'push the cleaned working copy to the analytics DB'. Governed: your role's column masks apply to what's written, and only write-capable connectors are allowed. Also the reverse: 'undo that delivery' / 'swap the table back' restores a replace-mode delivery's kept previous generation (action='undo_delivery').
“Pull the orders table from my Postgres connection”
ingest_data
PULL or IMPORT one or more tables — or a whole schema — from a saved database, cloud object storage, or API connection into the catalog; or INGEST an uploaded file. This is the skill for pulling/importing/ingesting/loading source tables, schemas, or FILES/OBJECTS from a connection into the catalog — including files from cloud object storage (Amazon S3, Google Cloud Storage / GCS, Azure Blob): 'pull files from my S3 bucket', 'load the customers.parquet from my GCS connection', 'ingest orders.csv from cloud storage'. Streams to columnar storage, cataloged and versioned. (Not for searching or querying data already in the catalog — this brings NEW source data in.)
“List my connections”
manage_connections
List, test, inspect, and EDIT your data source connections and edge connectors, CONNECT a new data source, and RECONNECT one that has gone offline. Reports overall connection/connector health and status — whether a connector is offline, down, or degraded — plus available databases, schemas, tables, and previews. Say things like 'how are my connections', 'is my connector down', 'check connector health', 'the agent looks offline', or 'reconnect MyAppDb' to bring an offline edge connector back online (returns the install command).
“Find datasets about revenue”
search_catalog
Search the data catalog for datasets and tables by name, description, tags, or AI metadata. For column-name lookups use find_data_by_columns.
“Connect my Postgres at db.acme.com:5432, database sales, user readonly”
create_connection
CONNECT a brand-new data source from chat — a database, warehouse, or API/SaaS source: 'connect my Postgres at db.acme.com:5432, database sales, user readonly', 'hook up my database', 'add a data source', 'wire up my warehouse', 'connect to my Stripe API'. This is the skill for ESTABLISHING a new connection (not pulling data from one — that's ingest_data, and inspecting/testing an EXISTING connection is manage_connections). Works out the lowest-friction way to reach the source first — direct connect, cloud credentials, a file upload, or a one-click edge connector for an on-prem / behind-the-firewall database — then creates the connection, tests it live, and reports the result. Credentials are encrypted at rest and never repeated back.
“Export this dataset as CSV”
export_data
Export a dataset (or a transformation's output — outputs are datasets) as CSV, Excel, JSON, or open Parquet — streamed at any size, at any point in the conversation. Also exports a STAGED working copy (the masked or cleaned copy just produced, before it's saved) when the user says 'the masked copy' or a working_copy_id is known — that ships the changed bytes, never the original. Governed: your role's column masks apply to the file too.
“Keep the refinery feed live and refresh my Production dashboard”
manage_live_sync
Keep a dataset live conversationally — when its sync applies changes, Kaarvi cascades to dependent pipelines and dashboards. Choose the cadence: a CUSTOM SCHEDULE (hourly, daily, every 15 minutes, or a cron) or REALTIME change capture where the source supports it. Manage the lifecycle: create, pause, resume, suspend, restart, run now, or delete.
“Which of my datasets are kept live?”
list_live_syncs
LIST the live syncs you have running — which datasets are kept live, their status, and what cascades from them. Pure READ, instant and free: 'which of my datasets are kept live?', 'what live syncs do I have?', 'is anything syncing live right now?'. (To create/pause/resume/delete a live sync, that's manage_live_sync.)
“Join orders with customers and aggregate by month”
transform_pipeline
Build or run a data transformation pipeline — clean, join, reshape, derive columns, aggregate — over the visual flow canvas / code nodes. Also REFINES an existing draft pipeline in conversation ('change step 3 to a left join', 'fill the empty rows with the average instead') and undoes the last refinement (versioned restore).
“Run this pandas snippet on my data”
run_code
Execute custom Python against a dataset in a sandbox and return the result.
“Is there a template for deduplication?”
suggest_template
Suggest relevant prebuilt pipeline templates / recipes for the user's intent.
“publish pipeline 42 as a template for my team”
publish_template
Publish one of your pipelines as a reusable TEMPLATE your whole organization can find and use — the way to turn work you've already done into shared supply. Unpublish retracts it (the pipeline itself stays yours).
“Re-run my cleaning pipeline whenever new orders land”
automate_on_change
Automatically run a pipeline / refresh a dashboard or API whenever a source dataset changes (reactive, debounced) — or disable a standing automation ('stop auto-running that pipeline').
“Email me total sales every Monday at 8am”
schedule_task
Schedule a recurring question, pipeline run, or report delivery on a cron/interval — OR a ONE-OFF: 'remind me Friday morning to check the ingest numbers', 'run this once tomorrow at 9' (task_kind='reminder' for remind-me asks; carry the time phrase in run_at) — and manage your standing orders conversationally: list, pause, resume, run now, or delete them. Also composes a NAMED standing SEQUENCE (task_kind='sequence'): 'run the cleanup, then the enrichment, then refresh my dashboard, every morning' — ordered steps, a stated failure policy, paused/resumed by name ('stop the morning sequence').
“Why did last night's run of pipeline 12 fail?”
run_history
Answer questions about a pipeline's run history — 'why did last night's run fail?', 'show recent runs for pipeline 12'. Status, duration, rows, trigger and the failure message when there is one. Read-only and free.
“Clean this report up so I can use it”
reshape_dataset
Reshape a pathologically-ingested / report-shaped dataset into clean usable tables as a GOVERNED act: the comprehension layer plans the extraction from the dataset's semantic dossier, deterministic code executes it through the existing catalog engine, and the outputs land as NEW datasets with lineage back to the source — which is never modified. Report-stated rollups/totals are preserved as authoritative figures. 'undo' deletes the derived datasets and closes the lineage.
“Use the Address Cleanup template on the customers dataset”
use_template
Create a ready-to-run pipeline from a prebuilt TEMPLATE — 'use the Address Cleanup template on customers', 'set up the dedup recipe as My Dedup'. Fills the template's parameters conversationally; the new pipeline lands in your library as a draft you can run or refine. (suggest_template finds templates; this one puts one to work.)
“Run the cleanup, dedup and export pipelines in order”
run_pipelines
Run pipelines TOGETHER as one act: several in order ('run cleanup, then dedup, then export' — each step hands its output to the next), everything downstream of one pipeline's output ('refresh everything downstream of Dedup' — tier by tier over the dependency graph), or ONE pipeline across many tables ('apply Cleanup to the five region tables' — a few at a time). Also stops a downstream refresh mid-flight. (transform_pipeline runs a single pipeline once; automate_on_change makes runs reactive.)
“what APIs have I published”
list_published_apis
List the OUTBOUND published APIs — pipelines this org has published as live, token-authenticated REST APIs (the Living API estate): each API's name, live/paused state, request and error counts, and its limits. 'what APIs have I published', 'list my published APIs', 'which of my APIs are live', 'is anything still calling my APIs'. This is the published PRODUCT — data flowing OUT to external consumers. It is NOT for inbound API sources or connections (use ingest_data to pull FROM an external API) and NOT for live syncs (list is in manage_live_sync). Read-only and free — names only, never an internal id or token.
“add a webhook https://hooks.example.com/kaarvi to the Sales API and test it”
api_webhooks
Manage webhooks on a PUBLISHED API (Living API): add a webhook so an external system is notified whenever the API's data refreshes, test one with a real delivery, toggle one on/off, or remove one. 'add a webhook to the Sales API and test it', 'turn off the reporting webhook', 'remove the reporting webhook from the Sales API'. Names and masked URLs only — never an internal id, never the secret. (To just SEE the webhooks on an API, list_api_webhooks is the read.)
“list the webhooks on the wells API”
list_api_webhooks
List the webhooks registered on a PUBLISHED API (Living API) — the masked target URL and active state of each, so you can see what's notified when the API's data refreshes. 'list the webhooks on the wells API', 'show the webhooks on the Sales API', 'what webhooks does the reporting API have'. Read-only and free — names and masked URLs only, never an internal id, never the secret. (To ADD, test, toggle, or remove a webhook, api_webhooks is the act.)
“Compose a chart of which anomalies fail B31G”
compose_chart
Compose a domain chart you don't have yet from what you want to see — 'compose a chart of which anomalies fail B31G', or a plain question like 'will my pipeline pass inspection?'. I verify the math against its standard and prove it renders faithfully before offering it; you sign before it's added. 'Retire the <name> chart' disables it (never deletes); 'don't compose that' declines for 30 days.
“Build a sales dashboard”
build_dashboard
Create a dashboard from a dataset or pipeline — auto-selecting domain-appropriate charts and KPIs, optionally from a natural-language brief.
“Save this dashboard's layout as a template called Board Pack”
save_dashboard_template
Save a dashboard's LAYOUT as a reusable named template ('save this dashboard's layout as a template called Board Pack') — the arrangement only (tile positions and sizes, plus the theme it wears), never the data. Also saves an UPLOADED JSON spec's layout directly (dashboard_spec_id), renames a template, deletes one, or manages the LOOK a template travels with (attach_look: 'dress the Board Pack template in the Forest theme'; shed_look reverses it). Build on one later with 'build X using the Board Pack template' (build_dashboard's template_name).
“Write a Q3 performance report”
publish_report
Generate and publish a governed narrative report — every figure slot-filled from a verified query (number-quarantine), with per-claim provenance and per-viewer redaction.
“Publish this pipeline as an API”
publish_api
Publish a pipeline's output as a live, tokenized REST API (Living API) with caching and analytics — or unpublish it (the token stops working immediately). You can also PAUSE a published API ('pause the API \"Rates\"') — serving stops but the token is KEPT, so 'resume the API' restores existing consumers untouched. And you can also CHANGE a published API's limits conversationally: 'set the Sales API rate limit to 500 per minute' or 'let the wells API return up to 20000 rows per request'.
“Tell me the story of dashboard 12”
tell_data_story
Narrate an EXISTING DASHBOARD as a step-by-step data story — 'tell me the story of this dashboard', 'walk me through what my sales dashboard is saying'. AI-generated insights, one step per dashboard widget. Requires a built dashboard; this does NOT narrate a raw dataset — to summarize a dataset, ask a question about it or publish a report.
“Restore dashboard 12 to version 3”
restore_dashboard_version
Roll a dashboard back to a prior version — 'restore my sales dashboard to yesterday's version'. Roll-forward semantics: the restore becomes a NEW version, so it is itself restorable. Parity with restore_dataset_version.
“List my dashboards”
manage_dashboard
List your dashboards, RENAME one, SEND one for review and record the reviewer\'s decision (request_review / approve / request_changes, and withdraw_approval to take a decision back off the record — a dashboard the platform built from a reference is a DRAFT proposal, and approving is what publishes it, signed against the exact version the reviewer saw), share/publish one (get a shareable link), unpublish it, or delete it. Renaming is how a person corrects a name the platform proposed for a dashboard it built (\'call it Q3 Pipeline Health instead\') — reversible by saying the old name back, so it needs no confirmation. Publishing makes a dashboard reachable by a link; unpublishing takes it private again; deleting removes it permanently (the reverse of building one). Describe sets what the dashboard SAYS to viewers: the sub-line under its title (description), a hero heading that shows instead of the name (header_text), the footer line — 'sub-line: refreshed nightly', 'title the page Q3 Pipeline Health' — and whether it wears the workspace logo uploaded in Settings ('take our logo off this dashboard', 'put our logo back on it'). edit_widget_text rewords ONE widget on it — title, sub-line, axis label, or its description — addressed by the widget's title or position ('title the third widget Defect depth by mile', 'describe the churn widget as …'); a version snapshot makes it undoable. move_widget repositions or resizes ONE widget ('move the churn chart next to the revenue trend', 'put the KPI row first', 'make it full width') — on your own dashboards AND on a colleague's dashboard shared with you for edit (moving things around is exactly what that grant covers); a version snapshot makes it undoable. Also checks dashboards for off-brand color settings (scan_palette_drift — 'are any of my dashboards off-brand?') and brings one on-brand (migrate_palette) with an automatic pre-migration version snapshot, undoable via restore_dashboard_version.
“List my reports”
manage_report
List your governed reports, publish one (make it live for its permitted viewers), or unpublish it (take it offline). Publishing is blocked while any figure is unverified.
“Email me the Q3 performance report as a PDF every Monday”
schedule_report
Email a published report to org teammates on a recurring schedule (daily/weekly/ monthly), as a PDF, HTML, or Excel workbook — each recipient sees it under their OWN data permissions. List, pause, resume, or cancel your report schedules too.
“How is my Q3 Revenue dashboard doing?”
viewer_analytics
How a published or shared DASHBOARD is being received — views, unique sessions, time spent, bounce rate, devices, and which sites viewers came from — 'how is my Q3 dashboard doing?', 'is anyone looking at the sales dashboard?', 'how are my dashboards doing overall?'. With no dashboard named, summarizes the caller's whole estate (all-time totals). Dashboards only — report viewer analytics don't exist yet and this skill will say so.
“Extract a theme from this screenshot”
extract_theme
Derive a dashboard theme (colors + look/feel) from a reference the user shares: an attached image or HTML file, a public URL, or a dashboard they ALREADY have ('make me one that looks like the Ops dashboard' — from_dashboard, no upload needed). Also refines a previously derived candidate ('darker ground'). A file just uploaded as a theme reference is found automatically — it needs no name or re-attachment, so a reference the user just shared is never treated as missing. The result is a CANDIDATE the user can use once, save by name, or (admin) publish org-wide.
“What themes do I have?”
list_themes
Show the dashboard theme library — the built-in Kaarvi theme, the organization's themes, and the user's personal ones, with the current default marked.
“Save this theme as Sunset”
manage_theme
Manage the dashboard theme library: save a derived candidate under a name, set a personal or organization default, EDIT a saved theme's colors by describing the change ('make the accent a deeper coral', 'darken the page background'), REVERT a theme to how it was before the last change ('put the Brand theme back how it was'), delete a theme (re-binding its dashboards first), publish a theme org-wide, or switch the organization's theme mandate on/off (admin).
“Change this dashboard's theme to Sunset”
apply_dashboard_theme
Apply a theme to an existing dashboard: a named library theme (live-bound — follows the theme if it changes), a just-derived candidate, a one-time pinned copy, or back to 'default'.
“Use this image as our workspace logo”
set_workspace_logo
Set or remove the ORGANIZATION's workspace logo from the conversation — 'use this image as our workspace logo' (with the image attached), 'remove our workspace logo'. Admin-only; the mark shows on every dashboard's builder hero, public view and HTML export unless a dashboard overrides or opts out. The manual home is Settings → Organization.
“Where does the revenue column come from?”
trace_lineage
Trace where a dataset or column came from — upstream sources and the transformations that produced it. Passive, always available.
“What breaks if I drop the status column?”
impact_analysis
Show what breaks downstream if a dataset or column changes — dependent pipelines, dashboards, and APIs. Passive, always available.
“Auto-discover lineage across my warehouse”
review_lineage
Run the AI lineage orchestrator (discovery / impact / quality / governance agents) to auto-detect flows and findings. Charged; runs only when explicitly enabled.
“What breaks if I drop the customer_id column from table 42?”
column_impact
Column-level blast radius — 'what breaks if I drop/rename column X?' Traverses column lineage downstream (dependents) or upstream (origins) and returns the affected tables/columns with a risk level.
“Is my nightly Sales Enrichment worth what it costs?”
value_receipt
A standing pipeline's monthly value receipt — runs, metered cost (from the metering ledger), rows delivered, failures reversed — with the audit view for governance and the value view for outcomes. 'Is that nightly job worth what it costs?' Read-only and free.
“Where's my churn signal?”
find_column
Semantic catalog search: find columns/datasets by MEANING when the user describes a concept rather than an exact name — 'where's my churn signal' finds attrition_flag. Searches the org's column-embedding index (pgvector), falls back to lexical column search when the index has no answer. Read-only, metadata only — never reads data content.
“How does this dataset relate to my other data?”
suggest_lineage
ML lineage discovery for a dataset: proposes how its columns relate to other datasets in YOUR org (embedding + name + type similarity), each suggestion carrying its evidence scores. Deterministic engine with provenance — not an LLM guess. Read-only on your data.
“Forecast next quarter's revenue”
forecast
Forecast a time series (with confidence bands) for a numeric column over a horizon.
“How healthy is this dataset?”
assess_health
Assess a dataset's overall health and risk — a temporal quality score with a plain-language narrative of what's trending and what to watch.
“Why did completeness drop yesterday?”
analyze_root_cause
Analyze the likely contributing factors behind a data incident or quality drop — correlated changes across datasets. (Contributing factors, not proven causation.)
“Triage the anomalies in my latest ILI run”
assess_pipeline_integrity
Triage an ILI (in-line inspection) pipeline run: run a deterministic B31G / modified-B31G remaining-strength assessment on every metal-loss anomaly, rank them by severity (estimated repair factor, safety factor, depth), and draft a prioritized dig sheet for direct examination. For oil & gas pipeline integrity — corrosion, wall loss, fitness-for-service.
“Generate 1000 fake customers”
generate_synthetic_data
Generate synthetic data from a dataset's statistics, a natural-language prompt, or a hybrid of both — with configurable fidelity and column-level access controls (values of columns you're not permitted to see are never reproduced).
“where are my dashboards”
find_assets
Find the user's saved assets — dashboards, datasets, threads/conversations, transformations, recipes, connections, live syncs, scheduled deliveries, APIs. Answers 'where are my X', 'show my saved/recent X', 'list my Y'.
“open my revenue dashboard”
open_asset
Open one of the user's saved assets — resolves a dashboard, thread, dataset, transformation, connection, sync, delivery or API the user can see and returns the in-app path to open it. Read-only navigation.
“Reverse that charge”
reverse_charge
Reverse a wrong settled charge and restore the funds — 'reverse that charge', 'that charge looks wrong, undo it', 'I was charged twice for the forecast run'. The mind judges the claim against the recent settled charges (coherence, ownership, reversal pattern) and the existing reversal service executes within its own bounds: your org only, settled charges only, once per charge. Free — undoing a wrong charge is always free.
“Add funds”
buy_credits
Add funds — composes a real Stripe checkout link for the dollar amount ('add $50', 'top up $30', 'buy more'). Payment is always confirmed by YOU at checkout — nothing is charged until you complete it there. Free to ask.
“Did my payment go through?”
payment_state
Report the org's payment state truthfully — account status, current balance, and the most recent top-up ('did my payment go through?', 'what's my payment state?', 'is my account active?'). Read-only and free.
“save this as Q3 Revenue”
save_results
Save a fixed dataset to the Smart Catalog as a new, findable, lineage-linked dataset — 'save this as X', 'save the results to the catalog as X', 'keep this working copy as X'. Also saves the rows that FAILED a validation check ('save the failing rows so the team can look') as a new dataset. Materializes with conversation provenance.
“save these fixes as a recipe called Weekly Dedupe”
save_recipe
Save a set of fixes or a pipeline as a reusable, replayable recipe — 'save these fixes as a recipe called Weekly Dedupe', 'turn this working copy into a recipe', 'publish this pipeline as a template'. Captures a working copy's fix chain (replayable to a different dataset version) or an existing pipeline as a named recipe with conversation provenance.
“publish my sales dashboard to the org”
publish_asset
Publish or unpublish one of the user's saved assets — 'publish my sales dashboard to the org', 'make this dataset org-wide', 'set this back to private'. Changes WHO can see the asset (visibility), not the data.
“share this dashboard with the data team so they can view”
share_asset
Share one of the user's saved assets with a teammate, a team, or the whole org — 'share this dashboard with the data team so they can view', 'give alex@acme.com edit access to Q3 Revenue', 'share this with everyone'. Grants access without changing the asset's base visibility.
“Show my portfolio”
show_portfolio
Show the outcome portfolio — every standing outcome the platform quietly maintains (live syncs, scheduled reports, goals, autonomy leases) as one fund-manager view: health, cost this period, an honest value line, autonomy rung, owner. 'Show my portfolio', 'what are you maintaining for me', 'what's running on its own'. Zoom into any position's receipts — the governed loop records behind it. Everyone sees their own positions; admins can ask org-wide. Read-only and free. (To pause or resume a position, manage_portfolio is the confirmed act.)
“Pause the revenue sync”
manage_portfolio
Pause, resume, or hand off a standing outcome from the portfolio — a live sync or a scheduled report is held in place (nothing deleted, data untouched) and comes back with one word; an outcome can be shared with a named teammate who sees it at their own access level, and un-shared just as easily. 'Pause the revenue sync', 'resume the Monday report', 'share the revenue sync with Maya', 'stop sharing it with Maya'. Operates only on your own positions (org-wide for admins); goals wind down conversationally and leases revoke rather than pause or travel — I'll say so honestly. (To just SEE the portfolio, show_portfolio is the read.)
“What has Kaarvi cost me this month?”
spend_report
Report this org's LLM spend from the real spend ledger — total USD, tokens, call count and a by-model breakdown over a window ('what has Kaarvi cost me this month?', 'LLM spend last 7 days'). Read-only and free.
“What will it cost to profile my orders data?”
project_cost
Estimate what an operation WILL cost before you run it — 'what will it cost to profile my orders data?', 'project the cost of a full quality analysis on claims_2024'. Reads the same projection the run itself would use and answers in tokens first (with a dollar estimate). Purely informational and free — nothing runs and nothing is charged.
“rename this conversation to "Q3 GOR investigation"”
thread_ops
Rename a saved conversation — 'rename this conversation to \"Q3 GOR investigation\"', 'call this chat the pipeline review'. Renames the conversation you're in, or a named one ('rename my \"churn\" thread to ...'). Only touches the conversation's name — its messages and results are untouched, and a rename is reversible (rename it back). Preview shows the new name before you confirm.
“draft my outreach emails”
compose_outbound
Compose grounded outreach drafts for the decision-makers Verified Outbound has found: one short email each, written from your topic brief and the contact's company facts, verified so every claim traces to your inputs and your postal/unsubscribe block is present. Drafts wait in your queue — NOTHING is sent until you release each one. Suppressed (unsubscribed) addresses are never drafted. Idempotent: re-running drafts only contacts that have none yet. Needs the solution installed and your compliance identity configured. Also the REVISE door: 'revise the draft to <name>: <change>' recomposes ONE queued draft on your instruction — the edit re-passes both safety critics (grounding + compliance) or is refused with the draft untouched.
“Turn weekly revenue cleanup into a skill”
compose_skill
Grow a custom skill from your proven repeat work — 'turn <pipeline> into a skill' publishes a pipeline you keep running as a named skill your whole team can just ask for (the Governor offers this when it senses the repetition). 'Don't turn X into a skill' declines the offer for 30 days; 'retire the X skill' is the soft reverse — it disables the composed skill, never deletes it. Publishing needs the pipeline's owner or an org admin. (The explicit form — 'publish pipeline <name> as a skill called <name>' — and the published-skill lifecycle (list, disable, enable, remove) are publish_skill; both doors run the same publisher.)
“set up my outbound: track Data Quality and Data Governance”
configure_outbound
Set up the Verified Outbound solution by talking: track keywords ('track Data Quality and Data Governance'), connect an intent signal source (G2 token, your website's visit feed, your consented lead-form fills, or your own data), your contact enrichment (Apollo or your own contacts), your CRM (Zoho or the Kaarvi-resident funnel), or your email provider (SendGrid or your own SMTP server) — every connection is PROBED for real and the receipt recorded — and read back what's done vs pending ('show my outbound setup'). Arming stays off until every required piece holds a passed probe.
“send all my queued outreach”
dispatch_outbound
SEND every queued Verified Outbound draft through your connected email provider — the batch send behind '<your word> run'. Each draft passes the same gates as a one-at-a-time release: unsubscribed addresses refuse, the hourly pacing cap holds the rest for the next window, and every send is blind-copied to your oversight address when you've set one. A sent email cannot be unsent.
“find my decision makers”
enrich_outbound
Find the named decision-makers at the companies showing intent in your Verified Outbound signals — through the enrichment source you've connected (your Apollo account, or your own contact data) — and save them. Reveals use your enrichment provider's paid lookups, bounded per run. Idempotent: re-running only fills companies that still need contacts. Needs the solution installed and a probe-proven enrichment source; nothing is sent, this only finds and saves contacts.
“show my outbound funnel”
show_outbound_funnel
Show the Verified Outbound lead funnel: every lead by journey stage (new, drafted, released, sent, engaged, replied, suppressed) with its KaarviIQ score and band — hot leads are surging on your tracked keywords right now. 'show my outbound funnel', 'who are my hot leads', 'how many leads are drafted'. Read-only and free — the same view the Library's Verified Outbound section renders. The draft queue (composed emails awaiting release) lives in show_draft_queue, not here. Setup status lives in configure_outbound's show_setup, not here.
“register my MCP server at https://tools.acme.com/mcp as acme-tools”
manage_integrations
Manage your organization's custom skills: register an external MCP server so its tools become Kaarvi skills, list registered servers, refresh their tool lists, or disable/enable/remove one. Org admins only.
“publish pipeline 42 as a skill called churn-score”
publish_skill
Publish one of your pipelines as a reusable named skill your whole organization can invoke by asking for it — or list, disable, enable, or remove your published skills.
“what solutions do you have for finance?”
browse_solutions
Browse the marketplace's solution catalog — industry professions Kaarvi can install for your organization ('what solutions do you have for finance?', 'tell me about the OEE detective', 'what can you add for my retail team?'). Shows what's installed, each solution's track record for YOUR org (runs, clean rate, streak), and — for admins — what your team keeps asking for that nothing on the shelf serves. Also knows the professional lens Resource packs ('what does the Oil & Gas resource cover?', 'show me what that pack covers') and says how to wear or obtain one.
“install the reconciliation sentinel”
install_solution
Install a marketplace solution for YOUR organization ('install the recon sentinel', 'get me the stock-out sentinel', 'add the OEE detective for my team'). Org-admin only; free. Preview shows exactly which playbooks your org gains before you confirm; the reply offers the onboarding walkthrough. Undo: uninstall_solution.
“uninstall the recon sentinel”
uninstall_solution
Uninstall a marketplace solution from YOUR organization ('remove the recon sentinel', 'uninstall the OEE detective'). Org-admin only. Its playbooks stop being available immediately; history and receipts are kept; reinstalling restores it.
“arm autonomy for the recon sentinel”
arm_solution_autonomy
Arm unattended runs for an installed solution ('run the recon sentinel every morning', 'arm autonomy for the stock-out sentinel'). Org-admin only, and it unlocks with the solution's industry pack — without the pack you get an honest refusal naming it. Playbook runs are read-only; a solution's own pipeline steps run through the governed chain (uncovered mutations hold for confirmation). Every run re-checks the pack grant.
“disarm the recon sentinel”
disarm_solution_autonomy
Disarm unattended runs for a solution ('stop the recon sentinel's scheduled runs', 'disarm the stock-out sentinel'). Org-admin only; idempotent; takes effect at the next tick.
“show my draft queue”
show_draft_queue
Show the Verified Outbound draft queue: the composed emails held for your action — waiting for your release or held for your attention — with recipient names and companies. 'show my draft queue', 'what's waiting for my release'. Read-only and free. Sent and suppressed history lives in the Library's Verified Outbound section. Nothing here sends: releasing a draft is release_outbound's door. The lead funnel (journey stages + KaarviIQ) lives in show_outbound_funnel; setup status in configure_outbound's show_setup.
“release the draft to Pat Lee”
release_outbound
Release ONE queued Verified Outbound draft and SEND it through your connected email provider. Name the recipient or company ('release the draft to Pat Lee'); with a single draft queued you can just say 'release it'. The send refuses if the address has unsubscribed, and a provider failure puts the draft back in the queue. A sent email cannot be unsent — that is exactly why drafts wait for this explicit release.
“pull my intent signals”
resolve_outbound
Pull the latest keyword-intent signals from every intent source you've connected to Verified Outbound — the companies showing interest in your tracked keywords — and save them. Idempotent: re-running adds only what's new. Needs the solution installed and at least one probe-proven source; nothing is sent, this only gathers signals.
“route my leads to my crm”
route_outbound
Route the decision-makers Verified Outbound has found into your connected system of record — your Zoho CRM, or the Kaarvi-resident funnel — so your sales motion sees them where it already works. Idempotent: re-routing updates the same lead, never duplicates it. Needs the solution installed and a probe-proven system of record; nothing is sent, this only writes CRM lead records.
“use my google account for the video part of my film workflow”
bind_capability_connection
Bind one of YOUR provider connections (Google, fish.audio, …) to a capability slot of an installed marketplace workflow ('use my Google account for the video part of my film workflow', 'bind acme-gemini to the video slot on Papercut'). The key is live-probed with a capability-shaped intake probe before it binds — a dead key is refused with the diagnosis. Undo: unbind_capability_connection.
“unbind the voice slot on papercut”
unbind_capability_connection
Unbind a provider connection from an installed workflow's capability slot ('unbind the voice slot on Papercut', 'stop using my Google account for video'). The slot returns to unbound; your connection and the audit history are untouched. Undo: bind_capability_connection.
“why did my film stop?”
provider_health
Why a workflow stopped, and which provider is the reason ('why did my film stop?', 'show provider health for the Papercut install'). Reads each bound capability slot's live diagnosis — whether it's your key (auth), your provider account's balance or a billing hold, the provider's own outage, or an interface change — in plain language, names only.
“unsubscribe pat@acme.com from my outreach”
suppress_outbound
Stop all Verified Outbound email to an address, permanently ('unsubscribe pat@acme.com', 'never email that address again'). Any queued drafts to it are withdrawn, and every future compose and send refuses. This is the safety act behind an unsubscribe request, a bounce, or a personal ask to stop — honoring it is deliberate and permanent.
“make our brand film”
videobox_make_film
Make a short brand film with the VideoBox workflow ('make our brand film', 'produce our launch video'). Uses YOUR bound providers per capability slot; the take budget is declared and held before any generation; claims are grounded in your truth source. Undo: videobox_discard_run.
“discard that film run”
videobox_discard_run
Discard a VideoBox film run ('discard that film run', 'throw away the last film'). The run is marked discarded and its share links are revoked; the brief stays, and re-making the same film is cache-served — no provider re-spend. Undo: videobox_make_film.
“resume my film run”
videobox_resume_run
Resume a paused VideoBox film run ('resume my film', 'continue the film run'). Re-authorizes the declared budget with a fresh hold and re-enters at the paused stage — completed stages are never re-billed (cache law). Undo: videobox_discard_run.
“When will I run out of storage?”
whats_ahead
Forward-looking check on YOUR trajectory — for free: when storage will cross the plan ceiling, when included usage runs out this cycle, and which live syncs are heading toward suspension. The same anticipation engine that raises proactive notices, now askable. Projections from real series only — never a fabricated forecast.
“Brief me”
daily_briefing
Your briefing / front door — for free: what needs your attention, what Kaarvi did for you (with receipts), and what's worth automating, ranked. Use for 'brief me', 'what needs my attention', 'what's new', 'catch me up', 'what did you do', 'what's worth automating'.
“Work toward weekly data quality above 95 percent”
manage_goals
Create or cancel standing goals — the objectives Kaarvi advances for you unattended, under your lease and budget. 'Work toward weekly data quality above 95 percent', 'cancel the enrichment goal'. Applying a work-package stays on its review surface, where the full diff is visible. (To SEE goals and work-packages, show_goals is the free read.)
“What goals are running?”
show_goals
Show your standing goals — the objectives Kaarvi advances for you unattended — and the work-packages they've produced. 'What goals are running?', 'show my work packages'. Read-only and free. (To create or cancel a goal, manage_goals is the act; a package applies from its review surface in Library → Work Packages.)
“change the weekly sales report to daily”
schedule_ops
EDIT or ACKNOWLEDGE an EXISTING scheduled report — change how often it runs (its cadence) or who receives it, IN PLACE without recreating it, or release / discard a run that was held for review. 'change the weekly sales report to daily', 'switch the sales report to run daily instead of weekly', 'change who gets the wells report', 'release the held sales report', 'discard the held run', 'approve the held report'. The schedule keeps its identity and history — a cadence change is an edit, never a delete-and- recreate. Names only, never an internal id. This is the EDIT/ACKNOWLEDGE capability ONLY: CREATING a new schedule, or listing / pausing / resuming / running-now / deleting standing orders, is schedule_task, not this. (To just SEE a schedule's run history, schedule_history is the read.)
“show the last 10 runs of the wells report”
schedule_history
Show a SCHEDULED report's recent run history — the status, row count, and timing of its last runs, so you can see how it's been doing. 'show the last 10 runs of the wells report', 'how has the weekly sales report been running', 'run history for the reporting schedule'. Read-only and free — names only, never an internal id. (To CHANGE its cadence/recipients or acknowledge a held run, schedule_ops is the act.)
“How do I teach you my voice?”
how_do_i
Explain how a Kaarvi feature works, step by step — answers 'how do I …', 'how does … work', 'what can you do', and 'help with …' questions about the product itself (voice and the wake word, teaching Kaarvi your accent, staying in conversation, confirmations, quiet mode, solutions, templates, connections, billing, publishing). Grounded in the verified guides registry; free and read-only.
“forget your last self-comparison”
forget_parity_run
Discard a recorded self-comparison run — 'forget your last self-comparison', 'throw away that parity measurement'. Removes the run and every verdict it carried, so it can no longer influence what I say about how I compare to the mind I run on. Superadmin only.
“What happened in my org this week?”
audit_activity
Answer questions about the org's audit/activity log — who did what, when ('what happened in my org this week?', 'who exported data yesterday?'). Admin-only, same gate as the Settings audit tab; org-isolated; read-only and free.
“Enable the governance module for our org”
request_module
File a request to enable (or disable) a platform module for this org — 'enable Governance for us'. The request goes to the platform approvers, exactly like the Settings module-request flow. Requires confirmation before filing.
“What are my notification settings?”
notification_settings
Show your current notification preferences — 'what are my notification settings?'. Read-only and free; use manage_notifications to change them.
“Do not disturb until 2pm”
manage_notifications
Change how and when Kaarvi reaches you — do-not-disturb, quiet hours, 'only critical', channels and digests. 'Do not disturb until 2pm', 'mute for an hour', 'quiet hours 10pm-7am', 'only show me critical things', 'turn briefings back on', 'email me weekly', 'stop the activity summary'. Also the channel veto: 'never text me', 'don't push, email is fine', 'you can text me again' — and 'you can nudge me about storage again' to re-enable a quieted anticipatory nudge. Also the habit-tracking door (F-SHF6.3): 'stop tracking when I check things' / 'forget my habits' turns off the learned check-in rhythm and its before-your-usual-look warnings; 'track my habits again' turns it back on. Asks for confirmation before changing anything; use notification_settings to just look.
“How is the platform doing?”
platform_health
Diagnose the platform's own scheduled tasks — 'how is the platform doing?', 'why is the lineage discovery job failing?'. Reports each beat job's health (failing/silent/healthy), failure streaks, and real last errors. Superadmin-only, read-only, free.
“What did you learn this week?”
platform_self
The platform states its own truth from code, receipts, and the growth ledger — 'what did you learn this week?', 'what of you is dormant?', 'state your own completion', 'what are you made of?'. What is built, which capability gates are on (every off gate citing its recorded reason), what grew (templates, skills, ripened memories), and what sits undiscovered. Everyone may ask; depth follows authority. Read-only and free.
“roll the release”
roll_platform_release
Act on the platform's own release chain: roll forward to the newest verified-green build, re-run the release walk, or roll back to the prior build. The confirmed intent is honored by the release reconciler — targets are always computed from code-truth, never named free-hand.
“act as a data engineer”
manage_resource
Put on, change, or take off a professional lens for this conversation — 'act as a data engineer', 'be my O&G legal advisor', 'put a quality lens on this', 'what lens am I in?', 'back to normal'. The lens shapes how Kaarvi thinks and speaks for this thread until you change it; it never changes what you are allowed to see or do.
“Set up fixtures for the sibling-dismissal drill”
provision_drill_fixture
Provision a marker-bound throwaway drill fixture set for platform self-exercise (UAT drills): a throwaway drill org on the reserved .uat-drill.invalid domain (or plain marker users inside your org for sibling drills), token-only drill users (short-lived JWTs, no passwords — ever), an org-wide drill notice, and connections already in a sensed state (dormant / expiring / lapsed / drifted / estate_dormant) so the connection sensors can be drilled without reaching under the platform. 'set up the sibling drill', 'provision a drill org for the membrane test', 'mint drill users'. Org-admin only; free; everything it creates is removable exactly by teardown_drill_fixtures.
“Tear down the drill fixtures”
teardown_drill_fixtures
Remove EVERY marker-bound drill fixture the organ ever created — drill notices, drill users (and their drill-org roles), and throwaway drill orgs on the .uat-drill.invalid domain. Reports deleted counts AND verify-after remaining counts (the proof, not the promise). 'clean up the drill fixtures', 'tear down the drill org', 'remove UAT drill residue'. Org-admin only; free. ActivityLog audit rows are kept — the organ removes fixtures, never the record that they existed.
“show me the pending website update”
manage_website_refresh
See, approve, or reject the pending website copy updates the daily site-refresh drafts, and pause or resume that daily watcher. Decisions share one first-write-wins seam with the owner's one-click email links; an approval is executed to LIVE by the keyless deploy tail.
“archive dataset 4”
archive_dataset
Archive OR unarchive a dataset — a reversible soft state that hides it from the active estate while KEEPING all its data ('archive dataset 4', 'move the 2021 sales table to archive', 'unarchive dataset 4', 'restore dataset 7 to active'). Nothing is deleted: storage is retained. Set archive=false to unarchive (status → active). Preview shows exactly what will change before you confirm.
“restore the deleted dataset \"Athena ICE status report\"”
restore_dataset
Restore a SOFT-DELETED dataset back to active — the reverse of a soft delete ('restore the deleted dataset \"Q3 orders\"', 'bring back the Athena status report I deleted', 'undelete dataset 1200'). A soft delete keeps every physical layer, so the restore is a status flip plus the Library record coming back — nothing is rebuilt. Only works on deleted datasets; archived ones use unarchive; a hard-purged dataset is gone and this door says so honestly.
“roll dataset 7 back to version 2”
restore_dataset_version
Roll a dataset back to a prior version — 'roll dataset 7 back to version 2', 'restore version 3 of dataset 12'. Roll-forward semantics: the chosen version's data becomes live under a NEW version number and the state you're leaving stays in history, so a restore is itself reversible. Preview shows exactly what will change before you confirm. NOT the archive toggle — this changes which DATA is live.
“archive datasets 4, 7 and 12”
sweep_datasets
Archive OR unarchive MANY datasets in one act — the bulk form of archive_dataset for cleaning up an estate ('archive datasets 4, 7 and 12', 'sweep my test datasets to archive', 'unarchive datasets 4 and 7'). Reversible and non-destructive: nothing is deleted, all data is retained; the preview names every dataset that will change before you confirm. Set archive=false to reverse the same sweep.
“tidy up my library”
tidy_library
Find the datasets that look like leftover test or verification artifacts (uat/probe/stress fixtures, pipeline run outputs, scratch copies) and archive them in one reversible sweep ('tidy up my library', 'clean up my old test datasets', 'archive the leftover test artifacts'). Conservative by construction: demo/sample names, dashboard-backed datasets and anything recently touched are never proposed; the preview names every candidate and why before you confirm. Storage is fully retained — the Library's Archived shelf (or 'unarchive datasets …') brings any of them back.
“delete dataset 4”
delete_dataset
Permanently delete a dataset — a HARD purge that drops the physical table, Parquet, catalog entries, versions and its Asset-Fabric record ('delete dataset 4', 'permanently remove the old imports table'). Ref-count-safe: storage SHARED by a live sibling version or pinned by a dashboard/thread is RETAINED, never dropped. Preview shows exactly which layers will be removed vs. retained before you confirm — destructive.
“run a DSAR for customer jane@example.com”
run_dsar
Run a data-subject erasure request (DSAR / GDPR Art.17 / CCPA 'right to be forgotten') — locate everywhere a subject's PII lives and erase it by redacting the classified columns or purging subject-scoped datasets ('erase all data for this customer', 'run a DSAR for subject X'). Superadmin-only, feature-flag-gated. Preview shows the full erasure plan (which datasets/columns, purge vs redact) before you confirm; the subject reference is only ever shown/stored as a hash.
“archive the conversation "Q3 churn digging"”
archive_asset
Archive OR unarchive a conversation, transformation, recipe, connection, live sync, scheduled report or published API — a reversible soft state that hides it from the active Library shelf while KEEPING everything ('archive the conversation \"Q3 churn\"', 'archive my \"Orders\" live sync', 'unarchive the \"Weekly ops\" report'). Archiving something active also stops it firing. NOT the door for a temporary pause of a served API — that is publish_api's pause. For datasets, use archive_dataset.
“delete the conversation "Old scratch chat"”
delete_asset
Delete a conversation, transformation, recipe, connection, live sync, scheduled report or published API from the Library ('delete the conversation \"Old scratch\"', 'delete my \"Orders\" live sync', 'delete the \"Rates\" API'). Destructive: a conversation's messages are permanently gone; an API's token stops authorizing (consumers break); a scheduled report's recipient list is erased. The reversible alternative is archive_asset. For datasets, use delete_dataset.
“I say 'hey karvee'”
manage_wake
Teach Kaarvi how you actually say its wake word — \"I say 'hey karvee'\" adds your own phrasing as a personal wake alias (validated, max 8); 'take that back' removes exactly that alias; and 'forget what you've learned about my voice' erases your wake telemetry entirely. Everything is yours alone — nothing another user says or hears is touched.
“Profile it, fix what you find, then chart rejects by month and keep it fresh every 30 seconds” is one sentence to Kaarvi. That used to be four tools, three handoffs and a ticket queue — here it’s planned, executed and verified in a single thread, on the record.