Changelog

New features, improvements, and fixes from the Supersimple team.

AI can read saved explorations

AI can now look up your saved explorations, copy over any content and reuse their logic. It can use both personal and team explorations you have access to and link back to the blocks it used.

Export and import personal explorations

supersimple export now includes your own Personal space explorations alongside Team ones, so they can be kept in step with data model changes too. They're marked with visibility: personal in the YAML:

explorations:
  # Team exploration – no visibility needed
  revenue-overview:
    name: Revenue overview
    folder: Finance
    view:
      cells: [...]
 
  # Personal exploration – imported into your own Personal space
  weekly-signups:
    name: Weekly signups
    visibility: personal
    folder: My drafts
    view:
      cells: [...]

When imported, they land back in your own Personal space. Other users' personal explorations are never included in your export.

Read more in the CLI docs.

Inbox item detail pages

Each Inbox item can now be opened up in a detail page. You can use this to share specific inbox items with teammates.

Column-level access control

You can now hide individual columns of a data model from users who shouldn't see them. Add an access block to any model property, and only users matching its conditions can see, filter or use that column – everyone else still gets the rest of the model.

properties:
  salary:
    name: Salary
    type: Number
    access:
      user_parameters:
        department: hr

To avoid repeating the same conditions across models and columns, define them once under access_rules and reference them by name, like access: hr.

Read more in the model access control guide.

"Only" button in multi-select dropdowns

Multi-select dropdowns across Supersimple (including Variables) now have an Only button on each option for quickly deselecting everything else and selecting just the one option.

A multi-select dropdown with an Only button appearing on the hovered option

Quick actions with ⌘K

Press ⌘K to navigate Supersimple and take quick actions without lifting your fingers off the keyboard.

Use the command menu to:

  • Jump between saved explorations, Inbox, and Settings.
  • Ask AI about the selected block or start a new question.
  • Select, duplicate, or delete blocks.
  • Save or rename explorations.
  • Switch between light and dark mode.

Improved alerts list

Under account settings, each configured Alert now shows its author, and your personal alerts are shown separately from team alerts.

Alerts in account settings, split into My alerts and Team alerts

TypeScript and Scala code blocks

Code blocks now support TypeScript and Scala alongside Python. Use data from other blocks in your exploration to write custom calculations and display the results alongside your charts and tables.

A TypeScript code block simulating sales forecasts from pipeline data

Restricted users

The new Restricted user role lets you give partners and contractors access to selected parts of your workspace. Restricted users can only see exploration folders and data models you explicitly grant them access to, keeping the rest of your team's work private.

Use variables in SQL blocks

SQL blocks can now use exploration variables; autocomplete will suggest variables and set up the right syntax as you type their name.

Using date range and payment plan variables in a SQL block

Reference a variable by name with {{variables.Payment plan}}. Date range variables also expose .from and .to, so one control can set both ends of a date filter.

Personal and Team exploration folders

Saved explorations can now be organized into folders across separate Personal and Team spaces.

Choosing a Personal or Team folder while saving an exploration

Folders are available directly in the sidebar and data catalog, making saved explorations easier to organize and find as your team's library grows.

Personal explorations remain private, but you can share a point-in-time snapshot with teammates using Copy link.

Exploration version history

Previous edits to saved explorations can now be found under Version history in the right sidebar.

Viewing previous edits to a saved exploration in Version history

Each version shows a summary of what changed, as well as individual changes to each block. Edit history can also be accessed by your AI agents through Supersimple's MCP server.

Scheduled exploration exports

Saved explorations can now be exported from the top menu bar on a recurring schedule or as a one-time download.

Exporting a saved exploration as a one-time download or on a recurring schedule

For scheduled exports, choose the frequency, delivery cadence and timing, and recipients. Both options let you choose between light/dark mode and the width at which your report should be captured.

Answer guidance

Guide AI behavior to document gold-standard paths for dealing with specific types of questions. When answering user questions, AI dynamically loads in relevant guidance entries.

