# Authentication and SSO Source: https://docs.fabi.ai/admin_and_configuration/auth_and_sso Everything you need to know about logging in to Fabi.ai. # Single sign on (SSO) Fabi.ai only supports SSO login, we do not offer password-based login. The default SSO option is Gmail, whether you have a personal or corporate Gmail account. # Multi-factor authentication (MFA) Since we partner with SSO providers to provide our login experience, two-factor or multi-factor authentication is done through your provider. If you're using Gmail for example, setting up MFA is done in your Gmail settings. # SCIM provisioning Fabi.ai does offer SCIM provivioning for enterprise customers. If you're interested in learning more, please reach out to us as [hello@fabi.ai](mailto:hello@fabi.ai) and we'll be in touch and we'll work directly with your team to get you setup. SCIM configuration typically takes about 30 minutes. # Pricing & billing Source: https://docs.fabi.ai/admin_and_configuration/pricing_and_billing Fabi.ai plans, pricing, and subscription management. # Plans Fabi.ai offers four plans to fit teams of every size. All plans include 24/7 support and SOC2 compliance. | Feature | Starter | Builder | Team | Enterprise | | ------------------------------------ | -------- | ---------------- | ---------------- | ---------- | | **Price** | Free | \$39/mo per seat | \$50/mo per seat | Custom | | **AI requests** | 25/month | 300/month | Unlimited | Unlimited | | **Smartbooks** | 5 | 10 | Unlimited | Unlimited | | **Dashboard viewers** | 10 | 25 | 50 | Custom | | **Database connectors** | 1 | 1 | 2 | Unlimited | | **File uploads** | 50MB | 100MB | 500MB | Custom | | **Application connectors** | — | ✓ | ✓ | ✓ | | **Scheduled dashboards & workflows** | — | ✓ | ✓ | ✓ | | **Builder seats** | 1 | Up to 3 | 4+ | Unlimited | | **Custom security review** | — | — | — | ✓ | | **Quarterly roadmap reviews** | — | — | — | ✓ | | **Fractional data science team** | — | — | — | ✓ | | Slack app | — | — | ✓ | ✓ | Builder and Team plans include a **14-day free trial**. For Enterprise pricing, [contact our sales team](mailto:support@fabi.ai). # Application connector pricing Application connectors (e.g. HubSpot, Shopify, Google Ads) are available on Builder plans and above and are priced separately from your seat subscription: * **\$100/month per connector** — includes 200k record updates per month * **Additional records**: \$50 per 100k records (prorated) * **Overage limit**: We automatically set an overage cap of \$400 per connector (configurable in your settings). If you reach this limit, your sync will be paused and you'll receive an email notification. The 200k monthly records included in the base price is sufficient for most connectors. High-volume sources like ads platforms, product event tracking, email tracking, or IoT data may exceed this limit. For questions about connector pricing, reach out to [support@fabi.ai](mailto:support@fabi.ai). # Managing your subscription ## Upgrading or downgrading To change your plan, navigate to **Settings → Billing** in your Fabi.ai workspace. From there you can: * Upgrade to a higher tier at any time — changes take effect immediately * Downgrade at the end of your current billing period * Add or remove builder seats on Builder and Team plans ## Free trial Builder and Team plans include a 14-day free trial. No credit card is required to start your trial. At the end of the trial period, you'll be prompted to enter payment details to continue. ## Cancellation You can cancel your subscription at any time from **Settings → Billing**. Your account will remain active through the end of your current billing period, after which it will revert to the Starter (free) plan. ## Questions For billing questions or issues, contact us at [support@fabi.ai](mailto:support@fabi.ai). # User management Source: https://docs.fabi.ai/admin_and_configuration/user_management Managing users: Inviting, removing, roles. # Inviting users To invite users from your organization to your account, you can either: 1. Go to our User management page by navigating to it from the left hand menu and clicking on **Users** 2. Sharing a Fabi.ai link with them and letting them self-provisioning with their corporate email address Note that if they create their account on their own, if you're a Fabi.ai paying customer, new users will be defaulted to **Viewers**. You can change their role once they've onboarded. Alternatively, if you invite a user through the Fabi.ai interface, you can specify their role before they log in. Description **Note on SCIM**: If you're on our Enterprise plan and you have SCIM provisioning configured, user creation is managed by your SCIM provider. # Changing user roles A user can be in one of three roles: 1. **Admin**: Admins have complete Fabi.ai access. They can build and publish dashboards and workflows and manage users, billing and other organization-wide configurations. 2. **Builder**: Builders can create, publish and schedule Dashboards & data apps and workflows. Great for data analysts, data scientists, data engineer, product managers and anyone else who regularly builds dashboards. 3. **Viewer**: Viewers cannot create new Smartbooks or workflows. This role is great for users who only need to view published dashboards and workflows. # Automatic versioning Source: https://docs.fabi.ai/advanced_features_and_dev_tools/automatic_versioning Smartbook and cell-level versioning # Overview To help you analyze and build with full peace of mind, Fabi automatically snapshots code at the Smartbook and cell level at certain key moments (for example when you accept AI suggestions). # Reviewing and reverting Smartbook versions To review and compare the diff between two Smartbook versions, click on `Revision History` in the Smartbook overflow menu. In this modal, you'll be able to see all the automatically captured versions in the browser on the left. You can also compare any two versions by selecting the versions you want to compare in the dropdowns. If you want to revert the Smartbook to a previous version, simply find the version you want to revert to and click `Restore This Version`. Version modal # Reviewing and reverting cell versions Version snapshots are even available at the cell level. This is convenient if you know you just made a change to a specific cell and want to just inspect the history for that one cell instead of the entire Smartbook. Find the cell you want to inspect, and click on `View Versions` in the cell header. This will open up a modal focused just on the versions of this specific cell. Cell versions # Fabi CLI Source: https://docs.fabi.ai/advanced_features_and_dev_tools/cli Use the Fabi CLI to build and deploy custom dashboards and apps from any AI coding agent # Overview The Fabi CLI gives you programmatic access to the Fabi back end from your terminal. Combined with an AI coding agent like [Claude Code](https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/overview) or Codex, it enables a headless BI workflow — you can build fully custom dashboards and applications on top of your connected data sources, then deploy and share them through Fabi. To get started, point your agent to the CLI repository: ``` https://github.com/fabi-ai/fabi-cli ``` Your agent will install the CLI and automatically redirect you to your browser to log in. Once authenticated, your agent has access to every data source connected to your Fabi workspace and you can immediately start building. # What you can do With the CLI installed, you can ask your agent to: * Build custom dashboards with any layout, chart type, or interaction you can describe * Create data applications (search tools, reporting interfaces, admin panels, etc.) * Query any data source connected to your Fabi workspace * Deploy finished apps to [app.fabi.ai](https://app.fabi.ai) and share them with your team Your agent generates React applications from scratch on top of the Fabi API, so there are no template constraints — if you can describe it, your agent can build it. # Example workflow Everything happens through conversation with your agent: 1. **"Install the Fabi CLI from [https://github.com/fabi-ai/fabi-cli](https://github.com/fabi-ai/fabi-cli)"** — your agent clones the repo and installs the CLI. You'll be redirected to your browser to log in. 2. **"Build a dashboard showing our top 10 customers by revenue this quarter, with a bar chart and a detail table I can click into"** — your agent pulls your data context, generates a React app, and previews it locally. 3. **"Deploy this to Fabi"** — your agent deploys the app and gives you a link to share with your team. The more semantic context your team has configured in Fabi (column descriptions, metrics definitions, relationships), the better your AI agent will perform. See [AI context and semantics](/integrations_and_connectors/ai_context_and_semantics) for details. # Security You authenticate through Fabi, which manages session tokens on your behalf. Your underlying data source credentials are never exposed locally — there are no raw database tokens in `.env` files or shell histories. * **No raw credentials locally** — you authenticate through Fabi's OAuth flow, and session tokens are managed by the CLI. Your database passwords and API keys never touch your local machine. * **Scoped access** — the CLI respects the same permissions and data source access controls configured in your Fabi workspace. * **Revocable sessions** — if a machine is lost or compromised, revoke the session from your Fabi account settings without needing to rotate database credentials. # Supported agents The Fabi CLI works with any AI coding agent that can execute shell commands, including: * **Claude Code** — point it at the CLI repo and start building * **Codex** — works the same way via its terminal access # MCP Server Source: https://docs.fabi.ai/advanced_features_and_dev_tools/mcp_server Connect to Fabi through the Model Context Protocol (MCP) server # Overview Fabi.ai provides an MCP (Model Context Protocol) server that allows you to integrate Fabi's AI data analysis capabilities directly into your development workflow or your client/interface of choice. The MCP server enables AI assistants and development tools to interact with Fabi.ai, creating threads, submitting chat requests, and saving Smartbooks programmatically. The Fabi MCP server is the single fastest way for you to implement an AI assistant to chat directly with your data. # Authentication The Fabi MCP server supports two authentication methods: ## Token authentication Token authentication is the recommended method for programmatic access. You can generate MCP tokens from your Fabi.ai settings: 1. Navigate to [https://app.fabi.ai/settings/mcp](https://app.fabi.ai/settings/mcp) 2. Generate a new MCP token 3. Copy the token securely - it will only be shown once ## OAuth authentication OAuth authentication is also supported for user-based integrations. Follow the OAuth flow to authenticate your application and use the following URL: `https://app.fabi.ai/mcp` # Configuration To connect to the Fabi MCP server, add the following configuration to your MCP client settings: ```json theme={null} { "mcpServers": { "fabi": { "command": "npx", "args": [ "mcp-remote", "https://app.fabi.ai/mcp", "--header", "Authorization: Bearer " ] } } } ``` Replace `` with the token you generated from the settings page. # Available tools The Fabi MCP server provides the following tools for interacting with Fabi.ai: ## Create a thread Creates a new data analysis session (backed by a Smartbook) for SQL/Python queries. Used to start analyzing database tables, running queries, or exploring data. The thread will persist your analysis history and generated code. **Parameters:** * `title` (optional): Title for the analysis session **Returns:** Thread UUID for subsequent operations ## Submit chat Delegate a data analysis task to the Fabi autonomous agent. Takes a description of what you want in natural language - Fabi will independently handle all complexity: discovering data sources, using RAG to find relevant table/column schemas and semantics, generating SQL/Python code, validating queries with dry runs, executing them, and formatting results. **Parameters:** * `thread_uuid`: UUID of the thread from `create_thread` * `message`: Natural language data analysis request (e.g., 'show top 10 customers by revenue') * `context_cell_uuids` (optional): Previous cell UUIDs to reference in this analysis * `context_dataframes` (optional): Variable names of dataframes to use as context **Returns:** Request UUID and initial status ## Get chat result Poll for the result of a long-running chat analysis request. Used by the agent when `submit_chat` returns early due to timeout (after 45 seconds). The chat continues processing in the background - call this periodically to check if results are ready. **Parameters:** * `request_uuid`: UUID of the chat request (returned by `submit_chat`) **Returns:** Processing status or completed results with data preview ## Save to Smartbook Save AI-generated cells from chat history to the Smartbook for dashboard publishing or collaboration. Used by the agent to persist, publish, or share the analysis as a dashboard. This accepts pending chat results and converts them into executable Smartbook cells. Regular analyses are already viewable in chat history and don't need saving. **Parameters:** * `thread_uuid`: UUID of the thread to save **Returns:** Confirmation of saved Smartbook cells # Usage examples ## Basic workflow 1. **Create a thread** to start a new analysis session 2. **Submit chat requests** with natural language queries 3. **Get chat results** to retrieve analysis outputs 4. **Save to Smartbook** (optional) to persist results for sharing ## Example: Analyzing sales data ```javascript theme={null} // 1. Create a new thread const thread = await mcp.callTool('fabi', 'create_thread', { title: 'Sales Analysis Q4 2024' }); // 2. Submit an analysis request const request = await mcp.callTool('fabi', 'submit_chat', { thread_uuid: thread.uuid, message: 'Show top 10 customers by revenue in Q4 2024' }); // 3. Get the results const results = await mcp.callTool('fabi', 'get_chat_result', { request_uuid: request.uuid }); // 4. Save to Smartbook for sharing await mcp.callTool('fabi', 'save_to_smartbook', { thread_uuid: thread.uuid }); ``` # Troubleshooting * First try using the AI Analyst Agent in the Fabi UI to ensure it works as expected. If it does then * If using token-based authentication, make sure you're using a valid token * If using a local agent, restart the agent after configuring the tools # Best practices ## Token security * Store MCP tokens securely and never commit them to version control * Use environment variables or secure secret management * Rotate tokens regularly for enhanced security * Each token should only be used by one application or user ## Error handling * Implement retry logic for `get_chat_result` when status is "processing" * Handle timeout scenarios gracefully * Validate thread UUIDs before making subsequent calls ## Performance * Use `context_cell_uuids` and `context_dataframes` to build on previous analyses * Only call `save_to_smartbook` when you need to persist results * Batch related queries in the same thread for better context # Personal AI configuration Source: https://docs.fabi.ai/advanced_features_and_dev_tools/personal_ai_configuration Configure your AI to fit your unique needs. # Overview Fabi.ai allows you to configure your personal AI settings to better suit your individual needs and workflow preferences. These configurations empower you to tailor the AI's behavior, memory, model, and interaction style, making your data analysis experience more efficient and personalized. # Configuration settings To access these settings, click **AI Settings** from the Analyst Agent interface in any Smartbook. AI Settings ## Longer memory Enable longer memory to allow the AI to remember more of your conversation history. This feature is particularly useful for longer threads and complex analyses where context from earlier interactions is crucial for the AI to provide relevant suggestions and insights. ## Default AI model Select your preferred default AI model for all interactions. Fabi.ai supports various models, and you can choose the one that best fits your requirements for speed, accuracy, or specific capabilities. ## AI action mode Choose how the AI applies its suggestions: * **Automatic**: The AI automatically applies its suggestions, streamlining your workflow. This mode is ideal for confident users who trust the AI's recommendations. * **Manual**: The AI generates suggestions, but you must explicitly accept them for the changes to be applied. This mode provides more control and is suitable for users who prefer to review and approve each AI-generated action. ## Auto-run code Configure whether the AI automatically runs the code it generates: * Enable this setting for quick execution of AI-generated queries and scripts. * Disable this setting if you are working on queries or scripts that can be expensive or time-consuming to run. When disabled, the AI will generate the code but will not attempt to run it until you accept it. ## Dry-run timeout Set the maximum duration for queries or code to run before the AI automatically times out. This prevents excessively long-running operations from consuming resources or blocking your workflow. ## Custom instructions Provide custom instructions or a custom prompt to guide the AI's behavior and responses. You can tell the AI your preferences for various aspects, including: * **Preferred colors or chart types**: Guide the AI to use specific visual styles for your data visualizations. * **Response style**: Instruct the AI on how it should respond, such as being concise, detailed, formal, or informal. * **Specific analysis techniques**: Direct the AI to use particular methods or approaches for data analysis. # Best practices * **Experiment with settings**: Try different configurations to find what works best for your workflow. * **Use custom instructions**: Leverage custom instructions to fine-tune the AI's responses and behavior. * **Adjust memory for complexity**: For complex, multi-step analyses, enable longer memory to ensure the AI maintains full context. # Secret manager Source: https://docs.fabi.ai/advanced_features_and_dev_tools/secret_manager Storing and managing sensitive secrets and keys in Fabi.ai. # Overview Data privacy and security starts with safekeeping of sensitive secrets and keys. Whether you're using API keys or tokens, handling these properly is critical. Our vault ensures that your keys stay private to you and don't get shared with anyone else. # Storing keys and secrets **Important**: As of May 2025, secrets are available to all Builders in your organization. Simply navigate to **Settings** > **Secrets**. To save your first secret, click on **+ Add Secret**. Then: 1. Under **Name**, put in the name you want to use for your secret (eg. `SLACK_TOKEN`) 2. Optionally include a description under **Description** 3. Copy/paste your secret under **Secret** then click **Add Secret** adding_secret # Using secrets Once you've saved a key or secret, to use it, you can reference it in any cell following this convention: `fabi.secret.MY_SECRET`. Here's an example using a secret to store a key for the Polygon.io API: ```python theme={null} def get_stock(api_key): url = f"https://api.polygon.io/v2/aggs/ticker/AAPL/range/1/day/2025-04-01/2025-05-15?apiKey={api_key}&sort=asc" data = requests.get(url).json().get('results', []) df = pd.DataFrame(data) if not df.empty: df['date'] = pd.to_datetime(df['t'], unit='ms') df = df[['date', 'c']] df.columns = ['date', 'price'] return df # Using the existing API key api_key = fabi.secret.POLYGON_KEY stock = get_stock(stock) display(stock) ``` # Git version control Source: https://docs.fabi.ai/advanced_features_and_dev_tools/version_control Save your code and collaborate with your peers # Overview Version control is critical when working with complex analyses and workflows, especially when collaborating with your peers. Fabi offers version control connectors to help you save, share and update your code in just a few clicks. # Connecting your GitHub account We currently offer a GitHub integration. If you would like us to integrate another version control platform, please reach out to [support@fabi.ai](mailto:support@fabi.ai). From any Smartbook or workflow, click on the overflow menu in the header, and select `Repository Sync` repository_sync You'll be prompted to authorize GitHub. Once completed, you'll be ready to sync your Smartbook with GitHub. authorizing_github # Pushing your Smartbooks and workflows to GitHub ## Committing changes Once you've connect Fabi to GitHub, selecting `Repository Sync` will open up a modal. You'll be prompted to provide: * Repository name * Branch (you can also create a new branch from here) * Path prefix configure_repo_sync The Smartbook will be pushed to GitHub as a YAML file in a folder marked by the unique Smartbook ID. You can think of Smartbooks as projects, these may contain more than just the single main file. ## Automatic commits If you're publishing your Smartbook or workflow, you can configure your settings to automatically commit updates on publish. This is a convenient feature if you're quickly iterating on a data app or workflow and want to keep the source code up to date. automatic_commits ## Pulling changes To pull data from your repository, simply specify the repositoy, branch and prefix that you want to pull from. In most cases, if you've pushed your code from the Smartbook, most of this information should already be populated. pull_from_version_control # AI Tips Source: https://docs.fabi.ai/analysis_and_reporting/ai_tips Quick tips to get the most out of Fabi's AI data analyst and conversational BI features. A large part of unlocking massive productivity gains with Fabi.ai is leveraging the AI. Here are a few quick tips to make sure you get the most out of our AI.