196

Skills

Skills that resolve real work. Armed by one intelligence.

You never pick a skill. You say what you want, and Kaarvi arms the right ones from its armory, in order, with a preview before anything changes. Every one carries a human name, an honest cost tier, and whether it can change your data.

34

Governance & compliance

Manage API keys · List API keys · Manage autonomy · Show autonomy map · Grant lease · Write back catalog

29

Custom skills & integrations

Write a record into a connected system · Write records into a connected system · Compose outreach drafts · Compose skill · Set up outbound · Send queued outreach

24

Dashboards & publishing

List published APIs · Manage API webhooks · List API webhooks · Compose chart · Build dashboard · Drill widget

23

Data quality & profiling

Describe dataset · List datasets by source · Correct understanding · Undo fix · Discard cleanup · Promote dataset

14

Your estate

Find assets · Open asset · Reverse a charge · Buy usage units · Payment state · Save results

11

Lifecycle & retention

Archive dataset · Restore dataset · Restore dataset version · Sweep datasets · Tidy library · Delete dataset

11

Transform & automate

Transform pipeline · Run analysis code · Suggest template · Publish template · Automate on change · Schedule task

9

Briefing & proactivity

What's ahead · Daily briefing · Manage engagement · Show engagements · Delete engagement · Manage goals

9

Ingestion & connections

Read document · Deliver to your systems · Ingest data · Manage connections · Search catalog · Create connection

9

Your workspace

How do I… · Audit activity · Request module · Notification settings · Manage notifications · Platform engines

8

Forecasting & diagnostics

Explain change · Segment data · Attribute · What if · Forecast · Health check

7

Lineage & impact

Trace lineage · Impact analysis · Review lineage · Column impact · Value receipt · Find column

6

Query in plain language

Assist · Find data by columns · Ask your data · Recall a conversation · Recall across threads · Recall conversation

1

Synthetic data

Generate synthetic data

1

Voice & companion

Manage the wake word

The use cases

Real problems, said the way you would say them.

Every one of these is a sentence Kaarvi resolves today, with its receipt.

finance

“Find the reconciliation breaks and the variance drivers before the close does.”

Ledger and bank feed matched, breaks ranked by driver, the close memo drafted, every figure traced.

pipeline integrity

“Triage the ILI anomalies and give me the dig list.”

B31G remaining strength on every metal-loss feature, ranked with an operator’s judgment, ready for the dig-program review.

operations

“Which line is bleeding OEE, and why?”

Downtime by cause, the shift pattern behind it, the root cause named, the dashboard kept live.

retail

“Call the stock-out risk before the weekend.”

Promo lift and inventory forecast joined, the at-risk SKUs listed, the buyer notified on the right channel.

legal

“Keep matter spend defensible.”

Obligations tracked, spend against budget per matter, the memo composed as your in-house counsel would.

marketing

“Turn buying-intent signals into outreach I can stand behind.”

Signals to named decision-makers to drafts, a second reader on every draft, receipts on every send, opt-outs honored forever.

data team

“Clean this dataset, dedupe on order_id, and keep it clean.”

Ranked fix plan, safe fixes applied on a reversible copy, a standing drift watch on the source, the recipe saved for the team.

data team

“What breaks downstream if I rename this column?”

The column-level blast radius: pipelines, dashboards, APIs, and who owns each, before the change.

executive

“Make this a deck the board can see Thursday.”

The story composed from governed data, native charts in your theme, one slide withheld and said if it will not reconcile.

partner data

“Publish this pipeline as an API and tell them when it refreshes.”

A live, access-controlled feed that tells your systems whenever the data refreshes, with its own spend cap.

compliance

“Mask salary for analysts, everywhere, always.”

A standing column policy that holds at the source, at the boundary, on the way out, and inside AI-composed replies.

anyone

“When will I run out of storage?”

Projected from your own real series against your real plan ceiling. No series, no forecast, never a made-up one.

The catalog

196 skills. One conversation.

Query in plain language

6 skills

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

standard

“Where do I have a wellhead pressure column?”

Find data by columns

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.

light

“What were total sales by region last quarter?”

Ask your data

query_data

Answer a natural-language question about one or more datasets — aggregations, filters, comparisons, trends, and COMPUTED counts (how many rows match a condition) — with a verified, show-your-work SQL answer. A dataset's plain total row count is the free Describe dataset's territory, not this skill's.

standard

“Bring up yesterday's chat”

Recall a conversation

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.

light

“What did we decide about the Houston pipeline last week?”

Recall across threads

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.

light

“In the part above where you gave the cumulative total, break it down by region”

Recall conversation

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.

light

Data quality & profiling

23 skills

“What columns does this dataset have?”

Describe dataset

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

light

“Where's my data from MyAppDb?”

List datasets by source

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

light

“Correct the understanding of this dataset: the grain is one row per deliverable”

Correct understanding

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

previews → confirmlight

“Actually, undo that”

Undo fix

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

previews → confirmstandard

“Throw the cleanup away”

Discard cleanup

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.

previews → confirmlight

“Promote it — replace the original”

Promote dataset

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

previews → confirmstandard

“Put the original back”

Restore original

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.

previews → confirmstandard

“Show me everything I've changed so far”

Show changes

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.

light

“Show me the result”

Preview data

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 (cleaned) data, and mode='compare' is the before/after preview — original vs cleaned side-by-side with the changed rows and cells marked ('show me the before/after preview', 'before and after', 'what changed'). Read-only; SQL-paginated so it stays bounded on any size.

light

“Profile the customers dataset”

Profile dataset

profile_dataset

Profile a dataset's quality NOW, in SQL (never a full materialization): per-column stats, null and distinct counts, inferred types and a quality score. Needs the dataset; a column list narrows it; deep adds distributions. Returns the column table and the score. Use for 'what does this data look like / how good is it'; its health over time is Health check.

standard

“Fix the missing emails in customers”

Fix data

fix_data