Creating answer guidance with source scope, instructions, and an expected table with a chart

For database questions, you can copy finished tables and charts from an exploration and paste them directly into a guide.

Written guidance can be used to provide additional instructions for how to analyze and present answers, or what to search for from where.

Manage answer guidance under Settings → AI → Answer guidance.

Exploration history

Your history of exploring data in Supersimple is now automatically saved and summarized in your personal activity history. Open the new Activity tab on the History page to pick up exactly where you left off.

The Activity tab on the History page, showing exploration sessions grouped by day

Your history is grouped into sessions based on both time and context-switching, summarized, and displayed with a full timeline of the steps you took.

Other improvements

  • You can now rename your database connections and adjust their connection timeout under the Integrations tab in Settings.
  • AI is now aware of your disabled (unchecked) integrations, so it can let you know when you seem to be trying to use one of them.

Date precision in data models

Date fields in your data model can now declare the calendar precision they represent. For example, if a field contains one value per month, set its precision to month:

properties:
  subscription_month:
    name: Subscription month
    type: Date
    precision: month

Supersimple uses the declared precision by default when grouping the field, while still letting you choose a different precision in an exploration. It also preserves the precision through derived models, custom formulas, funnels, and date aggregations.

Supported precisions are year, quarter, month, week, day, and hour.

Read more in the docs.

Inbox for improving your data models and AI context

Supersimple now continuously analyzes AI agent traces against your data models and provided context. It proactively surfaces missing data, ambiguous definitions, missing context, and unclear business terminology.

Supersimple's Inbox detects trends across different conversations, workflows, and users, grouping related findings into actionable items with links to the original conversations.

An Inbox item recommending a new location property on the Account model

Data teams use the Inbox to prioritize high-impact improvements to data models and AI context, then mark them as resolved once addressed.

Inbox is also accessible via the Supersimple MCP, allowing your favorite coding agent to use the Inbox as input for future work.

Read more about Supersimple Inbox.

Supersimple MCP Server: use Supersimple through Claude, Cursor and more

Supersimple's Model Context Protocol (MCP) server now lets you use Supersimple's AI with your entire company's context, right from inside Claude, Cursor, or any other MCP-capable assistant.

Once it's connected, your favorite AI assistant gains an Ask Supersimple tool to use whenever it needs to access any of the data you've connected to Supersimple. Answers respect your access, just like when asking from inside Supersimple's app.

See our MCP server docs to get set up.

If you are deciding whether to connect Claude directly to your data stack or use a governed analytics layer underneath it, see our Supersimple vs Claude for BI comparison.

Custom MCP servers as data sources and tools

You can now connect any custom MCP (Model Context Protocol) server to Supersimple. Users can select it under the AI sources selector, alongside Supersimple's native integrations.

To enable proper access control, each user can separately log in to every given MCP server – authenticating it to act on their behalf.

Learn more in our docs

Custom MCP Support

Multiple database connections

A Supersimple account can now read from more than one database. Point each data model at the connection it should query with the connection field.

models:
  account:
    name: Account
    table: myschema.account
    # Name of the connection, exactly as it appears in Supersimple settings
    connection: Production Postgres Replica
    primary_key:
      - account_id

Relations (joins) only work between models on the same connection, and queries that try to combine connections are rejected with an explanation of why. To add another connection to your account, please contact support or your account manager.

Read more in the docs.

Ask Supersimple from Slack

Tag @Supersimple in any channel it's in, and it answers right there in the thread.

@Supersimple which customers churned last month and why?

Mentioning the Supersimple bot in a Slack thread and getting an answer back

It reacts with 👀, works through the question, and replies in the thread with an Open in Supersimple button for the full exploration. Ask in a public channel and everyone there sees the answer. DM the bot to keep a question private.

Answers respect your access. The bot recognizes who's asking and uses exactly the permissions you'd have inside Supersimple, across every connected source. Two people asking the same thing may get different results.

