{"ok":true,"site":{"host":"webmcp-happy-coffee.pages.dev","url":"https://webmcp-happy-coffee.pages.dev/","type":"live","desc":"Data Quality","tools":[{"name":"get_portal_snapshot","kind":"answer","impl":"imperative","description":"Get a versioned, screen-independent map of the Happy Coffee portal: routes, generated-data counts, safeguards, and recommended next actions. Call this first to understand the portal without scraping the UI.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/datasets","/sources","/pipelines","/costs"]},{"name":"list_data_sources","kind":"answer","impl":"imperative","description":"List generated portal data sources with connection health and linked dataset IDs. Returns a versioned JSON contract; no visual inspection is required.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"query":{"type":"string"},"statuses":{"type":"array","items":{"type":"string","enum":["Connected","Degraded","Disconnected"]}}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/datasets","/sources","/pipelines","/costs"]},{"name":"inspect_data_source","kind":"act","impl":"imperative","description":"Inspect one data source, its health metadata, and datasets linked to its system.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/datasets","/sources","/pipelines","/costs"]},{"name":"list_quality_checks","kind":"answer","impl":"imperative","description":"List generated quality-check executions by dataset, text, severity, result, or check type. Returns a versioned JSON contract.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"datasetId":{"type":"string"},"query":{"type":"string"},"severities":{"type":"array","items":{"type":"string","enum":["Info","Warning","Error","Critical"]}},"results":{"type":"array","items":{"type":"string","enum":["Passed","Warning","Failed"]}},"checkTypes":{"type":"array","items":{"type":"string","enum":["Freshness","Schema","Volume","Accuracy","Completeness"]}},"limit":{"type":"number"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/datasets","/sources","/pipelines","/costs"]},{"name":"inspect_quality_check","kind":"act","impl":"imperative","description":"Inspect one quality-check execution, including its rule, message, metadata, and related dataset.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/datasets","/sources","/pipelines","/costs"]},{"name":"get_dataset_lineage","kind":"answer","impl":"imperative","description":"Return named lineage nodes and edges for a dataset without relying on the visual lineage graph.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"datasetId":{"type":"string"}},"required":["datasetId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/datasets","/sources","/pipelines","/costs"]},{"name":"preview_dataset_data","kind":"answer","impl":"imperative","description":"Return a bounded, column-selectable preview of generated dataset sample data.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"id":{"type":"string"},"limit":{"type":"number"},"offset":{"type":"number"},"columns":{"type":"array","items":{"type":"string"}}},"required":["id"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/datasets","/sources","/pipelines","/costs"]},{"name":"list_pipeline_runs","kind":"answer","impl":"imperative","description":"List pipeline runs with stable IDs, bounded pagination, statuses, and mock-environment context.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"pipelineId":{"type":"string"},"statuses":{"type":"array","items":{"type":"string","enum":["Success","Failed","Running","Cancelled"]}},"limit":{"type":"number"},"offset":{"type":"number"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/datasets","/sources","/pipelines","/costs"]},{"name":"inspect_pipeline_run","kind":"act","impl":"imperative","description":"Inspect one pipeline run and its logs without relying on the expanded Runs UI.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"pipelineId":{"type":"string"},"runId":{"type":"string"}},"required":["pipelineId","runId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/datasets","/sources","/pipelines","/costs"]},{"name":"list_cost_entries","kind":"answer","impl":"imperative","description":"List bounded, filterable infrastructure cost entries with totals and stable entity IDs.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"dateRange":{"type":"string","enum":["7","15","30","60","90"]},"category":{"type":"string","enum":["Storage","Compute","Query","Transfer","Licensing","Infrastructure"]},"entityType":{"type":"string","enum":["Dataset","Pipeline","Source"]},"entityId":{"type":"string"},"search":{"type":"string"},"limit":{"type":"number"},"offset":{"type":"number"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/datasets","/sources","/pipelines","/costs"]},{"name":"get_development_workspace_status","kind":"answer","impl":"imperative","description":"Start and inspect the browser-local DuckDB workspace without waiting for or scraping the UI. Returns session expiry and available tables.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/datasets","/sources","/pipelines","/costs"]},{"name":"describe_development_table","kind":"answer","impl":"imperative","description":"Return the schema of a happy_coffee catalog table or workspace temporary table before writing SQL.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"schema":{"type":"string","enum":["happy_coffee","workspace"]},"name":{"type":"string"}},"required":["schema","name"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/datasets","/sources","/pipelines","/costs"]},{"name":"preview_development_table","kind":"answer","impl":"imperative","description":"Return a bounded DuckDB table preview without needing to read the visible results grid.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"schema":{"type":"string","enum":["happy_coffee","workspace"]},"name":{"type":"string"},"limit":{"type":"number"},"offset":{"type":"number"}},"required":["schema","name"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/datasets","/sources","/pipelines","/costs"]},{"name":"set_development_view","kind":"act","impl":"imperative","description":"Set the visible Develop workspace state for a user: Results or Table Publishing, explorer collapsed state, and output-panel visibility or pixel height.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"bottomTab":{"type":"string","enum":["results","publishing"]},"explorerCollapsed":{"type":"boolean"},"bottomPanelOpen":{"type":"boolean"},"bottomPanelHeight":{"type":"number"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/datasets","/sources","/pipelines","/costs"]},{"name":"open_development_workspace","kind":"act","impl":"imperative","description":"Open the Happy Coffee DuckDB development workspace and list the generated catalog tables available for SQL development. Use this first when a user wants to explore, analyze, or build data in the portal.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/datasets","/sources","/pipelines","/costs"]},{"name":"run_duckdb_sql","kind":"act","impl":"imperative","description":"Run SQL with DuckDB in the user's browser-local Happy Coffee development workspace. Use happy_coffee.<table_name> for generated catalog data and workspace.<table_name> for temporary tables. Results appear in the workspace UI. DDL and DML are local to the browser and expire after 90 minutes.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"sql":{"type":"string","description":"A complete DuckDB SQL statement."}},"required":["sql"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/datasets","/sources","/pipelines","/costs"]},{"name":"create_workspace_table","kind":"act","impl":"imperative","description":"Create or replace a named temporary table in the browser-local workspace schema from a SELECT or WITH query. Use this to develop derived data the user can inspect in the Happy Coffee workspace. Temporary tables expire after 90 minutes.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"name":{"type":"string","description":"Simple table name using letters, numbers, and underscores."},"selectSql":{"type":"string","description":"SELECT or WITH query defining the table."}},"required":["name","selectSql"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/datasets","/sources","/pipelines","/costs"]},{"name":"create_development_sql_cell","kind":"act","impl":"imperative","description":"Add a visible SQL cell to the Happy Coffee development notebook. Use kind=\"quality\" for a quality-check query; quality checks should return the rows that violate a rule, and can use {{published_table}} when they will test a published table.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"sql":{"type":"string","description":"The SQL statement to place in the notebook cell."},"notebookId":{"type":"string","description":"Optional notebook ID from inspect_development_workspace. Defaults to the active notebook."},"kind":{"type":"string","enum":["query","quality"],"description":"Whether this is a query or a quality-check cell."},"name":{"type":"string","description":"Required for quality checks; a clear check name."},"description":{"type":"string","description":"Optional explanation of what the quality check validates."},"severity":{"type":"string","enum":["Info","Warning","Error","Critical"]}},"required":["sql"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/datasets","/sources","/pipelines","/costs"]},{"name":"open_table_publishing","kind":"act","impl":"imperative","description":"Open the Table Publishing tab in the Happy Coffee development workspace. Use it after creating a query cell and any optional quality-check cells so the user can review metadata, schedule, and publish the mock data product.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/datasets","/sources","/pipelines","/costs"]},{"name":"inspect_development_workspace","kind":"answer","impl":"imperative","description":"Inspect the live Develop workspace. Returns notebook IDs, cell IDs, SQL, quality-check configuration, results, tables, and the current publication draft. Call this before editing or preparing a publication.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/datasets","/sources","/pipelines","/costs"]},{"name":"create_development_notebook","kind":"act","impl":"imperative","description":"Create and select a new notebook in the live Develop workspace.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"name":{"type":"string","description":"A short notebook name."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/datasets","/sources","/pipelines","/costs"]},{"name":"select_development_notebook","kind":"act","impl":"imperative","description":"Select a development notebook by ID from inspect_development_workspace.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"notebookId":{"type":"string"}},"required":["notebookId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/datasets","/sources","/pipelines","/costs"]},{"name":"close_development_notebook","kind":"act","impl":"imperative","description":"Close a development notebook by ID. The only remaining notebook cannot be closed.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"notebookId":{"type":"string"}},"required":["notebookId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/datasets","/sources","/pipelines","/costs"]},{"name":"update_development_sql_cell","kind":"act","impl":"imperative","description":"Update a notebook cell SQL statement, convert it between query and quality-check modes, or configure its quality-check metadata. Use cell IDs from inspect_development_workspace.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"cellId":{"type":"string"},"sql":{"type":"string"},"kind":{"type":"string","enum":["query","quality"]},"name":{"type":"string"},"description":{"type":"string"},"severity":{"type":"string","enum":["Info","Warning","Error","Critical"]}},"required":["cellId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/datasets","/sources","/pipelines","/costs"]},{"name":"delete_development_sql_cell","kind":"transact","impl":"imperative","description":"Delete a notebook cell by ID. Use this to remove superseded development or quality-check logic.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"cellId":{"type":"string"}},"required":["cellId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/datasets","/sources","/pipelines","/costs"]},{"name":"run_development_sql_cell","kind":"act","impl":"imperative","description":"Run an existing notebook cell by ID. The result and any quality-check execution card are updated visibly in the Develop workspace.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"cellId":{"type":"string"}},"required":["cellId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/datasets","/sources","/pipelines","/costs"]},{"name":"prepare_table_publication","kind":"act","impl":"imperative","description":"Fill and open Table Publishing from existing query and quality-check cells. This tool intentionally cannot publish: the user must review the visible form and click Publish table themselves.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"sourceCellId":{"type":"string"},"name":{"type":"string"},"displayName":{"type":"string"},"description":{"type":"string"},"owner":{"type":"string"},"tags":{"type":"string"},"criticality":{"type":"string","enum":["Low","Medium","High","Critical"]},"frequency":{"type":"string","enum":["Manual","Hourly","Daily","Weekly","Custom"]},"cron":{"type":"string"},"transformations":{"type":"string"},"qualityCellIds":{"type":"array","items":{"type":"string"}},"fieldDescriptions":{"type":"object","additionalProperties":{"type":"string"}}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/datasets","/sources","/pipelines","/costs"]},{"name":"reset_development_workspace","kind":"act","impl":"imperative","description":"Reset the browser-local DuckDB workspace, clearing temporary tables and every ephemeral published data-product bundle.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/datasets","/sources","/pipelines","/costs"]},{"name":"inspect_development_tables","kind":"act","impl":"imperative","description":"List the generated Happy Coffee catalog tables and temporary workspace tables available in the DuckDB development workspace.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/datasets","/sources","/pipelines","/costs"]},{"name":"view_home_dashboard","kind":"act","impl":"imperative","description":"Navigate to the home dashboard and view top assets. Optionally filter by asset type.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"tab":{"type":"string","enum":["all","datasets","sources","pipelines"],"description":"The category to view on the dashboard."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/datasets","/sources","/pipelines","/costs"]},{"name":"search_global_catalog","kind":"answer","impl":"imperative","description":"Search across all datasets, pipelines, and sources in the Happy Coffee Data Developer Portal. IMPORTANT: Extract only the core entity name. Do NOT include words like \"dataset\", \"pipeline\", or \"table\".","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Core search term. Use partial strings if exact searches fail. Example: \"Farm Origins\" not \"Farm Origins dataset\"."},"type":{"type":"string","enum":["all","datasets","sources","pipelines"],"description":"Filter by asset type."}},"required":["query"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/datasets","/sources","/pipelines","/costs"]},{"name":"filter_datasets","kind":"act","impl":"imperative","description":"Filter the datasets list by types, tags, or search string.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Search term for dataset name. Strip extraneous words; use partial chunks."},"types":{"type":"array","items":{"type":"string","enum":["Table","View","Materialized View","External Table"]}},"tags":{"type":"array","items":{"type":"string"}},"sortKey":{"type":"string","enum":["quality","updated","name","size"]},"page":{"type":"number"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/datasets","/sources","/pipelines","/costs"]},{"name":"view_dataset_details","kind":"answer","impl":"imperative","description":"View details of a dataset by tab (overview, data, quality, lineage, pipelines, costs). Use \"pipelines\" to see executions; \"costs\" to see cost trends.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"id":{"type":"string","description":"Dataset ID (e.g. ds-1)."},"tab":{"type":"string","enum":["overview","data","quality","lineage","pipelines","costs"]},"dateRange":{"type":"string","enum":["7","30","90"],"description":"For the costs tab: days of history."}},"required":["id","tab"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/datasets","/sources","/pipelines","/costs"]},{"name":"filter_pipelines","kind":"act","impl":"imperative","description":"Filter the pipelines list by statuses, engines, or search.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Search term for pipeline name. Use partial chunks if exact match fails."},"types":{"type":"array","items":{"type":"string","enum":["Ingestion","Transformation","Quality Check","Export","Aggregation"]}},"statuses":{"type":"array","items":{"type":"string","enum":["Success","Failed","Running","Cancelled","Never"]}},"engines":{"type":"array","items":{"type":"string","enum":["Fivetran","Kafka Connect","Airflow","dbt","Spark","Great Expectations"]}},"scheduleFilter":{"type":"array","items":{"type":"string"}},"sortKey":{"type":"string","enum":["name","lastRun","runs","duration"]},"page":{"type":"number"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/datasets","/sources","/pipelines","/costs"]},{"name":"view_pipeline_details","kind":"answer","impl":"imperative","description":"View details of a pipeline by tab (overview, runs, lineage, costs). Get the runId from \"runs\", then call view_pipeline_run_logs for logs.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"id":{"type":"string"},"tab":{"type":"string","enum":["overview","runs","lineage","costs"]},"dateRange":{"type":"string","enum":["7","30","90"],"description":"For the costs tab: days of history."}},"required":["id","tab"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/datasets","/sources","/pipelines","/costs"]},{"name":"view_pipeline_run_logs","kind":"act","impl":"imperative","description":"View granular logs of a specific pipeline run. Get runId first from view_pipeline_details (tab=runs) before calling this.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"pipelineId":{"type":"string"},"runId":{"type":"string"}},"required":["pipelineId","runId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/datasets","/sources","/pipelines","/costs"]},{"name":"trigger_pipeline_execution","kind":"act","impl":"imperative","description":"Trigger a new pipeline run on staging or production. Returns the runId. Wait ~10 seconds then call view_pipeline_details (tab=runs) to confirm status.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"pipelineId":{"type":"string"},"environment":{"type":"string","enum":["production","staging"]}},"required":["pipelineId","environment"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/datasets","/sources","/pipelines","/costs"]},{"name":"analyze_infrastructure_costs","kind":"act","impl":"imperative","description":"View and analyze data platform infrastructure costs with date/category filters. Call autonomously to fetch and summarize costs without asking the user for permission.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"dateRange":{"type":"string","enum":["7","15","30","60","90"]},"category":{"type":"string","enum":["Storage","Compute","Query","Transfer","Licensing","Infrastructure"]},"entityType":{"type":"string"},"search":{"type":"string","description":"Search term for specific infrastructure components."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/datasets","/sources","/pipelines","/costs"]}],"category":"Developer Tools","favicon":"/favicons/webmcp-happy-coffee.pages.dev.svg","apiSurface":"spec","toolCount":38}}