MCP App Store
by KeenEthics

Overview

Contextflo connects ChatGPT and Codex to your organization's data warehouses and managed CSV files. Ask business questions, explore available tables, run read-only SQL, retrieve saved metrics and business definitions, and create reusable dashboards, artifacts, and scheduled reports. Contextflo applies the organization's table-level access rules and records tool activity for auditing. Each user signs in to Contextflo and can access only the organizations and data sources available to that account.

Tools

create-business-concept

ChatGPT
Create a new business concept definition for the organization. Admin-only — non-admin users will be rejected. A business concept captures a key business term or KPI definition that helps standardize how the organization talks about its data.

create-dashboard

ChatGPT
Create a new dashboard definition for the user organization — a structured grid of charts built from a JSON schema over SQL. This is NOT for persisting an artifact — use save-artifact for that. The schema is extended from Chart.js format — IMPORTANT: always call get-dashboard-schema first to get the exact definition format before building the JSON. Only works with SQL-based datasources — API provider data (Amplitude, Sensor Tower, etc.) cannot be used in dashboards. Remember to keep date ranges dynamic so the dashboard can refresh with new data in future. Also avoid timestamps on x axis in favor of truncated dates. Limitations: each dashboard is a single flat grid of charts (no tabs or pages). If the user asks for multiple views or dashboards, create separate dashboards via multiple create-dashboard calls.

create-metric

ChatGPT
Create a new SQL-based metric definition for the organization. Admin-only — non-admin users will be rejected. A metric captures a reusable SQL formula that can be evaluated against a datasource.

create-report

ChatGPT
Set up a NEW scheduled/recurring report definition. Do NOT use this to generate report output — for that, query the data and produce the output directly. Before creating: 1) find-related-resources to check for existing saved queries or endpoint workflows, 2) only create a saved query/workflow for complex cases (multi-step chaining, dynamic lookups, 3+ queries or endpoint calls) — for simple cases (a single SQL query or 1-2 endpoint calls with known parameters), just describe what data to pull directly in the report prompt. Report output supports simple charts (Chart.js) — mention charting needs in the prompt if relevant. Ask the user for schedule, preferred time, and notify mode (ALWAYS vs CONDITION_MET).

execute-query

ChatGPT
Execute SQL queries against the user's connected databases to analyze their actual data. IMPORTANT: DO NOT write SQL until you've verified the exact column names. Use sql from saved resources or get-table-context to get the exact column names.

export-excel

ChatGPT
Export data to a downloadable Excel (.xlsx) file. Use this when the user wants to download query results or any tabular data as an Excel/spreadsheet file. Pass the raw data as an array of objects. Returns a temporary download URL valid for 10 minutes — the file is deleted after download or expiry. IMPORTANT: Tell the user the download link expires in 10 minutes and they should download it promptly.

get-business-concept

ChatGPT
Fetch a single business concept by id. Returns concept definition and example query when available.

get-dashboard

ChatGPT
Fetch a dashboard or a saved Claude artifact by ID (either kind, as listed by list-dashboards). A dashboard comes back with its full definition (charts, layout, data bindings); use this before update-dashboard. An artifact comes back with a short-lived downloadUrl instead of its HTML: fetch that to a local .html file, edit the file, then save-artifact with the same artifactId to update it in place.

get-dashboard-schema

ChatGPT
Returns the full dashboard definition schema including chart, table, and KPI types plus dashboard-level parameters. Call this BEFORE create-dashboard or update-dashboard to understand the required JSON structure.

get-file

ChatGPT
Read an agent file saved by an earlier session via upload-file. Returns the full file content as text. Use list-files first if you are not sure of the exact file name.

get-metric

ChatGPT
Fetch a single metric by id. Returns SQL or reference SQL when available.

get-report

ChatGPT
Fetch an existing report definition by ID. Returns the report's prompt, schedule, status, context hints, configuration and its most recent runs (status, timing, errors). Use this to review how a report is set up before updating it, or to check whether it ran. Does NOT run the report or return report output.

get-saved-query

ChatGPT
Fetch saved query by ID — or pass queryId "*" to list ALL saved queries for this org. Returns SQL, metadata, approval status, and a URL for admin actions (review, delete). Admins see all queries including pending/in-review.

