# October 13, 2026: Rule actions, versions, and simulation Rule actions publish results instead of writing them to the event, the **New version** button creates each draft, simulation now covers analyses, conditions accept regular expressions, and the agent connected via MCP creates rules. ## Results published by actions An action is a step a rule runs when a condition is met. **Run analysis**, **Enrich** and **Extract IP prefix** now only publish temporary variables, listed under **Published keys**. You decide which results reach the event: one click on a key inserts the **Set field** that writes the result. Existing rules were converted automatically. See [Actions](/en/rules/actions/#published-results). ## New versions and drafts The **New version** button creates a rule or analysis draft from an existing version or blank. Editing a published version no longer creates a draft automatically, and each rule allows up to three open drafts. **Remove** is now called **Archive**, and **Discard** deletes a draft. See [Versioning](/en/rules/versioning/#new-version). ## Rule simulation A rule simulation now uses the analysis windows you choose: the account's live history, empty windows, or a supplied value for each cell. The result separates the fields written, the temporary variables, the unevaluated cells and the execution of each condition, step by step. See [Simulation](/en/rules/simulation/#simulate-a-rule). ## Analysis simulation Any version of an analysis, including a draft, can have its score calculated with manually entered dimension values. The simulation shows the value, the sample and the source of each cell's reading, plus the values a rule would receive. Nothing is written. See [Simulation](/en/rules/simulation/#simulate-an-analysis). ## Regular expressions and `split()` With the `=~` and `!~` operators, a condition compares a text with a regular expression, as in `$merchant_id =~ "(?i)^m"`. The new `split()` function extracts a part of a text, such as the email domain in `split($user_email, "@", -1)`. See [Expression syntax](/en/rules/expression-syntax/#regular-expressions). ## Add to list with an expression The value added to a list can come from an expression, such as a composite key built with `concat()` or a temporary variable. The action now accepts fields of any single-value type, and a fixed value outside the list's format is refused when saving the rule. See [Add to list](/en/rules/actions/add_to_list/). ## Agents The agent connected via MCP can now create rules, edit and validate drafts, simulate rules and analyses, export events and query lists. MCP (Model Context Protocol) connects an AI assistant, such as Claude Code or Cursor, to the account. Publishing remains restricted to the panel, and data queries have an hourly limit. See [Agents](/en/admin/agent/#operations). ## Other improvements - **Exports**: an export with no records for the chosen filters and period gets the **No records** status, no longer **Error**. - **Fields**: the **Merchant category (MCC)** display shows the code followed by the category name, such as `5411 ยท Supermarkets and grocery stores`. The **Explore** filter finds the code by name. See [Fields](/en/events/event_fields/#value-display). - **Fields**: date and time values are displayed in the local format, in the account's time zone. Filters, exports and the API keep the ISO 8601 format. - **Fields**: a field's storage settings now also apply to its observed twin (`_shadow`). Tracking is no longer offered on sensitive fields. - **Agents**: Antigravity CLI replaces Gemini CLI in **Connect agent**. Agents configured through a file receive a ready-to-paste configuration block. - **Accounts**: the account list no longer shows the short ID. - **Languages**: the panel's confirmation and error messages now follow the user's language, in English and in Spanish. ## Fixes - **Explore**: a filter with the hash of a sensitive field, copied from a result or an export, found no event when the field's size limit was smaller than the hash. The filter now finds the events, and a value that is too long gets a message of its own.