Detect and fix data quality issues (missing values, duplicates, outliers, type mismatches) on a working copy — the remediation half of an anomaly scan: cap, winsorize, clip or trim outliers at IQR, percentile or z-score bounds; fill, impute or drop nulls; remove duplicates. Always previews before applying.

previews → confirmstandard

“Are there any anomalies in the sensor readings?”

Detect anomalies

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

deep work

“What's the primary key of this table?”

Suggest keys

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

standard

“Validate that order_id is unique”

Validate data

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

previews → confirmlight

“Check whether order_id repeats in the orders dataset”

Check data

check_data

CHECK a stated rule against a dataset and report what fails — a READ that never writes: a key that repeats (pk integrity — duplicate rows), a range, freshness, a pattern, two columns against each other, a type. Returns pass or the count of failing rows with a bounded sample. The step to put before a plan computes on data nothing has profiled since it last changed. (Flagging or removing the failing rows is Validate data with write back.)

light

“Re-profile customer_events now”

Reprofile dataset

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.

previews → confirmstandard

“Undo that re-profile”

Restore reprofile

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.

previews → confirmstandard

“Is the data quality of that table improving?”

Quality trends

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.

light

“Clean this dataset”

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

previews → confirmdeep work

“What can you do about drift on this table?”

Fix strategies

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.

free

“Stop watching this dataset”

Set dataset watch

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.

previews → confirmfree

“Watch my orders table for schema drift”

Manage drift watch

manage_drift_watch

Stand up, list, pause/resume, or cancel a standing SOURCE- DATABASE drift watch — 'watch my orders table for schema drift' polls the dataset's source table on a cadence, snapshots column statistics (null rate, uniqueness, mean/std), and feeds the drift and stat-shift analysis; 'list my drift watches' shows the standing set; pause/resume and cancel are the reverse rungs. Durable — a watch survives restarts and cache losses. Distinct from Set dataset watch (the catalog re-profile preference): this one connects to the SOURCE database, so it needs a database-sourced dataset with an active connection.

previews → confirmfree

“Record an incident on "outages": spike in downtime minutes, severity high”

Record incident

record_incident

Record an INCIDENT on a dataset in the person's own words — what was seen and how bad (low, medium, high or critical) — so it sits on the dataset's record beside the platform's own anomaly incidents; a high or critical one is picked up by the proposal sweep within a few minutes, which drafts the goal for the dataset's owner. 'Resolve the incident …' is the reverse (marked resolved, never deleted). Never for FINDING anomalies (Detect anomalies) or fixing data (Fix data).

previews → confirmfree

Governance & compliance

34 skills

“Revoke the key called ci-deploy”

Manage API keys

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

previews → confirmlight

“What API keys do I have?”

List API keys

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

light

“Automate this”

Manage autonomy

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

previews → confirmlight

“Show the autonomy map”

Show 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.)

light

“you may work on this for 60 minutes with a budget of 50 usage units”

Grant lease

grant_lease

Grant Kaarvi a bounded lease to work unattended: the person names the time and the budget in one sentence ('you may work on this for 60 minutes with a budget of 50 usage units', 'for the next 2 hours and $5 you may clean the sales data, and you can change the data'). Mints ONE autonomy lease in their own scope, binds this thread's waiting goal to it (or makes the goal from the sentence), and reports back in the thread. Mutations only when spoken; a dollar figure converts at the org's real rate or is refused. This is the authorize stage of the trust fabric — stage it as the act when the person grants; ask when the bounds are missing or the objective is genuinely unclear.

previews → confirmlight

“Describe the customers table as the billing system's customer master, refreshed nightly”

Write back catalog

write_back_catalog

Write what you learned back onto a catalog asset's record — its description, its tags, or its owner — from chat: 'describe the customers table as …', 'tag orders with finance and monthly', 'make sam@example.com the owner of the revenue table'. One row, the previous values named on the reply, so putting it back is one sentence.

previews → confirmlight

“Mask the salary column on Payroll for analysts”

Manage column policies

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

previews → confirmlight

“What column policies do we have?”

Show column policies

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

light

“Did the ST2 wave pass its gate?”

Platform build status

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

light

“Send my reports as reports@example.com”

Manage email senders

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@example.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.)

previews → confirmlight

“Who do our emails send as?”

Show email senders

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

light

“For everyone here: fiscal year starts in February”

Manage glossary

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.

previews → confirmlight

“Does this table contain PII?”

Detect PII

detect_pii

Scan a dataset for personally identifiable information — emails, names, SSNs, phone numbers, addresses — on a bounded sample and flag the affected columns. Needs the dataset; an optional column list narrows the scan. Returns the flagged columns with the PII kinds found. Use before sharing, masking or classifying; it flags, it does not mask.

standard

“Classify the sensitivity of these columns”

Classify data

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.

standard

“What's the governance status of my data?”

Governance status

governance_status

Summarize governance posture from grouped aggregates: classification coverage, compliance, ownership and drift — for one dataset or the whole org. Needs nothing (a dataset narrows it). Returns the four facets with counts. Use for 'is my estate classified, compliant and owned'; a single dataset's violations are Check compliance.

light

“Is this data GDPR compliant?”

Check compliance

check_compliance

Scan one dataset you can access against compliance frameworks (GDPR, HIPAA, SOC2, PCI, …) and report the violations found. Needs the dataset; an optional framework list narrows the scan (default: every framework). Returns the violations per framework with the columns involved. Use for 'is this dataset compliant'; the org-wide posture is Governance status.

standard

“Apply the PII-masking policy to these tables”

Apply policy

apply_policy

Evaluate or ENFORCE one governance policy against datasets: evaluate reports conflicts and violations; enforce blocks them per the policy's mode. Needs the policy and, optionally, the datasets (default: the policy's own scope); mode defaults to evaluate. Returns the per-dataset verdicts and what enforcement would block. Use evaluate first; enforce is a change and proposes a preview.

previews → confirmstandard

“That's not PII, the email_hash column is public”

Calibrate classification

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.

previews → confirmlight

“Classify and tag the customers dataset”