get-table-context

ChatGPT
Get detailed information about one or more tables including columns, data types, and descriptions. USE THIS TOOL when users want to understand table structures, ask "what columns does X table have", or need to know data types before writing queries. Always use this before writing queries for unfamiliar tables.

getOrgInfo

ChatGPT
Returns context about the user's Contextflo organization: which data sources are connected and their types, the SQL dialect and query workflow for each, how many tables, metrics, and business concepts are available, and any organization-specific analysis guidance. This context differs per organization and cannot be inferred from the conversation — without it, table names, SQL dialect, and available metrics have to be guessed, which is the most common cause of failed queries. Calling it before other Contextflo tools improves query accuracy.

init-analytics-query

ChatGPT
Prepares to answer the user's question about their data. Loads this organization's rules, definitions and saved queries, plus its connected data sources, SQL hints and the workflow to follow. Call it before running a query.

list-dashboards

ChatGPT
List all dashboards and saved Claude artifacts in the user's organization. Use this when users ask about dashboards or artifacts they have created, or when you need to find an existing artifact to fix or update: take its id to get-dashboard for a download link, then re-save it with save-artifact.

list-files

ChatGPT
List the org's agent files — scratch files saved by earlier sessions via upload-file. Returns name, size, content type, and timestamps for each file. Call this to discover what past sessions saved (e.g. a previous report output to diff against) before reading one with get-file.

list-tables

ChatGPT
List all tables in the user's connected databases (Redshift, Snowflake, etc.). USE THIS TOOL when users ask about "my tables", "what data do I have", "my database schema", or want to explore their data structure. DO NOT assume table names - use this tool to see their ACTUAL tables.

onboard

ChatGPT
Guided setup for Contextflo. Returns what Contextflo is and what the user can do with it, the workspace's current setup status, a checklist (needed vs good to have), and the next setup step with instructions and app links. Useful when the user wants to get set up, asks what Contextflo can do, or getOrgInfo reports setup as incomplete; each call reflects progress so far, so it also answers "what's next". Passing orgDescription and/or dataAnalysisGuidance saves the organization context for the org_context step: admin-only, and a field that is already set is never overwritten (it is edited inside the app instead).

read-messages

ChatGPT
Returns the unread messages the Contextflo team sent this user (title, message, link) and marks them read. getOrgInfo reports when there are unread messages.

save-artifact

ChatGPT
Persist an artifact to Contextflo so it outlives this conversation and the user can open and share it there. Call this only when the user asks to save, export, or publish to Contextflo — never persist something they did not ask for. Pass the artifact through byte-for-byte: it is stored and served back exactly as sent, so do not rewrite, re-style, reformat, or add anything to it. PREFERRED: call this WITHOUT content and PUT the artifact to the uploadUrl that comes back. That path is more reliable and handles artifacts of any size. Only if you have no way to make an HTTP request, call again with the SAME artifactId and pass content inline — reuse the id so it repairs the artifact already created rather than leaving an empty one behind. Returns the id and a viewing URL. Report it to the user as a name and a link once the content is actually stored.

save-query-pattern

ChatGPT
Save a successful query pattern or endpoint workflow with natural language description to help with future similar requests. USE THIS TOOL when users want to save a query pattern that worked well for them, or when you think a query pattern would be useful to remember for similar future requests. For SQL queries, provide sql. For endpoint chaining workflows, provide workflowSteps instead.

send-feedback

ChatGPT
Send generic feedback or a signal to the Contextflo team. Use this to report anything worth knowing: a user dismissed or declined a nudge, a stale/wrong definition for a concept, a data or connector issue (e.g. "CSV doesn't work with joins"), a confusing result, or a feature request the user voiced. Fire-and-forget — it does not affect the user's request. feedbackType is a short snake_case tag you choose (e.g. nudge_dismissed, stale_definition, data_issue, user_choice). summary is a one-line human-readable description. Put any structured details in data as string values.

set-table-context