See the Slack integration docs to get set up.

Pull Select variable options straight from a model

Select variables can now source their options directly from a model field, so a dropdown always reflects your live data.

No more building a helper block for every exploration just to populate the choices. Pick the field and you're done.

Variable options from a model

Unlimited CSV export

Export as much data as you need. The row cap is gone.

While a large export streams, a live progress chip shows you exactly where things stand: a percentage when the row total is known, or a running row count and elapsed time otherwise.

Changed your mind? Cancel mid-stream with a single click.

Unlimited CSV export

Agent skills

Skills are reusable instruction packs Supersimple's AI agent can load for specific kinds of work. When relevant to the current question, the AI pulls in the skill's full instructions on-demand.

Agent skills in account settings

This keeps your base system instructions focused and clear while still giving the agent deep, task-specific guidance where needed. Use skills to capture how your team writes a weekly report, finds the latest contract for a vendor, or any other recurring or complex workflow.

Skills can also be permissioned based on user attributes. Keep in mind that data access permissions still always apply, so the agent will only be able to pull in information from sources and data models the user has access to.

Agent loading a prebuilt skill mid-conversation

Manage skills under account settings → AI → Agent skills.

Auto-tidied AI responses

AI now collapses steps like intermediary outputs, debug queries, and more. This means you still see everything it did, while keeping the clean, final output front and center.

Accepting the AI's response drops these intermediary steps by default.

Array functions in custom formulas

Custom formulas now include a dedicated set of array functions for working with list values:

FunctionDescription
array_contains(array, value)Returns true if the array contains the given value.
array_length(array)Returns the number of elements in the array.
array_to_string(array, delimiter)Joins the elements of the array into a string with the given delimiter.
array_get(array, index)Returns the element at the given position (1-based index).
array_any(array1, array2)Returns true if the two arrays share any common element.
array_all(array1, array2)Returns true if all elements of the second array are present in the first.
array_intersect(array1, array2)Returns an array of elements present in both arrays.
array_union(array1, array2)Returns an array of unique elements from both arrays combined.
array_diff(array1, array2)Returns elements from the first array that are not in the second.

Read more in the custom formulas reference.

Date range variables

Date Range variables let you use a single Variable for both the start and end date of a filter. Pick a Dynamic range like "this month", or use Specific dates for things like "January 4th" or "all of February 2026".

You can also type the date range you're looking for in plain English, and see a real-time preview of how we interpreted your input.

Applying the Date Range variables to queries is as easy as filtering for some field "is" and then picking your Date Range variable from the dropdown.

User groups and more flexible permissions

User groups

User groups allow setting parameters for multiple users at once. Define groups with specific parameters and assign users to them. This way, you can manage permissions for teams or departments without configuring each user individually. User groups can be configured by account admins under settings.

Model-level permissions

Model-level permissions control who can see and query a data model. Hide entire models from users based on their parameters like properties given via user groups or their email.

Define an access block on the model and combine conditions with AND/OR logic to match departments, regions, specific emails, or anything else on the user.

models:
  salaries:
    name: Salaries
 
    table: hr.salaries
 
    access:
      user_parameters:
        department: hr
        data_level: sensitive
 
    properties:
      employee_id:
        name: Employee ID
        type: String
      salary:
        name: Salary
        type: Number

Row-level permissions

You can now also use custom user parameters in addition to the user's email to filter rows within a model.

Row-level permissions filter which rows a user can access within a model, using {{user_parameters.<key>}} placeholders injected into SQL at query time. Reference the placeholder in the model's sql and each user sees only the rows matching their own parameters.

models:
  orders:
    name: Orders
 
    sql: |-
      SELECT * FROM orders
      WHERE region IN ({{user_parameters.region}})
 
    properties:
      order_id:
        name: Order ID
        type: String
      region:
        name: Region
        type: String

Read more in the documentation.