CLI and MCP capability coverage¶
Verified source implementation: 2026-10-17. All 46 UI coverage IDs are accounted for:
36 implemented equivalents and 10 explicitly policy-restricted capabilities. Restricted
rows have working permitted reads/local routes; they do not claim full MCP parity.
gravetrail capabilities and MCP get_capabilities return this versioned inventory,
including scope, aggregate effects, required grants and current launch authorization.
Follow next_cursor; availability does not mean the current caller has permission.
These 46 IDs group UI capabilities; they are not command/tool counts. The registered interface has 98 CLI command routes, 29 CLI groups, 78 MCP tools, 2 concrete resources, 4 resource templates and 1 prompt (verified 2026-10-18). The CLI and MCP guides list every route/tool, including basic discovery commands outside this UI capability matrix. Documentation tests compare those references with actual registrations and inputs.
Use CLI guide for command options/examples and MCP integration
for typed schemas and transport setup. Every workspace operation selects an explicit ID.
Use --home at launch and keep one DuckDB owning process per home. Stop that owner before
opening the same home with another process; separate test homes may run concurrently.
Read-only is the default. Write, configuration, outbound AI and application authority are
independent startup grants. --allow-admin is local CLI only, requires unrestricted scope
and cannot be accepted by MCP. Workspace settings can revoke access immediately. MCP may
tighten privacy/access settings; it cannot expand its own policy. Application writes need
unrestricted --allow-write --allow-config-write --allow-application-config.
Profile/routing reads and saves, chunk/review previews, reports and deterministic graph
queries make zero provider calls. Discovery, connection tests and explicit AI requests need
--allow-llm, exact --allowed-llm-origin and approved --allowed-credential-ref names,
in addition to write/source/privacy gates where applicable. The catalog aggregates effects
for each capability; an ordinary read within a mixed capability does not require its write grant.
Never put a credential value in arguments, patches, profiles or MCP payloads. Use a read-only
named launch variable, hidden per-invocation CLI input, or UI session input. Runtime bindings
are scoped to workspace/profile, expire on profile changes and clear on close; UI credentials
are separate. Fallback profiles resolve their own approved references. No environment mutation
is used for session credentials. Redirects are refused.
| ID | UI capability | CLI routes | MCP tools | State / restriction |
|---|---|---|---|---|
| P01 | List/get/create/edit/remove provider profiles; name/provider/URL/model/reference/auth/timeout/retries/max_tokens/context_chars/temperature/structured/Azure API version | providers listproviders getproviders saveproviders remove |
list_provider_profilesget_provider_profilesave_provider_profileremove_provider_profile |
Implemented |
| P02 | Session connect/status/clear; reference compatibility and restart behavior | providers credentials statusproviders testai request |
connect_runtime_referenceget_runtime_connection_statusclear_runtime_connection |
Restricted: MCP binds only an approved named launch reference. Raw credentials use hidden per-invocation CLI input or a UI session; never tool arguments. |
| P03 | Model discovery with sanitized results | providers models |
discover_provider_models |
Implemented |
| P04 | Actual model connection test and sanitized usage/failure | providers test |
test_provider_connection |
Implemented |
| P05 | Default profile, each of five task routes and ordered fallback profiles | providers routing getproviders routing update |
get_model_routingupdate_model_routing |
Implemented |
| A01 | Selected evidence analysis: SQL lineage, SAS lineage, lineage validation, column usage, code explanation | ai request |
request_ai_assistance |
Implemented |
| A02 | Offline statement chunk preview, selected chunk/range and budget information | ai chunks |
preview_ai_chunks |
Implemented |
| A03 | Unresolved warning/error review queue, recommended source context, custom bounds and explicit AI review | ai review listai review previewai review request |
list_review_candidatespreview_diagnostic_reviewrequest_diagnostic_review |
Implemented |
| A04 | Saved AI result list/get, outcomes/quarantine, source-job/hash warnings, advisory download and AI activity/usage/duration | ai results listai results getai results exportai activity |
list_ai_resultsget_ai_resultexport_ai_resultget_ai_activity |
Implemented |
| A05 | Explicit validated lineage merge as inferred and graph refresh; no advisory merge | ai merge |
merge_ai_claims |
Implemented |
| S01 | Default SQL dialect, per-folder/per-extension overrides | settings schemasettings getsettings update |
get_settings_schemaget_workspace_settingsupdate_workspace_settings |
Implemented |
| S02 | Case-sensitive identities, wildcard expansion, CSV sample rows | settings schemasettings getsettings update |
get_settings_schemaget_workspace_settingsupdate_workspace_settings |
Implemented |
| S03 | SAS library mappings, static macros, default job/session and folder job assignments | settings schemasettings getsettings update |
get_settings_schemaget_workspace_settingsupdate_workspace_settings |
Implemented |
| S04 | Saved minimum confidence, include_inferred, diagnostic visibility, reanalysis mode | settings schemasettings getsettings update |
get_settings_schemaget_workspace_settingsupdate_workspace_settings |
Implemented |
| S05 | max_file_mb1–100, max_files1–100000, parse_workers1–8 | settings schemasettings getsettings update |
get_settings_schemaget_workspace_settingsupdate_workspace_settings |
Implemented |
| S06 | AI workspace concurrency1–4, process cap8, chunk_chars500–100000 | settings schemasettings getsettings update |
get_settings_schemaget_workspace_settingsupdate_workspace_settings |
Implemented |
| S07 | external_llm, allow_full_source, max_context_chars500–100000, redact_secrets, llm_history, retention_days1–3650 | settings schemasettings getsettings update |
get_settings_schemaget_workspace_settingsupdate_workspace_settings |
Restricted: MCP may tighten privacy. Enabling transmission/full source/history, increasing disclosure/retention budgets or disabling redaction requires local CLI --allow-admin or UI. |
| S08 | Application logging DEBUG/INFO/WARNING/ERROR, persisted per home | application logging getapplication logging update |
get_application_loggingupdate_application_logging |
Implemented |
| S09 | Agent enabled/write/source permissions, default detail, max_chars512–100000, audit_reads | settings schemasettings getsettings update |
get_settings_schemaget_workspace_settingsupdate_workspace_settings |
Restricted: MCP cannot enable disabled access/source/write, increase detail/response budgets or disable read auditing. Use local administrator CLI/UI. |
| S10 | Actual local MCP-handler check, available schemas and generated Codex/Claude stdio/HTTP examples | agent inspectagent self-testagent client-config |
get_agent_setuptest_local_agent_access |
Implemented |
| W01 | Rename existing workspace and edit description | workspace update |
update_workspace |
Implemented |
| W02 | Export allowed configuration and create new workspace from v1/v2 configuration; exclude profiles/secrets/privacy/source/history | workspace config exportworkspace config import |
export_workspace_configurationimport_workspace_configuration |
Implemented |
| W03 | Storage locations/home status and current browser home selection equivalent | runtime info |
get_runtime_info |
Restricted: No live server home switch. Relaunch CLI/MCP with an authorized --home; UI changes its current browser session only. |
| W04 | Analysis and ingestion run lists/details, inventory file_size/encoding/metadata and import diagnostics | runs listruns getingestions listingestions getsource listsource metadata |
list_analysis_runsget_analysis_runlist_ingestion_runsget_ingestion_runsearch_source_codeget_source_metadata |
Implemented |
| W05 | Baseline/comparison run diff and JSON download | runs compareexport report |
compare_analysis_runsexport_report |
Implemented |
| V01 | Eighteen theme presets, detected/configured/loaded theme and explicit apply | application theme listapplication theme getapplication theme apply |
list_theme_presetsget_application_themeapply_application_theme |
Implemented |
| V02 | Saved graph node limit10–1000, traversal depth1–30, tree expansion0–30, upstream/downstream/combined, collapse temporary | settings schemasettings getsettings update |
get_settings_schemaget_workspace_settingsupdate_workspace_settings |
Implemented |
| V03 | Graph labels compact/full/hidden, semantic/neutral palette, width1–5, source complete/relevant and line numbers | settings schemasettings getsettings update |
get_settings_schemaget_workspace_settingsupdate_workspace_settings |
Implemented |
| V04 | Interactive graph/tree/edge/node focus, expand/collapse, direct column usage and bounded column transformation lineage with roles, source evidence and coverage | lineage graphcolumns usagecolumns catalogcolumns lineage |
get_graph_dataget_column_usageget_transformation_columnsget_column_lineage |
Implemented |
| R01 | Data dictionary: declared SQL types, sampled CSV types, fallback direct references, provenance and unknowns | dictionary list |
get_data_dictionary |
Implemented |
| R02 | Declared schema columns plus original DDL evidence | assets schema |
get_asset_schema |
Implemented |
| R03 | Overview hotspots, isolated/temporary assets, cyclic groups and parsing-status counts | workspace health |
get_workspace_health |
Implemented |
| R04 | Standalone stored-lineage evidence check (does not analyze or repair) | lineage validate |
validate_stored_lineage |
Implemented |
| R05 | Dependency paths in both directions, max_paths1–500, depth, temporary view, boundaries and exports | lineage pathsexport paths |
get_dependency_pathsexport_dependency_paths |
Implemented |
| R06 | Step-wise lineage rows/logical dependency order with evidence; no inferred runtime order | lineage steps |
get_lineage_steps |
Implemented |
| R07 | Code search matching line numbers/snippets and report export, beyond current metadata-only file search | source searchexport report |
search_source_codeexport_report |
Implemented |
| E01 | Interactive offline graph HTML and graph visualization JSON with appearance | export graph |
export_graph |
Implemented |
| E02 | Relevant original source ZIP, selected original file download and historical evidence versions | export sourcessource download |
export_source_bundleexport_original_source |
Implemented |
| E03 | Inventory/dictionary/column/impact/code-search/run-comparison CSV/JSON/HTML reports matching available UI formats | export report |
export_report |
Implemented |
| C01 | Cleanup counts/estimates and all existing workspace-category previews/applies/reset/deletion | cleanup inspectcleanup sourcescleanup lineagecleanup columnscleanup aicleanup historycleanup jobscleanup resetcleanup workspaceworkspace reset |
inspect_cleanuppreview_cleanup |
Restricted: MCP cleanup is read-only. Guarded local CLI apply needs a fresh preview, typed name and full-home backup. |
| C02 | Shared parser/Streamlit caches, orphan blobs and full recognized application-data reset | cleanup inspectcapabilities |
inspect_cleanuppreview_cleanup |
Restricted: Shared cache/orphan/application apply is UI-only. Authorized unrestricted previews expose estimates, never apply tokens or paths. |
| C03 | History retention preview, archive eligibility, archive list, local archive and recovery restore | history previewhistory archivehistory archiveshistory restore |
preview_history_archivelist_history_archives |
Restricted: MCP may preview/list history archives only. Archive/restore is an explicit guarded local CLI/UI action. |
| C04 | Stale staging preview, selected cleanup, age24–8760h, recovery list/restore | staging previewstaging cleanstaging recoveriesstaging restore |
preview_staging_cleanuplist_staging_recoveries |
Restricted: MCP may preview/list staging recoveries only. Clean/restore is an explicit guarded local CLI/UI action. |
| C05 | Automatic expired staging preference; only app-created files,24h,100 files/25MB per visit | settings getsettings updatestaging clean |
get_workspace_settingsupdate_workspace_settingspreview_staging_cleanup |
Restricted: MCP may read/disable the automatic preference, never enable or execute it. Automatic cleanup runs only on the existing opt-in UI event. |
| M01 | Database integrity/storage, checkpoint, full-home backup, backup list/download, new-home restore | maintenance inspectmaintenance backupmaintenance checkpointmaintenance restoremaintenance backupsmaintenance download |
inspect_database_maintenancelist_runtime_backups |
Restricted: MCP exposes authorized unrestricted metadata only. Checkpoint/backup/restore and backup download are local CLI/UI; restore requires a new home. |
| I01 | Browser ZIP/folder uploads and file inspection | ingestsource listsource metadatasource download |
ingest_sourcessearch_source_codeget_source_metadataexport_original_source |
Implemented |
Artifacts use managed IDs, home/workspace binding, exact source versions, SHA-256 and bounded base64 reads (at most 16 KiB before encoding and the response budget). Files cap at 64 MiB. Source authorization is checked again on retrieval, including saved exports after revocation. CLI downloads create a new destination exclusively and verify the assembled hash. Unsupported kind/format pairs fail; no arbitrary file read/write or backup retrieval MCP tool exists.
Settings/profile patches require expected_revision; refresh stale state before retrying.
AI requests pin original hash/job and explicit line bounds. Schema/quote failures stay
quarantined. Only validated lineage tasks may merge, always as inferred relationships;
repeat merge is idempotent. A committed merge with failed graph refresh reports retry required.
Synchronous requests have bounded concurrency/timeouts; busy requests refuse without queuing.
After an ambiguous disconnect, inspect saved activity before retrying: provider billing is
not exactly once. Summary pages omit source-bearing details; exact evidence is an explicit,
separately authorized request. Respect analysis_current, complete, boundaries and cursors.
General cleanup requires a fresh preview, explicit local confirmation and successful full-home backup. History/staging journals are specialized recovery, not general undo. Restore full-home archives only into a new destination. Shared cache/orphan/application removal stays UI-only; MCP maintenance stays read-only. Reading settings/recoveries never triggers automatic cleanup. Runtime reset and schema removal remain separate operations.
The checked-in capability fixture is tested against actual Typer routes/help, MCP schemas and authorization. The testing guide describes parity checks for transports, the running UI, both real ZIPs and live providers.