Apply classification

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

previews → confirmstandard

“Create a retention policy for customer PII that blocks exports”

Manage policy

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 that version', 'archive the old handling policy'. Content changes are VERSIONED; rollback is always available. (Apply policy evaluates and enforces; this one writes the law itself.)

previews → confirmlight

“Make sam@example.com the owner of the customers table”

Assign ownership

assign_ownership

Assign or transfer a catalog asset's OWNER or STEWARD from chat — 'make sam@example.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.

previews → confirmlight

“Apply the PII Retention policy to the customers table”

Assign policy

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.

previews → confirmlight

“Always confirm any changes to fix data with me”

Manage governance

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.

previews → confirmlight

“invite jane@example.com as an admin”

Invite user

invite_user

Invite a person by email to join YOUR organization with a role ('invite jane@example.com as an admin', 'send an invite to bob@example.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.

previews → confirmlight

“make bob@example.com an admin”

Assign role

assign_role

Assign a role to a user in YOUR organization ('make bob@example.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.

previews → confirmlight

“cap our monthly spend at $5,000”

Set spending cap

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.

previews → confirmlight

“enable SSO for my organization”

Configure SSO

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.

previews → confirmlight

“Enforce SSO for everyone”

Manage auth posture

manage_auth_posture

Change how your organization signs in: enforce SSO for everyone, allow or disable password sign-in, require MFA ('enforce SSO for everyone', 'require MFA', 'turn passwords back on') — or just ask what the policy is ('is SSO enforced for everyone?') and it's read back without changing anything. Org-admin only, previewed before anything changes — this is the whole-org lockout lever, so the preview names exactly who can still sign in afterwards.

previews → confirmlight

“Show me every loop the platform ran last week”

Show loops

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.

light

“What has our deployment ever sent the network?”

Show pattern provenance

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.

light

“Share the churn pattern with the network”

Manage shared patterns

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 pattern provenance is the read-back. Org-admin only; the publish door fails shut when closed.

previews → confirmlight

“mask the PII in this dataset”

Apply masking

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.

previews → confirmstandard

“am I in the right workspace?”

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

free

“join my company's workspace”

Join a 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@example.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.

previews → confirmfree

Ingestion & connections

9 skills

“Read the master services agreement in our contracts bucket”

Read document

read_document

Read a document as text, page by page — a contract, a policy, a report. Two sources: a file that sits in a connected cloud storage connection (S3, Google Cloud Storage, Azure Blob, Google Drive, SharePoint: a pdf, a Word .docx, a text file or an HTML page — needs the saved connection's name and the file's path in it), or a pdf, a Word .docx or an HTML page the person attached to this turn (needs the attached file's name). Optionally the first page and how many pages (20 by default, 100 at most). Hands back each page's text with its page number, the document's page count and, in words, what was not read; personal data shapes (email addresses, phone, card and account numbers) are masked. Optionally name the fields to pull out (a renewal date, a notice period, a liability cap — 20 at most): each comes back with its value, its page and the sentence that states it, and only a value found word for word in the document is kept — a field the document does not state is said as not found. In a plan, a Save results step right after a read that names fields keeps that table of fields as a dataset. It reads only — nothing is written or ingested by the read itself. Not for tables or spreadsheets (bring those in with Ingest data), not for scans (a PDF with no text layer is said so, not read), and a file over 8 MB is refused.

standard

“push that dataset to the customers table in my warehouse connection”

Deliver to your systems

deliver

Deliver a dataset OUT to an external database/warehouse through a write-capable connector — 'push this to my Postgres', 'write that dataset 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 (the same skill, undoing).

previews → confirmlight

“Pull the orders table from my Postgres connection”

Ingest data

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

previews → confirmdeep work

“List my connections”

Manage connections

manage_connections

List, test, inspect, and EDIT your data source connections and edge connectors, START connecting a new data source (it works out how to reach the source and names the one next step; the actual creation with credentials is Create connection), 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).

previews → confirmlight

“Find datasets about revenue”

Search catalog

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.

light

“Connect my Postgres at db.example.com:5432, database sales, user readonly”

Create connection

create_connection

CONNECT a brand-new data source from chat — a database, warehouse, or API/SaaS endpoint (an API source needs a name and its URL — 'connect the Stripe API at https://api.stripe.com/v1/charges as Stripe charges'; the auth block rides the request, never the transcript) — source: 'connect my Postgres at db.example.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.

previews → confirmlight

“Export this dataset as CSV”

Export data

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. Also exports a DASHBOARD as a JSON spec (edit it, upload it again to rebuild the grid) or a self-contained HTML file that works offline, and a CONVERSATION's transcript as JSON or CSV.

light

“Keep the refinery feed live and refresh my Production dashboard”

Manage live sync

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.

previews → confirmlight

“Which of my datasets are kept live?”

List live syncs

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

light

Transform & automate

11 skills

“Join orders with customers and aggregate by month”

Transform pipeline

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

previews → confirmstandard

“Run this pandas snippet on my data”

Run analysis code

run_code

Run custom Python (or a single SQL SELECT, or a TypeScript, R or GNU Octave block when this image holds that lane) against a dataset inside the process-isolated sandbox and return the result. Needs the code; a dataset gives it data; language defaults to python; register as saves the output as a new dataset. Returns the output (rows or values) and, when registered, the new dataset's name. Use when no skill does the computation; running code is a governed act that proposes a preview first. deliver as='page_preview' (TypeScript only) renders the block's TSX component ONCE into a page that lands in the Library like a deck — a preview, reviewable, never deployed and never a route of the app; use it when someone asks for a small page showing something. The languages this sandbox runs are python, sql and — each when its lane is present in this image — typescript, r and octave; a lane that is absent is refused by name, never promised. MATLAB is NOT available (it needs a licence this cluster does not hold) and is refused by name, offering GNU Octave for the same numeric block; never promise MATLAB. Sandbox contract: no import statements (df, pd and np are pre-bound; so are stats (scipy.stats) and linear model (sklearn.linear model) for a significance test or a regression — nothing else of scipy or scikit-learn; assign the output to result) or one SQL SELECT over df; never type rows of data by hand — read them from df or SELECT them. Code that breaks the contract is refused at the plan card, before anyone approves it.

previews → confirmstandard

“Is there a template for deduplication?”

Suggest template

suggest_template

Suggest prebuilt pipeline templates and recipes that fit what the person wants to do. Needs their intent in words; a dataset narrows the suggestions; limit defaults to 10. Returns the matching templates with what each does. Use before building a pipeline from scratch; applying one is Use template.

light

“publish that pipeline as a template for my team”

Publish template

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

previews → confirmfree

“Re-run my cleaning pipeline whenever new orders land”

Automate on change

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').

previews → confirmstandard

“Email me total sales every Monday at 8am”

Schedule task

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').

previews → confirmlight

“Why did last night's run of that pipeline fail?”

Run history

run_history

Answer questions about a pipeline's run history — 'why did last night's run fail?', 'show recent runs for that pipeline'. Status, duration, rows, trigger and the failure message when there is one. Read-only and free.

light

“Clean this report up so I can use it”

Reshape dataset

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.

previews → confirmstandard

“Use the Address Cleanup template on the customers dataset”

Use template

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

previews → confirmlight

“Run the cleanup, dedup and export pipelines in order”

Run pipelines

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

previews → confirmstandard

“Rename the Cleanup pipeline to Nightly Cleanup”

Rename pipeline

rename_pipeline

Rename a transformation or recipe — 'rename the Cleanup pipeline to Nightly Cleanup', 'call the dedup recipe Dedup v2'. Runs, schedules, published APIs, and everything downstream keep working; only the display name changes. Preview shows old and new before you confirm.

previews → confirmlight

Dashboards & publishing

24 skills

“what APIs have I published”

List published APIs

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.

light

“add a webhook https://hooks.example.com/kaarvi to the Sales API and test it”

Manage API webhooks

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

previews → confirmlight

“list the webhooks on the wells API”

List API webhooks

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, Manage API webhooks is the act.)

light

“Compose a chart of which anomalies fail B31G”

Compose chart

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.

previews → confirmstandard

“Build a sales dashboard”

Build dashboard

build_dashboard

Create a dashboard from a dataset or pipeline — auto-selecting domain-appropriate charts and KPIs, optionally from a natural-language brief. For a NESTED portfolio over several attached sheets, run Compose portfolio first and pass portfolio plan id='latest'.

previews → confirmdeep work

“Deep dive into Spend on Alpha”

Drill widget

drill_widget

Deep-dive ONE widget of a dashboard: the mind builds a small child dashboard (this metric over time · by category · underlying rows · a note) and links it to the widget. Opening an existing deep dive is free navigation, not this act.

previews → confirmstandard

“Save this dashboard's layout as a template called Board Pack”

Save dashboard template

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), or REFRESHES a template whose source dashboard drifted ('refresh the Board Pack template' re-reads the arrangement from the dashboard it was captured from). Build on one later with 'build X using the Board Pack template' (Build dashboard's template name).

previews → confirmlight

“Write a Q3 performance report”

Publish report

publish_report

Write a governed narrative report over the datasets you name — every figure slot-filled from a verified query (number-quarantine), with per-claim provenance and per-viewer redaction. Needs the dataset(s) and, optionally, the audience. Returns the report in the conversation and, when report publishing is on, saves it as YOUR private draft — it does not publish or share it: sharing, scheduling and exposure are Manage report's acts. Use when the person wants a written narrative with numbers, not a dashboard or a deck.

deep work

“Publish this pipeline as an API”

Publish a live 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'. And you can ROTATE a published API's token ('rotate the token for the API \"Rates\"'): a new token is minted and shown once, the previous one stops working immediately — for revoking access outright, unpublish (the token dies with it).

previews → confirmstandard

“Tell me the story of the wells dashboard”

Tell a data story

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.

deep work

“Restore the Ops Overview dashboard to yesterday's version”

Restore dashboard version

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.

previews → confirmlight

“List my dashboards”

Manage dashboard

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). For a dashboard that OPENS others (a portfolio): default child makes one of them the default — listed first among what opens from it ('make Alpha's dashboard the default'); add widget with every child adds a chart to each of them ('add a milestone widget to every project'). 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.

previews → confirmlight

“List my reports”

Manage report

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.

previews → confirmlight

“Email me the Q3 performance report as a PDF every Monday”

Schedule report

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.

previews → confirmlight

“How is my Q3 Revenue dashboard doing?”

Viewer analytics

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.

standard

“Turn this into a deck for the board”

Make deck

make_deck

Turn the thread's latest query result into a branded PPTX deck — the mind drafts the slide story, the platform renders it with the org theme and hands it back in this thread. Use for 'turn this into a deck', 'make me a presentation', 'slides for the board', 'PPTX of these findings'.

previews → confirmstandard

“Where's my presentation?”

Show deliverables

show_deliverables

Your generated deliverables (decks) — what exists, how big, which theme, what's been downloaded. Use for 'where's my presentation', 'show my decks', 'what deliverables do I have'.

free

“Email me the deck”

Manage deliverables

manage_deliverables

Rename, archive, unarchive, delete, regenerate, EMAIL a generated deliverable, or RECALL a queued email before it leaves. Use for 'email me the deck', 'rename that deck', 'archive the presentation', 'delete the deck', 'rebuild it with fresh numbers', 'recall that email'.

previews → confirmlight

“Compose the portfolio plan from the attached project sheets”

Compose portfolio

compose_portfolio

Read SEVERAL attached sheets and compose a PORTFOLIO PLAN: which sheet is the portfolio (one row per project) and which are project sheets, which portfolio row each project sheet belongs to, and where each requested metric (status, % complete, budget vs actual, …) comes from in each project sheet. Call this BEFORE Build dashboard for a nested / portfolio / roll-up dashboard over several sheets; then Build dashboard with portfolio plan id='latest' builds the portfolio dashboard and one dashboard per project. (Not for a single-sheet dashboard — Build dashboard does that directly.)

standard

“Extract a theme from this screenshot”

Extract theme

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.

standard

“What themes do I have?”

List themes

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.

free

“Save this theme as Sunset”

Manage theme

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

previews → confirmfree

“Change this dashboard's theme to Sunset”

Apply dashboard theme

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

previews → confirmfree

“Use this image as our workspace logo”

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

previews → confirmlight

Lineage & impact

7 skills

“Where does the revenue column come from?”

Trace lineage

trace_lineage

Trace where a dataset or column came from: its upstream sources and the transformations that produced it, read from the recorded lineage (passive, free, no model call). Needs a dataset or a question naming one. Returns the upstream chain. Use for 'where does this come from'; what a change would break downstream is Impact analysis.

light

“What breaks if I drop the status column?”

Impact analysis

impact_analysis

Show what depends on a dataset or one of its columns downstream — the pipelines, dashboards and APIs that would break if it changed (a bounded graph walk, passive, free). Needs the dataset; a column narrows it. Returns the dependents by kind. Use before changing or deleting something; where it came from is Trace lineage.

light

“Auto-discover lineage across my warehouse”

Review lineage

review_lineage

Run the lineage agents (discovery, impact, quality, governance) as a background job that auto-detects flows and findings across the estate — metered, and only when the person asks for it. Needs nothing (a dataset or an agent list narrows it). Returns the job's name and where its findings land, not the findings themselves. Use when the recorded lineage is incomplete; reading what is already recorded is Trace lineage.

deep work

“What breaks if I drop the customer_id column from that table?”

Column impact

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.

light

“Is my nightly Sales Enrichment worth what it costs?”

Value receipt

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.

light

“Where's my churn signal?”

Find column

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.

light

“How does this dataset relate to my other data?”

Suggest lineage

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.

standard

Forecasting & diagnostics

8 skills

“Why did Q3 margin fall, by product and region?”

Explain change

explain_change

Explain why a metric moved between two periods: the metric's total in each period, aggregated in SQL by one or two dimensions (never a row dump), the total change, and every group's contribution ranked by size with its share of the change — the contributions sum to the total change, measured, not assumed. Needs the dataset, the metric column, the date column, the two periods as inclusive dates and one or two dimensions; the aggregate is sum (default) or count. Use when asked why a number rose or fell, by what and by how much — not for a one-off total (Ask your data) or for where a number is heading (forecast).

standard

“Show customer retention by monthly cohort”

Segment data

segment_data

Build a cohort / retention table from a dataset of events: each row is an entity (a customer, a device, an account) doing something on a date — optionally only the rows whose event column holds a named value; an entity's cohort is the month or week of its first event, and the table says, per cohort, how many entities it holds and how many were active again 1, 2, … periods later, as counts and as rates. Aggregated in one SQL statement (never a row dump). Needs the dataset, the entity column and the date column; the event (column + value), the granularity (month, default, or week) and how many periods to follow (default 12) are optional. Use when asked who stays and who leaves, retention, churn by cohort, or how a cohort behaves over time — not for a one-off count (Ask your data).

standard

“Which channel drove Q3 revenue, last touch?”

Attribute

attribute

Attribute an outcome to its causes by a named rule: the dataset's rows are touches — an entity (a customer, a deal, a journey) met a cause (a channel, a campaign, a rep) on a date — and the rule decides which touch earns the entity's outcome: first touch (the earliest row's cause), last touch (the latest; the default) or even (every touch an equal share). The table says, per cause, the amount attributed to it, its share of the total outcome and the entities it touched — and whether the attributed amounts sum to the total, measured. Aggregated in SQL (never a row dump). Needs the dataset, the entity, date and cause columns; an outcome column to sum per entity is optional (none → each entity counts once, a conversion). Use when asked which channel, campaign or rep an outcome is owed to, or what share of revenue or conversions each source drove.

standard

“What would Q3 revenue be if we raised prices 10%?”

What if

what_if

Re-compute one figure of a dataset under named changes, beside the figure as the data is: scale the metric by a factor (a price rise, a cost cut) and / or drop the rows matching conditions on any column (=, !=, <, <=, >, >=, in — 'without the bottom two SKUs', 'without negative margins'). One SQL statement computes both figures and the rows before and after (never a row dump); the answer says both figures, the difference and how many rows the drops removed. Needs the dataset, the metric column and one to five changes (one scale at most); the aggregate is sum (default), count or avg. It changes nothing — the data is read, never written. Use for 'what would revenue be if…' — not for why a number moved (Explain change) or where it is heading (forecast).

standard

“Forecast next quarter's revenue”

Forecast

forecast

Forecast where a numeric column is heading: a daily series (SQL-aggregated, never a row dump) projected over a horizon with confidence bands. Needs the dataset and the value column; the date column is auto-detected unless named; horizon days defaults to 30. Returns the forecast points, the bands and the method used. Use when asked where a number is going, not for a one-off total (that is Ask your data).

standard

“How healthy is this dataset?”

Health check

assess_health

Assess a dataset's overall health and risk over TIME: its quality history, anomalies (spikes and drops), the quality forecast and the trend, folded into one health score with a plain-language narrative of what is trending and what to watch. Needs only the dataset. Returns the score, the trend and the narrative. Use for 'how healthy is this dataset' — a point-in-time column profile is Profile dataset.

light

“Why did completeness drop yesterday?”

Find the root cause

analyze_root_cause

Analyze the likely contributing factors behind a data incident or a quality drop — the incident's own anomaly details and correlated changes across datasets (contributing factors, never proven causation). Needs an incident, or a dataset plus a description of what went wrong. Returns the ranked factors with their evidence. Use after something broke or dropped; to see what a change would break, use Impact analysis.

deep work

“Triage the anomalies in my latest ILI run”

Assess pipeline integrity

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.

standard

Synthetic data

1 skill

“Generate 1000 fake customers”

Generate synthetic data

generate_synthetic_data

Generate synthetic rows from a dataset's statistics (mode schema), a natural-language prompt (mode prompt, the default), or both (hybrid) — column-level access controls hold (values of columns you may not see are never reproduced). Needs a prompt and/or a dataset; count defaults to 100; save=true keeps the result as a new dataset. Returns a preview of the rows and, when saved, the dataset's name. Use for test or demo data; generation is a metered, governed act that proposes a preview first.

previews → confirmdeep work

Lifecycle & retention

11 skills

“archive that dataset”

Archive dataset

archive_dataset

Archive OR unarchive a dataset — a reversible soft state that hides it from the active estate while KEEPING all its data ('archive that dataset', 'move the 2021 sales table to archive', 'unarchive that dataset', 'restore that dataset to active'). Nothing is deleted: storage is retained. Set archive=false to unarchive (status → active). Preview shows exactly what will change before you confirm.

previews → confirmlight

“restore the deleted dataset \"Athena ICE status report\"”

Restore dataset

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 that dataset'). 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.

previews → confirmlight

“roll that dataset back to that version”

Restore dataset version

restore_dataset_version

Roll a dataset back to a prior version — 'roll that dataset back to that version', 'restore that version of that dataset'. 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.

previews → confirmlight

“archive datasets 4, 7 and 12”

Sweep datasets

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.

previews → confirmstandard

“tidy up my library”

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

previews → confirmstandard

“delete that dataset”

Delete dataset

delete_dataset

Permanently delete a dataset — a HARD purge that drops the physical table, Parquet, catalog entries, versions and its Asset-Fabric record ('delete that dataset', '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.

previews → confirmstandard

“Rename the Q3 orders dataset to Q3 Orders Final”

Rename dataset

rename_dataset

Rename a dataset — change its display name everywhere it appears (catalog, Library, dashboards' source lists). 'Rename the Q3 orders dataset to Q3 Orders Final', 'call the wells table Well Master'. The data, its versions, and everything built on it are untouched; only the name changes. Preview shows old and new before you confirm.

previews → confirmlight

“restore the original row order of \"stress readings\"”

Restore row order

restore_row_order

Rebuild a dataset's served table in the uploaded file's ORIGINAL row order — 'restore the original row order of \"stress readings\"', 'put that dataset back in file order'. For datasets landed before the row-order fix, whose previews and exports show rows out of sequence. Values never change; only the physical order does. Needs the dataset's staged file; refuses honestly when a promoted cleanup has rewritten the table (the file no longer describes it). NOT a sort — the file's own order, and NOT a version restore.

previews → confirmlight

“archive the conversation "Q3 churn digging"”

Archive asset

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 a live API's pause. For datasets, use Archive dataset.

previews → confirmlight

“delete the conversation "Old scratch chat"”

Delete asset

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'). A conversation is soft-deleted and can be restored for a window (say 'restore the conversation …' — Archive asset), after which its messages are purged. Destructive for the rest: 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.

previews → confirmlight

“duplicate the "Sales" dashboard as "Sales — sandbox"”

Duplicate asset

duplicate_asset

Make a COPY of a dashboard, template, theme, transformation or recipe under a new name, owned by you ('duplicate the \"Sales\" dashboard as \"Sales — sandbox\"', 'copy the \"Board Pack\" template', 'duplicate my \"Ocean\" theme'). The copy is a draft you own; the original is untouched. Datasets, connections, live syncs, APIs, scheduled reports and conversations have no copy door yet — asked anyway, the act says why and the way out (a connection copy needs its credential — use Copy on the connector).

previews → confirmlight

Briefing & proactivity

9 skills

“When will I run out of storage?”

What's ahead

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.

light

“Brief me”

Daily briefing

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

light

“How can I improve my sales this quarter?”

Manage engagement

manage_engagement

Open and carry a GOAL ENGAGEMENT — a multi-phase consulting arc for a stated business goal (discover the data, build patterns, interview the real target, plan module by module, one approval per phase, execute, judge the deliverable's form, deliver). Use when the user states an outcome-goal ('how can I improve my sales'), never for a plain data question. A turn the person explicitly FRAMES as a goal — 'Goal: …', 'my goal is', 'help me achieve', 'help me achieve this:', 'work it end to end', 'run it end to end and deliver it' — is THIS act even when a single read could answer it: the framing asks for the loop (interview, plan, nod, delivery on a receipt), not a one-shot answer. Open FIRST on a goal-shaped turn — the open lifts this turn's tool and model bounds for the grounding that follows; then propose with `judged` (the dimensions the estate settles) and ask only what changes the plan. Also the doors of a plan that is running or paused — resume plan ('continue', 'pick up where you paused', 'resume the <name> plan'), pause plan ('pause the running plan'), stop plan ('stop the plan') — from ANY thread; when several could be meant it names the one it would pick and takes a yes, or a name (`plan`). (To SEE engagements, Show engagements is the free read.)

previews → confirmlight

“Show my engagements”

Show engagements

show_engagements

See your goal engagements — phase, questions, modules, budget posture, or one engagement's full receipt by name. An observation — NEVER behind a confirm card.

light

“delete the engagement "Q3 sales push"”

Delete engagement

delete_engagement

PERMANENTLY delete one of your goal engagements from the Library — the record AND its receipt (grounding, questions, modules, judgment, events) are gone; only the org audit trail keeps who/what/extent. Destructive: prefer 'archive the engagement' (reversible) or 'discard the engagement' (keeps the receipt) unless the user explicitly wants it gone. ('delete the engagement \"Q3 sales push\"')

previews → confirmlight

“Work toward weekly data quality above 95 percent”

Manage goals

manage_goals

Create, cancel, retry or accept 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', 'retry the churn goal' (one parked because a step could not be verified). 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.)

previews → confirmlight

“What goals are running?”

Show goals

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

light

“change the weekly sales report to daily”

Manage schedules

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

previews → confirmlight

“show the last 10 runs of the wells report”

Schedule history

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, Manage schedules is the act.)

light

Your estate

14 skills

“where are my dashboards”

Find assets

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

light

“open my revenue dashboard”

Open asset

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.

light

“Reverse that charge”

Reverse a 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.

previews → confirmlight

“Add funds”

Buy usage units

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.

previews → confirmlight

“Did my payment go through?”

Payment state

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.

light

“save this as Q3 Revenue”

Save results

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.

previews → confirmlight

“save these fixes as a recipe called Weekly Dedupe”

Save recipe

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.

previews → confirmlight

“publish my sales dashboard to the org”

Publish asset

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.

previews → confirmlight

“share this dashboard with the data team so they can view”

Share asset

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@example.com edit access to Q3 Revenue', 'share this with everyone'. Grants access without changing the asset's base visibility. The reverse is the same skill with action=revoke: 'stop sharing Q3 Revenue with alex@example.com', 'unshare this with the data team' — reads every grant on the asset, a pipeline's own access rows included.

previews → confirmlight

“Show my portfolio”

Show 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.)

light

“Pause the revenue sync”

Manage portfolio

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

previews → confirmlight

“What has Kaarvi cost me this month?”

Spend report

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.

light

“What will it cost to profile my orders data?”

Project cost

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.

light

“rename this conversation to "Q3 GOR investigation"”

Manage saved conversations

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.

previews → confirmlight

Your workspace

9 skills

“How do I teach you my voice?”

How do I…

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.

light

“What happened in my org this week?”

Audit activity

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.

light

“Enable the governance module for our org”

Request module

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.

previews → confirmlight

“What are my notification settings?”

Notification settings

notification_settings

Show your current notification preferences — 'what are my notification settings?'. Read-only and free; use Manage notifications to change them.

light

“Do not disturb until 2pm”

Manage notifications

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. Also the solution-offer quiet: 'stop offering to arm Verified Outbound' quiets that solution's standing-autonomy offer for you; 'you can offer arming Verified Outbound again' lifts it. Also the decline of an offer Kaarvi VOICED (W-RESID2 GR-18): when the user answers an offer in the conversation — a deck refresh, running an engagement again, a nudge — with a plain 'no', 'not now', 'no thanks', 'don't', or 'stop offering that', call this with decline offer set to the words used for that offer (the deck or engagement name, or the offer's title) so it is dismissed and not raised again; 'bring back the offer about <name>' restores it (restore offer). Asks for confirmation before changing anything; use Notification settings to just look.

previews → confirmlight

“How is Kaarvi AI running right now?”

Platform engines

platform_engines

Which AI engines Kaarvi is running on right now — 'How is Kaarvi AI running right now?', 'is the AI degraded?', 'are you on a backup engine?': the primary and backup engines by position (never a vendor name), which is up or limited, whether changes are running on a backup, and this workspace's boundary for changes on backup engines. Read-only and free; everyone may ask.

free

“keep my changes on the primary AI engine”

Engine boundary

engine_boundary

The two things about the AI engines that are the workspace's to decide — 'keep my changes on the primary AI engine' (changes are held while it is limited), 'allow my changes on backup AI engines' (the default: a change runs on whichever engine is up), and 'retry the AI engines now' (probe every engine again on the next turn). Org admin only; the boundary is stored per workspace.

previews → confirmfree

“act as a data engineer”

Wear a professional lens

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.

previews → confirmlight

“how is the website concierge invitation set up”

Manage site concierge

manage_site_concierge

See or change how the public website's concierge invitation presents itself: which corner it sits in, what it does on phone (yield while it would cover a call-to-action, stay compact, or show the full card), and its invitation line — plus how often it stepped aside for visitors this week. (The call-to-action it yields to is the page's own button — not the outreach's media link, which is the Verified Outbound setup's dial, not this door's.) The AI-disclosure line is fixed by law and always shows. On request it also emails the website seller's evidence report (sessions, leads, visits, copy gaps, copy quality) to the owner now.

previews → confirmlight

Voice & companion

1 skill

“I say 'hey karvee'”

Manage the wake word

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.

previews → confirmlight

Custom skills & integrations

29 skills

“mark incident 42 as resolved in \"Incidents API\"”

Write a record into a connected system

write_back_api

Write ONE record to a connected system through a saved API connection — POST a new record, PUT a replacement, or PATCH fields — at a path under the connection's own address, with the connection's stored credential (never a token in chat), only on a connection whose owner switched on Allow record write-back. 'mark incident 42 as resolved in \"Incidents API\"', 'post the finding to \"Ops webhook\" as a record'. Every write is externally visible the moment it lands, so it always waits for your yes — the card shows the record's values — and a standing grant never signs it. For tickets in your tracker (open, close, comment) use Open or close a ticket in your tracker instead.

previews → confirmlight

“mark every account in \"Dormant accounts\" as dormant in \"CRM API\"”

Write records into a connected system

write_back_records

Write MANY records to a connected system in one act through a saved API connection — one record per row of a dataset, each to its own path under the connection's own address. Needs the connection's name, the dataset, a path template that names the column identifying a record in braces (/accounts/{account id}), the columns to send (a column's name, or field=column) and any field every record gets (status=dormant). PATCH updates fields, PUT replaces, POST creates. 'mark every account in \"Dormant accounts\" as dormant in \"CRM API\"'. At most 500 records an act, only on a connection whose owner switched on Allow record write-back. Before anything leaves, one card shows the connection, the method, the count, the first records with their values and the rows left out; your yes covers exactly that batch and a standing grant never signs it. Each record's outcome comes back as a row; where the system returns what a changed record held before, that is kept as a dataset you can write back. For ONE record use Write a record into a connected system instead.

previews → confirmlight

“draft my outreach emails”

Compose outreach drafts

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.

previews → confirmstandard

“Turn weekly revenue cleanup into a skill”

Compose 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.)

previews → confirmfree

“set up my outbound: track Data Quality and Data Governance”

Set up outbound

configure_outbound

Set up the Verified Outbound solution by talking: track keywords ('track Data Quality and Data Governance'), connect an intent signal source (6sense, Bombora, G2, lead forms, website visitors, or your own data), your contact enrichment (Apollo, Clay, Clay table, ZoomInfo, or your own data), your CRM (HubSpot, Kaarvi-resident funnel, or Zoho CRM), your email provider (Amazon SES, Google Workspace, Microsoft 365, SendGrid, or SMTP), or your tracked links (Kaarvi tracked links) — 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. The outbound dials live here too, the VIDEO CALL-TO-ACTION among them — the video address the outreach carries ('set the video call-to-action to https://…', 'turn the video call-to-action off'); it is not the website concierge's phone behaviour.

previews → confirmlight

“send all my queued outreach”

Send 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. Metered at one usage unit per email handed to your provider (minimum one per run) so your autopilot's allowance counts what went out; the provider bills the delivery itself on your own account.

previews → confirmlight

“find my decision makers”

Find 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 company, per run (your org's reveal ceiling) and per month (the source's monthly budget — a hard stop with a heads-up at 80%). 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. Metered at one usage unit per reveal lookup (minimum one per run) so your autopilot's allowance counts vendor spend; the provider bills the reveal itself on your own account.

previews → confirmstandard

“show my outbound funnel”

Show the 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. It also carries the suppression list — the addresses opted out or blocked, with why and whether the block can be lifted: 'show my suppression list', 'who is opted out of my outreach'. The draft queue (composed emails awaiting release) lives in Show the draft queue, not here. Setup status lives in Set up outbound's show setup, not here.

light

“register my MCP server at https://tools.example.com/mcp as example-tools”

Manage integrations

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.

previews → confirmfree

“publish that pipeline as a skill called churn-score”

Publish skill

publish_skill

Publish one of your pipelines as a named skill the whole organization can invoke by asking for it — or list, disable, enable or remove your published skills. Needs the action; publish needs the pipeline and a name (a description helps routing). Returns the published skill's name and how to invoke it, or the list. Use to turn a proven pipeline into a shared capability; publish/disable/remove are changes and propose a preview.

previews → confirmfree

“what solutions do you have for finance?”

Browse solutions

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.

light

“install the reconciliation sentinel”

Install solution

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.

previews → confirmlight

“uninstall the recon sentinel”

Uninstall solution

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.

previews → confirmlight

“arm autonomy for the recon sentinel”

Arm solution autonomy

arm_solution_autonomy

Arm unattended runs for an installed solution ('run the recon sentinel every morning', 'arm autonomy for the stock-out sentinel', '<the org's word> go'). 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; for an AUTOPILOT solution, arming grants a standing, budget-capped, revocable authorization under which those steps run without per-step confirmation (the confirm card states exactly what it covers) — otherwise uncovered mutations hold for confirmation. Two rungs: '<word> go' / 'arm it' arms DRAFT mode — the chain stops at the draft queue, nothing sends; '<word> go and send' / 'arm outbound sending' arms SEND mode — the queued outreach goes out unattended too. Every run re-checks the pack grant.

previews → confirmlight

“disarm the recon sentinel”

Disarm solution autonomy

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.

previews → confirmlight

“show my draft queue”

Show the 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 an outreach draft's door. The lead funnel (journey stages + KaarviIQ) lives in Show the outbound funnel; setup status in Set up outbound's show setup.

light

“release the draft to Pat Lee”

Release an outreach draft

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. Each release counts one usage unit against your allowance (a vendor lookup attempted — the same unit the autopilot's dispatch counts); your provider bills the send itself.

previews → confirmlight

“pull my intent signals”

Find buying-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.

previews → confirmstandard

“route my leads to my crm”

Route leads to your 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.

previews → confirmstandard

“use my google account for the video part of my film workflow”

Bind capability connection

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

previews → confirmlight

“unbind the voice slot on papercut”

Unbind capability connection

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.

previews → confirmlight

“why did my film stop?”

Provider health

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.

light

“unsubscribe pat@example.org from my outreach”

Suppress a contact

suppress_outbound

Stop all Verified Outbound email to an address, permanently ('unsubscribe pat@example.org', '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.

previews → confirmlight

“open a maintenance ticket for the worst facility in MAINT”

Open or close a ticket in your tracker

manage_ticket

Write back to the connected ticket tracker (Jira): OPEN a ticket in a project with a summary and the findings behind it, CLOSE one (the undo of opening it — it stays on record in the tracker), or COMMENT on one. The credential is the saved Jira API connection, never a token in chat. 'open a maintenance ticket for the worst facility in MAINT', 'close the ticket MAINT-42 — done', 'comment on MAINT-42 with the new downtime figure'. Every ticket opened is externally visible the moment it lands, so it always waits for your yes — a standing grant never signs it.

previews → confirmlight

“allow outreach to pat@example.org again”

Unsuppress outbound

unsuppress_outbound

LIFT a Verified Outbound do-not-email block that your email PROVIDER wrote — a bounce or complaint report, or a refusal at send time ('allow outreach to pat@example.org again', 'that bounce was false — unblock the address'). Only provider-written blocks can be lifted: a person's own opt-out and a block your team set stay in place. Admin only; confirmed before it runs; every lift is receipted with who and why.

previews → confirmlight

“make our brand film”

Videobox make 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.

previews → confirmdeep work

“discard that film run”

Videobox discard 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.

previews → confirmlight

“resume my film run”

Videobox resume 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.

previews → confirmdeep work

“withdraw all my queued outreach drafts”

Withdraw queued outbound

withdraw_queued_outbound

WITHDRAW every queued Verified Outbound draft — the reverse of a compose run. Nothing composed sends; the contacts become eligible for a future compose. Sent, released and held drafts are history and are never touched. Admin only; confirmed before it runs.

previews → confirmlight

And they compose.

“Profile it, fix what you find, then chart rejects by month and keep it fresh” is one sentence to Kaarvi. That used to be four tools, three handoffs and a ticket queue. Here it is planned, executed and verified in a single thread, on the record.