# Release Notes — 2.74 Covers the **2.74** release series. Most recent patch: **2.74.3**. Unless a subsection notes otherwise, changes apply to both Monad SaaS and self-hosted. ## New features & improvements **SaaS & self-hosted** - **Monad MCP — edit one pipeline edge without rebuilding the graph** — the new `update_pipeline_edge` tool changes a single edge's name, conditions, or schema-detection settings in place. Previously an assistant had to resubmit the whole pipeline to touch one edge, and any field it forgot to resend was silently dropped — an omitted condition widened a filtered edge to pass-all, and an omitted schema-detection setting discarded the edge's learned baseline. The tool reads the edge back after the change and reports what actually landed. [Docs →](https://app.monad.com/docs/guides/mcp-usage) (2.74.0) *(For teams using the Monad MCP integration.)* - **Monad MCP — complete pipeline introspection** — `get_pipeline` now renders each edge's full condition tree (every rule and its configuration, not just the top-level operator), the component each node points at, node names alongside their IDs, and whether a node overrides its component's configuration. An assistant can now audit, document, or faithfully duplicate a pipeline's routing from the MCP alone. (2.74.0) *(For teams using the Monad MCP integration.)* - **Monad MCP — raw JSON on the pipeline read tools** — `get_pipeline`, `get_pipeline_status` and `get_node_status` accept the same `raw` option the type-lookup tools already had, returning the complete API document when the rendered summary omits a field you need. (2.74.0) *(For teams using the Monad MCP integration.)* - *Access:* opt-in — pass `raw: true` on the call; the rendered summary remains the default. - **Monad MCP — forgiving type lookups** — the `get_input_type`, `get_output_type`, `get_transform_type`, `get_enrichment_type` and `get_alert_rule_type` tools now accept `type`, `id` or `type_id` as well as their canonical parameter, and an unknown type ID returns the closest matches from the catalog instead of an unexplained server error. (2.74.0) *(For teams using the Monad MCP integration.)* - **Deduplicate and Hash transform operations** — two new operations for transforms. **Hash** writes a digest of the whole record or of selected fields to a key you choose (SHA-256 by default; MD5, SHA-1 and xxh128 are also available), giving you a stable fingerprint for correlation. **Deduplicate** drops repeat records seen within a rolling window of up to five minutes, keyed on the whole record or on selected fields. [Deduplicate docs →](https://app.monad.com/docs/transforms/deduplicate) · [Hash docs →](https://app.monad.com/docs/transforms/hash) (2.74.2) - *Access:* opt-in — add a **Hash** or **Deduplicate** operation to a transform. Deduplicate compares across records, so it must be the only operation in the transform or the last one. **Self-hosted only** - **Database migrations now run from the API pod** — the separate `db-migrations` Job is gone; on upgrade the `api` pod applies migrations from an init container on the same image, so the schema and the code that needs it are always the same release. `partition-manager` is now its own component, and one `global.monad.natsUrl` value sets the NATS URL for every component. If your values override anything under `db-migrations`, remove it; if you run an external Postgres, make sure the `monad-db-app` Secret includes the `uri` key. (2.74.0) ## Fixes - **Monad MCP status tools answer "is data flowing?"** — `get_node_status` now shows each node's name and type, records in and out, when it last processed a record, and any records shed unattempted; `get_pipeline_status`'s `metrics` filter works (every value previously returned an error); and `sample_node_data` now says plainly that it returns a retained sample rather than proof of live flow, pointing to the status tools for liveness. (2.74.0) - **Monad MCP alert and secret guidance corrected** — alert-rule severity is now offered as the exact set the platform accepts (the documented `warning` was never valid and always failed), and the tool descriptions and guidelines show the correct way to reference a secret, which previously led to an unexplained server error. (2.74.0) - **API: partial updates no longer require re-sending the component type** — a `PATCH` to an input, output, or enrichment that omitted the unchanged `type` field failed with a 400; the stored type is now used, so a description-only or config-only update works as expected. (2.74.0) - **Google Cloud Logs, GKE Audit Logs, and Looker audit logs inputs no longer lose late or backdated entries** — the inputs now poll in windows keyed on when Google received each entry rather than its event time, so an entry ingested late is still collected; the Looker input, which had matched no log entries at all, returns logs again. Records arrive a couple of minutes after Google ingests them. [Docs →](https://app.monad.com/docs/inputs/google/google-cloud-logs) (2.74.0) - **Cisco Meraki Organization Configuration Changes input stays within Meraki's lookback window** — a checkpoint older than the 365 days Meraki retains is now clamped forward instead of producing an undefined query, and records without a timestamp no longer fail the run. (2.74.0) - **CrowdStrike Event Stream input resumes correctly after a restart** — the stream's application ID is now persisted with the input's state, so a pipeline restart continues the existing feed instead of colliding with it. (2.74.1) - **Lansweeper Vulnerabilities input syncs the full inventory on a schedule** — the incremental sync keyed on a global publication date could skip records and never delivered updates to an existing vulnerability; the input now re-lists the full inventory on a **Cron** schedule you set (required) and drops unchanged records. The former **Backfill Start Date** setting is removed. [Docs →](https://app.monad.com/docs/inputs/lansweeper/lansweeper-vulnerabilities) (2.74.0) - **Palo Alto Cloud Security Alerts input no longer skips events after a pause** — the relative lookback window is now rounded up, so events from the first minute after a pipeline is re-enabled are collected instead of falling into a gap. (2.74.2) - **Finxact Messages and Error Log inputs no longer stall on a missing detail record** — when Finxact returns no detail for a message or error entry, the input emits the entry on its own and moves on instead of retrying the same record indefinitely. (2.74.3) ## Breaking changes None. ## Need help? See the [Monad docs](https://app.monad.com/docs) for setup guides and reference, or reach out to Monad Customer Support at [support@monad.com](mailto:support@monad.com) or via your dedicated Slack customer channel. :::note Self-hosted deployments upgrade to a `2.74.x` release with `helm upgrade`. Review the **Breaking changes** section above before upgrading; when it says "None," the upgrade is drop-in. :::