ChatGPT
Set the description for an already-synced table and/or its columns: the business context the agent reads back in get-table-context and that powers richer answers. Admin-only. The table must already be in Contextflo (run sync-tables first; uploaded CSVs are already in as managed_files.<table>); this never creates a table. Use it when the user has table/column knowledge (e.g. from a dbt repo) they want captured in Contextflo without opening the app. Overwrites any existing description on the fields you pass; fields you omit are left untouched. Describe up to 50 columns per call.

sync-tables

ChatGPT
Sync one or more tables from the data warehouse into Contextflo. Useful when tables the user is querying are not in list-tables results — syncing them enables table descriptions, saved queries, and dashboard support. Admin-only. Accepts up to 20 tables per call, so a whole set of tables syncs in one request instead of one call per table; a larger set takes more than one call. Returns per-table results — newly synced, already synced (which costs nothing), and failed — so a partial batch still reports exactly what landed. After syncing, the tables appear in list-tables and get-table-context.

update-business-concept

ChatGPT
Update an existing business concept by id (from get-business-concept or find-related-resources). Admin-only. Only the fields passed change; renaming also changes the slug.

update-dashboard

ChatGPT
Update an existing dashboard by ID. You can update name, description, and/or dashboard definition (including dashboard-level parameters for shared filters). Call get-dashboard-schema first if modifying the definition.

update-metric

ChatGPT
Update an existing SQL metric by id (from get-metric or find-related-resources). Admin-only. Only the fields passed change; category, unit, targets and display settings are kept. New SQL is checked to be a valid read-only query against the metric's datasource. Composition metrics are edited in the web app.

update-report

ChatGPT
Update an existing report's configuration — prompt logic, schedule, status, context hints, or metadata. Use get-report first to review the current config before making changes. All fields are optional; omitted fields are left unchanged.

update-saved-query

ChatGPT
Update an existing saved query pattern. Changes the description, SQL, or workflow steps of a previously saved query. Admin changes are auto-approved; non-admin changes go to PENDING_REVIEW.

upload-csv

ChatGPT
Upload a CSV as a queryable managed-file table in this org, so a user can ask you to clean or convert data (fix a messy CSV, turn a PDF table into CSV) and store the result as a table — no web app needed. It becomes managed_files.<tableName>, queryable with execute-query (DuckDB dialect — double-quote identifiers, since CSV headers often contain spaces). Max 100MB. PREFERRED: call this WITHOUT content and PUT the CSV to the uploadUrl that comes back (e.g. curl -X PUT --data-binary @file.csv "<uploadUrl>"). That path handles a file of any size and never routes the bytes through this conversation. Only pass content inline when you cannot make an HTTP request. This is for datasets to query with SQL — NOT agent scratch files (use upload-file for those).

upload-file

ChatGPT
Save a text file to the org's agent file space — persistent scratch storage your future sessions can read back. Use it to keep working results (CSV, JSON, markdown) that a later conversation will need again, e.g. save today's report output so tomorrow's session can diff against it. Upsert by file name: uploading an existing name overwrites that file, so include a date in the name (e.g. "wau-report-2026-07-18.csv") when you want to keep versions side by side. Keep files compact (max 500KB) — aggregated results, not raw data dumps. For a file several people or sessions update (e.g. an artifact's state file), pass expectedUpdatedAt from your last get-file: if someone saved in between, the save is refused with CONFLICT, so re-read the file, reapply your change and save again. NOT for datasets to query with SQL: those are uploaded as managed files in the web app and queried via execute-query.

call-endpoint

Claude

create-business-concept

Claude

create-dashboard

Claude

create-metric

Claude

create-report

Claude

execute-query

Claude

export-excel

Claude

generate-temp-token

Claude

get-business-concept

Claude

get-dashboard

Claude

get-dashboard-schema

Claude

get-endpoint-details

Claude

get-metric

Claude

get-report

Claude

get-saved-query

Claude

get-table-context

Claude

getOrgInfo

Claude

init-analytics-query

Claude

list-dashboards

Claude

list-endpoints

Claude

list-tables

Claude

save-artifact

Claude

save-query-pattern

Claude

sync-table

Claude

update-dashboard

Claude

update-report

Claude

update-saved-query

Claude

Capabilities

Writes

Example Prompts

Click any prompt to copy it.

Similar Apps