agenticbi
AgenticBI is an agentic analytics platform that turns business questions into answers.Connect BigQuery, Salesforce, SAP, Google Drive, Trino, and more.
What it can do
- Do: Execute any operation via natural language. Creates dashboards, widgets, queries, configures alerts, generates reports, and more. Routes to the appropriate internal agents automatically.
- Ask: Ask a data question in natural language. Finds relevant datasets via schema search, generates SQL, and returns results. Results are limited to 500 rows by default (use maxRows to adjust). Use get
- Search: Search across all assets -- dashboards, widgets, datasets, queries, reports, alerts, and documents.
What data it sees
Do you need an account
No: the server works without sign-in
AgenticBI is an agentic analytics platform that turns business questions into answers.Connect BigQuery, Salesforce, SAP, Google Drive, Trino, and more. Agents understand your data, find the right datasets, join across systems, run queries, and return answers with visualizations.Or skip the question and automate the workflow entirely. "Send me a sales report every morning at 8 AM." The agent identifies the data, picks the metrics, builds the dashboard, and sets up recurring delivery to your inbox or Slack.Structured data and documents in the same query. No SQL. No analyst. Works with Claude, Cursor, VS Code, and ChatGPT. Turn on screen reader support Connects your sources, builds the semantic layer, and answers your business questions - no SQL, no analyst, no waiting.Connects your sources, builds the semantic layer, and answers your business questions - no SQL, no analyst, no waiting.
How to connect
How to connect agenticbi to Claude
The server address to paste into Claude settings:
https://agenticbi--sanskriti-tqrg.run.tools
- Open Claude (claude.ai or the desktop app).
- Go to Settings → Connectors.
- Click Add custom connector.
- Paste the server address copied below into Remote MCP server URL and click Add.
- In a chat, click + → Connectors and switch the new connector on.
Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.
Authorization
After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.
How to connect agenticbi to ChatGPT
The server address to paste into ChatGPT settings:
https://agenticbi--sanskriti-tqrg.run.tools
- Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
- Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
- Open Settings → Connectors and click Create.
- Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
- Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
- In a new chat open + → Apps/Connectors and enable the connector.
OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.
Authorization
On first use ChatGPT opens the service's sign-in window. Sign in and approve access.
How to connect agenticbi to Cursor
The server address to paste into Cursor settings:
https://agenticbi--sanskriti-tqrg.run.tools
Fastest: click Open in Cursor below and confirm the prompt.
Manually:
- In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
- Paste the JSON copied below into
~/.cursor/mcp.json(per project:.cursor/mcp.jsonin the repo root). - Save the file. The server appears in the MCP list; authorize it there if asked.
Authorization
If the service needs sign-in, an authorize button appears next to the server in the MCP list.
Server tool list (33)
Raw names from tools/list. Only developers need these.
| do | Execute any operation via natural language. Creates dashboards, widgets, queries, configures alerts, generates reports, and more. Routes to the appropriate internal agents automatically. |
| ask | Ask a data question in natural language. Finds relevant datasets via schema search, generates SQL, and returns results. Results are limited to 500 rows by default (use maxRows to adjust). Use get_data for full dataset access. |
| search | Search across all assets -- dashboards, widgets, datasets, queries, reports, alerts, and documents. |
| list_dashboards | List all dashboards accessible to the current user. |
| get_data | Get data from a widget or dataset. Returns rows as JSON. |
| push_data | Push data rows to a dataset. Creates the dataset if it doesn't exist. |
| export_pdf | Export a dashboard or widget as a PDF document. Returns a base64-encoded PDF and widget configuration details. |
| export_csv | Export a dashboard or widget data as CSV. For dashboards, exports ALL widgets as separate CSV files in a single response — each widget becomes its own CSV with the correct widget name. Use this tool whenever the user asks to export data to CSV, download data, or get a spreadsheet export. Do NOT write custom scripts to export data — always use this tool instead. |
| get_embed_url | Generate an embeddable share URL for a dashboard or widget. |
| delete | Delete an asset. Requires explicit asset type, ID, and confirmation. This is the only tool that can perform destructive operations. |
| run | Execute a saved query (refresh its data) or trigger a saved email report to send immediately. Use this to send an existing report right now — it will deliver to all configured recipients via email, Slack, Teams, or webhook. Provide exactly one of queryId or reportId. |
| get_details | Get full details for any asset by type and ID. |
| explain_lineage | Explain how an answer, visualization, dataset, query, or dashboard is built. Returns an on-demand lineage recipe with upstream sources, transformations, field traces, impact, warnings, and redactions. Provide assetType plus assetId, or one of widgetId, datasetId, queryId, or dashboardId. |
| create_datasource | Start a new datasource connection for the user's account. Returns a one-time secure web URL where the user enters host, port, credentials, and tests the connection in a browser. DO NOT ask the user for host, port, username, password, connection string, or any credentials — the returned URL is the only credential surface and it expires after 30 minutes. Just call this tool with the connector type, then relay the URL message back verbatim. |
| create_query | Create a new query against a datasource. Optionally run it immediately to populate a dataset. |
| find_widget | Find widgets by name. Optionally scope to a specific dashboard. Returns matching widget IDs, names, chart types, and dataset info. |
| create_widget | Create a widget (chart/visualization) on a dataset. IMPORTANT: Before calling this tool, use get_data with a small limit (e.g. 5) to inspect the dataset's field names and types. Then provide the exact field names for xAxis and yAxis — the widget will show 'No Data' if these are missing or wrong. For charts (column, line, bar, pie, area, etc.), xAxis and yAxis are required. For data grids (datagrid2), they are optional. |
| layout_dashboard | Set widget positions and sizes on a dashboard. Grid is 24 columns wide, 1-based. Typical widget: sizeX=12, sizeY=6. |
| import_file | Import file data (CSV, JSON, XML, or Excel) into a dataset. Pass text content as a string for CSV/JSON/XML, or base64-encoded content for Excel (.xlsx/.xls). Creates or updates a dataset. |
| create_report | Create a scheduled report that sends a dashboard or widget(s) via Email, Slack, or Teams at a given frequency. DELIVERY: Use 'recipients' for email, 'slackName' for Slack (e.g., 'testing', '#general'), or both. At least one delivery channel is required — email is NOT required if Slack or Teams is specified. When the user says 'send to Slack' or mentions a Slack channel/config name, use the slackName parameter — the server resolves the config automatically. Set sendNow=true to also send immediately after creating the schedule. |
| create_alert | Create a new alert on a dataset. Supports conditional alerts (trigger when C9QL condition matches), data-not-updated alerts (trigger when dataset hasn't been updated within schedule interval), and query error alerts (trigger when a query execution fails). |
| list_alerts | List alerts accessible to the current user. Optionally filter by dataset ID or widget ID. |
| test_alert | Test an existing alert by triggering it immediately. The alert executes as if its condition was checked now, and sends notifications if the condition matches. Results are not persisted in the alert's execution history. |
| update_alert | Update an existing alert. Can change the alert name, condition, schedule, email recipients, real-time mode, or pause/resume the alert. Only specified fields are updated; others remain unchanged. |
| ingest_document | Ingest a document (PDF, Word, CSV, Excel, images, text) for Q&A and data extraction. Documents are chunked, embedded, and stored in the vector database for semantic search. Supported formats: PDF, DOCX, DOC, CSV, XLS, XLSX, TXT, MD, PNG, JPG, GIF, BMP, TIFF, WEBP. |
| ask_document | Ask a question against ingested documents. Performs semantic search across document embeddings, retrieves relevant chunks, and returns an LLM-generated answer with source citations. Can target specific documents or search across all. |
| extract_document_data | Extract structured data from documents into a dataset. Define the fields to extract and the server will parse matching documents, returning structured rows. The resulting dataset can be used with ask, create_widget, etc. Turns unstructured documents into queryable data. |
| list_documents | List documents ingested into a document datasource. Returns document names and IDs. Use this to find document IDs for ask_document, extract_document_data, or delete_document. |
| delete_document | Delete an ingested document from the vector store and remove its query. Use list_documents to find document IDs. Requires confirmation. |
| get_insights | Generate AI-powered insights and recommendations for a widget or dashboard. Analyzes the data and returns observations, trends, anomalies, and actionable recommendations. Provide either a widgetId (single widget analysis) or dashboardId (analyzes all widgets). |
| cloud9ql_assist | Generate, fix, explain, convert, validate, or preview Cloud9QL using dataset context. |
| update_widget | Update an existing widget's data transformations (add/remove filters, change aggregations, modify sorting) and/or display settings (chart type, name). Changes are saved server-side — no UI interaction needed. Use get_details with the widgetId first to see current configuration, then apply modifications. IMPORTANT: For filters, use exact field names from the dataset. Use get_data with the widget's datasetId to discover available fields. |
| update_report | Update an existing scheduled report's configuration. Can change frequency, recipients, delivery channels (email, Slack, Teams), export options, and email body. Use search with assetType='report' to find report IDs. |