Ask Docs Question
ask_docs_questionFull Description
Ask a question about DuckDB or MotherDuck. Returns answers from official documentation.
Parameters (1 required)
questionstringQuestion about DuckDB or MotherDuck
Connect AI assistants to your MotherDuck data warehouse. Explore, visualize, and manage data using natural language–no SQL skills required. Create Dives: interactive visualizations that let you save and share answers with your team, staying up-to-date with your latest data. Works with real-world data without requiring semantic models or pre-configuration. Your AI assistant acts like a data analyst, exploring, validating, analyzing, and visualizing data iteratively to answer your questions.
ask_docs_questionAsk a question about DuckDB or MotherDuck. Returns answers from official documentation.
questionstringQuestion about DuckDB or MotherDuck
cancel_flight_runCancel an in-flight run of a flight. Identified by the flight UUID and the sequential run number (from list_flight_runs). Returns canceled: true on a successful transition; calling on an already-terminal run or one that doesn't exist returns a tool error.
idstringThe flight UUID
run_numberintegerSequential run number to cancel
create_flightCreate a new MotherDuck flight. Read the flight guide before you create your first flight. A flight is a Python entrypoint (source_code) plus an optional requirements_txt that runs on MotherDuck compute. Optionally provide an access_token_name so the flight can connect to MotherDuck at runtime; omit it to use the default MotherDuck Flights access token. Optionally provide a 5-field cron expression to run on a schedule, and an optional max_runtime_sec to cap how long a run may take. Use flights for ELT/ETL pipelines, loading external data into MotherDuck, refreshing materialized views, or any recurring Python job that reads/writes MotherDuck data.
namestringFlight name (used in UI and logs)
source_codestringPython source for the flight entrypoint (a single-file script with a top-level `def main(): ...`)
access_token_namestringOptional name of a MotherDuck access token label to use at runtime. Omit to use the default MotherDuck Flights access token. Run `SELECT * FROM md_access_tokens()` to list available labels.
configobjectOptional non-secret key/value pairs made available as env vars
flight_secret_namesarrayOptional list of MotherDuck secret names made available as env vars
max_runtime_secintegerOptional per-run timeout in seconds; 0 means no timeout. Omit to use your plan's default. Requests above your plan's cap are rejected.
requirements_txtstringOptional `requirements.txt` contents for pip install (one pinned package per line).
schedule_cronstringOptional 5-field cron expression (UTC). Omit to create an on-demand-only flight.
create_guideCreate a new guide — a markdown document that agents read to answer this org's data questions correctly (metric definitions, join/filter conventions, pitfalls). Group related guides with a lowercase kebab-case topic (e.g. 'revenue-billing' or 'core/metrics'); omit it for a guide without a topic. Visibility is controlled by access: 'user' (private, default) or 'organization' (org-wide, permission-gated). Personal dive/flight style guides belong under topic 'dives' / 'flights' with access 'user'. Attach references to the 1–5 objects the guide is authoritative about.
contentstringThe full markdown body.
titlestringHuman-readable title.
accessstring'user' (private, default) or 'organization' (org-wide, permission-gated).
userorganizationchange_commentstringOptional note describing this initial version.
descriptionstringShort one-line summary shown in the index.
external_idstringOptional caller-provided id for this version (e.g. a git SHA).
referencesarrayStructured references to the objects this guide explains.
topicstringSlash-separated grouping label, e.g. 'revenue-billing' or 'core/metrics' (no leading/trailing slash). Omit for no topic.
delete_diveDelete a dive by ID. This action is permanent and cannot be undone.
idstringThe unique identifier of the dive to delete
delete_flightPermanently delete a flight, its versions, schedule, and run history. This action cannot be undone.
idstringThe flight UUID
delete_guideSoft-delete a guide while preserving its version history. Identify it by uuid.
uuidstringThe guide's UUID, as returned by list_guides or a previous mutation.
dive_queryExecute a read-only DuckDB query on behalf of a dive. This tool is used by the dive viewer and is not intended for direct use by the AI assistant.
sqlstringSQL query to execute
databasestringDatabase name to query
dive_idstringDive UUID for fallback query attribution
edit_dive_contentEdit a dive's content by applying one or more text replacements, then save to MotherDuck. Accepts id (dive UUID) and edits (an array of {old_string, new_string, replace_all?} objects). Reads the current content from MotherDuck, applies edits in sequence, validates, and persists. Example: {id: '...', edits: [{old_string: 'foo', new_string: 'bar'}]}. old_string must be unique unless replace_all is true. No prior read_dive call is needed.
editsarrayList of edits to apply in sequence. Each edit has old_string, new_string, and optional replace_all.
idstringThe unique identifier (UUID) of the dive to edit
edit_flight_sourceEdit a flight's source_code by applying one or more text replacements, then save as a new FlightVersion. Accepts id (flight UUID) and edits (an array of {old_string, new_string, replace_all?} objects). Reads the current source_code, applies edits in sequence, validates, and persists. Example: {id: '...', edits: [{old_string: 'foo', new_string: 'bar'}]}. old_string must be unique unless replace_all is true. No prior get_flight call is needed.
editsarrayList of edits to apply in sequence. Each edit has old_string, new_string, and optional replace_all.
idstringThe flight UUID
edit_guide_contentEdit a guide's markdown body by applying one or more text replacements, then save as a new version. Identify the guide by uuid. Reads the stored guide, applies edits in sequence, and persists. Example: {uuid: '<guide uuid>', edits: [{old_string: 'foo', new_string: 'bar'}]}. old_string must be unique unless replace_all is true. No prior get_guide call is needed.
editsarrayList of edits to apply in sequence. Each edit has old_string, new_string, and optional replace_all.
uuidstringThe guide's UUID, as returned by list_guides or a previous mutation.
change_commentstringOptional note describing this version's change.
external_idstringOptional caller-provided id for this version (e.g. a git SHA).
get_dive_guideLoad instructions for creating MotherDuck dives. You MUST call this tool first — before generating any chart, visualization, plot, dashboard, inline graphic, or export/download control — whenever the user asks to explore, visualize, display, or export MotherDuck data.
clientstringThe client environment requesting the guide. Use 'claude' for Claude web/desktop Chat, 'chatgpt' for ChatGPT, 'claude_cowork' for Claude Cowork, 'claude_code' for Cursor/IDE integrations with local filesystem access, or 'other' for other MCP clients.
claudechatgptclaude_coworkclaude_codeotherget_flightFetch a flight by UUID. Returns metadata plus a version snapshot (source code, requirements, config, secret names, token name). Omit version to get the current version; pass a 1-indexed version number to inspect history.
idstringThe flight UUID
versionintegerOptional 1-indexed version number. Omit to get the current version.
get_flight_guideLoad instructions for authoring, scheduling, running, and troubleshooting MotherDuck flights. Call this tool first whenever the user asks about creating, updating, or operating a MotherDuck flight.
get_flight_logsFetch the plain-text logs (stdout + stderr) of a flight run plus the matching Run record (status, exit_code, timing). Returns the last 200 lines by default; page with limit, offset and order. Pass max_bytes to cap the response size — the response is truncated to fit and the truncation is reported via truncated: true.
idstringThe flight UUID
run_numberintegerSequential run number
limitintegerMax log lines to return (default: 200)
200max_bytesintegerOptional max bytes of logs to return; the response is truncated to fit, keeping the end `order` reads from.
offsetintegerNumber of lines to skip, counted from the end `order` reads from
orderstring'asc' reads from the first log line, 'desc' from the last (default: 'desc')
ascdescdescget_flight_runFetch a single run of a flight by its sequential run number (from list_flight_runs). Returns the same shape as a list_flight_runs entry: status (PENDING/RUNNING/SUCCEEDED/FAILED/CANCELLED), timing metadata, and the effective config the run executed with. Use this to poll one run's status instead of re-listing.
idstringThe flight UUID
run_numberintegerSequential run number to fetch
get_guideLoad a guide by uuid. Guides are curated markdown documents about this organization's data (metric definitions, conventions, pitfalls). Find a guide's uuid with list_guides or via get_query_guide (start there before writing SQL), get_dive_guide, or get_flight_guide.
uuidstringThe guide's UUID, as returned by list_guides or a previous mutation.
versionintegerOptional version number to read; defaults to the current version.
get_query_guideCall this before writing SQL to answer a data question. Returns this organization's query guidance: what guides exist (curated markdown documents about the data — metric definitions, join/filter conventions, pitfalls), how to navigate them, and an overview of the available guide topics.
get_short_lived_tokenReturns a short-lived token and connection details for the MotherDuck database endpoint.
list_columnsList all columns of a table or view with their types and comments.
databasestringDatabase name
tablestringTable or view name
limitintegerMax results to return (default: 100)
schemastringSchema name (optional, defaults to 'main')
list_databasesList all databases in your MotherDuck account. Shows each database's alias, type, and its url — a fully qualified MotherDuck database name (e.g. md:my_db) or share URL (e.g. in guide references). Optionally filter by keywords.
keywordsstringOptional keywords to filter databases by name (case-insensitive, any word can match)
limitintegerMax results to return (default: 100)
list_divesList all dives in MotherDuck. Dives are interactive React data apps that query live data. Returns metadata including current_version and status. Each dive has a governance status: 'endorsed' (admin-approved org source of truth — prefer these), 'ready' (author-reviewed), 'draft' (work in progress; the default for new dives), or 'archived' (retired; excluded unless include_archived is true). Results are ordered endorsed, ready, draft, then archived, most recently updated first. Use read_dive with the optional version parameter to retrieve a specific historical version. Optionally filter by keywords.
include_archivedbooleanInclude archived Dives in the results. Defaults to false. Archived Dives remain readable via read_dive by id.
include_org_sharesbooleanInclude Dives shared with your organization. Defaults to false.
keywordsstringOptional keywords to filter dives by title or description (case-insensitive, all words must match)
limitintegerMax results to return (default: 100)
list_flight_runsList executions of a flight, newest first. Each run has a sequential number, status (PENDING/RUNNING/SUCCEEDED/FAILED/CANCELLED), timing metadata, and the effective config it ran with (the flight version's config merged with any per-run overrides).
idstringThe flight UUID
limitintegerMax results (default: 50)
50offsetintegerNumber of runs to skip, for paging back through history
list_flight_versionsList the immutable versions of a flight, newest first. Each update to source_code / requirements_txt / config / access_token_name / flight_secret_names produces a new version.
idstringThe flight UUID
limitintegerMax results (default: 50)
50offsetintegerNumber of versions to skip, for paging back through history
list_flightsList MotherDuck flights. Org admins see every flight in their organization (with owner_name identifying whose is whose); everyone else sees only their own. Returns metadata for each flight including schedule and current version. Optionally filter by keywords matching the flight name.
keywordsstringOptional keywords to filter by flight name (case-insensitive, all words must match). Filters within the page selected by limit/offset, not across every flight.
limitintegerMax results to return (default: 50)
50offsetintegerNumber of flights to skip, for paging through results
owner_onlybooleanRestrict the listing to flights you own. Only meaningful for org admins, who see the whole org's flights by default; ignored for everyone else.
list_guidesBrowse this organization's curated guides — markdown documents that capture organization and personal context about the data in MotherDuck. Called with no arguments, lists the root level: guides without topics plus every topic (folder) with its guide count. Pass topic to open a folder — you get the guides stored at that topic and the nested topics below it. Read a guide in full with get_guide(uuid).
topicstringOpen this folder, e.g. 'revenue-billing' or 'core/metrics' (no leading/trailing slash). Omit for the root level.
list_macrosList all macros (table and scalar macros) in a MotherDuck database, with their schema and parameters. Optionally filter by schema or keywords.
databasestringDatabase name to list macros from
keywordsstringOptional keywords to filter macros by name (case-insensitive, any word can match)
limitintegerMax results to return (default: 100)
schemastringSchema name (optional, defaults to all schemas)
list_sharesList all database shares that have been shared with you. Returns share names and URLs. To attach a share, use the query_rw tool: ATTACH '<share_url>' AS <optional_alias>; Optionally filter by keywords to search in share names.
keywordsstringOptional keywords to filter shares by name (case-insensitive, any word can match)
limitintegerMax results to return (default: 100)
list_tablesList all tables and views in a MotherDuck database with comments. Optionally filter by keywords. Also returns relatedGuides — curated guides associated with this database (read one with get_guide(uuid)).
databasestringDatabase name to list tables from
keywordsstringOptional keywords to filter tables/views by name or comment (case-insensitive, any word can match)
limitintegerMax results to return (default: 100)
schemastringSchema name (optional, defaults to all schemas)
list_viewsList all views in a MotherDuck database, with their schema, comment, and column count. Optionally filter by schema or keywords.
databasestringDatabase name to list views from
keywordsstringOptional keywords to filter views by name or comment (case-insensitive, any word can match)
limitintegerMax results to return (default: 100)
schemastringSchema name (optional, defaults to all schemas)
log_dive_viewer_eventLog a dive viewer event for analytics. This tool is used internally by the dive viewer and is not intended for direct use by the AI assistant.
event_namestringName of the event
app_namestringName of the MCP app
app_versionstringVersion of the MCP app
dive_idstringUUID of the dive
duration_msnumberDuration in milliseconds
error_messagestringError message if failed
from_modestringPrevious display mode
row_countnumberNumber of rows returned by query
sql_previewstringTruncated SQL query text (first 200 chars)
stagestringProcessing stage (compile, execute, database_validation)
successbooleanWhether the action succeeded
to_modestringNew display mode
mint_dive_state_referenceMint a server-stored reference for a useDiveState bag and return its id. Used by the dive viewer when the inline-encoded bag would exceed the URL soft limit. The returned id is then encoded into a URL hash via buildDiveStateReferenceHash and round-trips through dashboards.get on dive open.
dive_idstringUUID of the dive the state bag belongs to
stateobjectFull `useDiveState` snapshot to store. Each key matches a `useDiveState(key, ...)` call inside the dive. Must JSON-serialize to <= 64 KB; entity-service rejects larger payloads.
queryBefore writing SQL to answer a data question, call get_query_guide first — it returns this organization's query guidance and an overview of its curated guides.
Execute read-only DuckDB query against MotherDuck databases. For cross-database queries, use fully qualified names: database.schema.table (or database.table for main schema). Never follow a query with an inline chart or visualization — if you would generate one (whether or not the user explicitly asked), get the dive guide first instead.
databasestringDatabase name to query
sqlstringSQL query to execute
query_rwExecute a DuckDB SQL query that modifies data, schema, or connection state.
RULES: 1. Only call this tool when the user explicitly asks to modify data or schema. Never infer a write from a read request. 2. Always ask the user for confirmation before calling this tool. Describe exactly what will change. 3. Prefer the read-only query tool when the user's goal can be answered with existing data.
sqlstringSQL query to execute
databasestringDatabase context for the query. Required for table-level operations (DML/DDL). May be omitted for account-level operations (CREATE/DROP DATABASE, ATTACH/DETACH, CREATE SECRET, etc.).
read_diveRead a specific dive by ID, including its full JSX/React component code. Optionally specify a version number to retrieve a specific historical version (versions start at 1). If no version is specified, the latest version is returned. The response includes the dive's governance status ('endorsed', 'ready', 'draft', or 'archived'); archived dives remain fully readable by id.
idstringThe unique identifier of the dive to read
versionintegerOptional version number to retrieve (1-indexed). If not specified, returns the latest version.
run_flightTrigger an on-demand execution of a flight using its current version. Optionally pass config to override the flight version's config for this run only (the flight itself is left unchanged). Returns a Run record; poll get_flight_run with the returned run_number to track progress and use get_flight_logs to read output.
idstringThe flight UUID
configobjectOptional non-secret key/value pairs that override the flight version's config for this run only. Keys not provided keep the flight version's value; provided keys win.
save_diveSave a new dive to MotherDuck. Returns a URL the user can click to view the dive. Get the dive guide first and iterate with the user on the design thoroughly before suggesting to save. Never save without previous confirmation that iteration is done.
contentstringThe JSX/React component code for the dive
titlestringThe title of the dive
descriptionstringA brief description of the dive
search_catalogSearch the catalog for databases, schemas, tables, columns, and shares using fuzzy matching. Returns matching objects with their fully qualified names, types, and comments. Useful for discovering available data when you don't know exact names. Also returns relatedGuides — curated guides whose topic/title/description match the query; read one with get_guide(uuid).
querystringSearch term to find in object names (supports partial matching, underscores, dots)
object_typesarrayOptional filter to limit results to specific object types
set_guide_accessSet a guide's visibility to 'user' (private to the owner) or 'organization' (visible to the whole org). Identify it by uuid. Org-wide scoping is permission-gated.
accessstring'user' (private) or 'organization' (org-wide, permission-gated).
userorganizationuuidstringThe guide's UUID, as returned by list_guides or a previous mutation.
share_dive_dataShare the data for a dive with your organization. Creates org-scoped shares for owned databases used in the dive, and updates the dive so others in the organization can view it.
diveIdstringThe unique identifier (UUID) of the dive
update_diveUpdate an existing dive's title, description, or content. Returns a URL the user can click to view the updated dive. At least one field must be provided.
idstringThe unique identifier (UUID) of the dive to update
contentstringNew JSX/React component code
descriptionstringNew description for the dive
titlestringNew title for the dive
update_flightUpdate a flight. Any subset of name, source_code, requirements_txt, schedule_cron, config, access_token_name, flight_secret_names, max_runtime_sec, or instance_type may be provided. Updates to source_code/requirements_txt/config/flight_secret_names/access_token_name/max_runtime_sec/instance_type create a new FlightVersion; name and schedule_cron are metadata-only. Pass schedule_cron as "" (empty string) to remove the schedule; omit it to leave it unchanged.
idstringThe flight UUID
access_token_namestringNew MotherDuck access token label to use at runtime. Omit to leave the current token unchanged.
configobjectReplacement config map (full replace)
flight_secret_namesarrayReplacement list of MotherDuck secret names (full replace)
instance_typestringNew runner size, named after its memory in GB: F4, F16 or F32. Omit to leave it unchanged. Sizes above your plan's cap are rejected.
F4F16F32max_runtime_secintegerNew per-run timeout in seconds; 0 means no timeout. Omit to leave it unchanged. Requests above your plan's cap are rejected.
namestringNew flight name
requirements_txtstringNew requirements.txt contents
schedule_cronstringNew cron expression (UTC, 5 fields). Empty string clears the schedule.
source_codestringNew Python entrypoint source (single-file)
update_guideAppend a new version to an existing guide, identified by uuid. Omit content to keep the current text and just change metadata such as references. A supplied references list replaces the existing one (pass [] to clear them, omit to carry them forward). For small in-place edits use edit_guide_content. Use create_guide to make a new guide, update_guide_metadata to retitle or re-topic.
uuidstringThe guide's UUID, as returned by list_guides or a previous mutation.
change_commentstringOptional note describing this version's change.
contentstringNew full markdown body. Omit to carry the current version's content forward.
external_idstringOptional caller-provided id for this version (e.g. a git SHA).
referencesarrayReplaces the guide's references. Pass [] to clear; omit to carry them forward.
update_guide_metadataChange a guide's title, description, or topic without appending a content version. Identify it by uuid. Pass an empty description to clear it; pass an empty topic to remove the topic.
uuidstringThe guide's UUID, as returned by list_guides or a previous mutation.
descriptionstringNew one-line summary. Pass an empty string to clear it.
titlestringNew title.
topicstringNew grouping label, e.g. 'revenue-billing' or 'core/metrics' (no leading/trailing slash). Pass an empty string to remove the topic.
view_diveOpen and render a MotherDuck Dive as a live MCP app with interactive charts. Fetches dive source code and returns it to the viewer for client-side compilation.
dive_idstringUUID of the dive to open
initial_stateobjectSeed the dive's initial UI state for this preview. When supplied, each key is read by the corresponding `useDiveState` call inside the dive. Useful when the user describes a specific view ("show me this filtered to last quarter") — pass that selection as initial_state instead of re-saving the dive. State stays in memory for the preview session; interactive changes do not round-trip back to the MCP host. Example shape: { "region": "us-east-1", "filters": ["alpha"], "count": 5 }. Do not use for ephemeral UI state (input drafts, dialog open/close) — those use plain useState inside the dive and aren't part of the dive-state bag.
required_resourcesarrayOverride the dive's declared required resources for this preview. When supplied, the dive viewer attaches this list in place of the dive's source-declared REQUIRED_DATABASES. Useful when the user wants to preview against a specific share or embed configuration ("render this against the customer's analytics database instead of mine"). Example shape: [{ "url": "md:customer_analytics", "alias": "analytics" }]. Do not use as a substitute for fixing the dive's source — if the dive should permanently target different databases, edit the source and update_dive instead.