What's New in FLUID 0.7.4 — Runtime agentPolicy Enforcement at the MCP Gateway
FLUID 0.7.4 makes an expose agent-consumable over MCP and turns exposes[].policy.agentPolicy into a gate the FLUID MCP output-port gateway enforces on every read.
The headline change is behavioral, not structural: policy.agentPolicy's shape is unchanged from 0.7.3. What's new is that the gateway now actually enforces it at request time instead of treating it as advisory metadata.
✅ 0.7.4 is fully backward-compatible with 0.7.3. This release is purely additive — every valid 0.7.3 contract validates as 0.7.4 unchanged. See Backward compatibility — fully additive for details.
🔌 exposes[].mcp — opt an expose into the MCP gateway (NEW)
A new exposeMcp block declares an expose as agent-consumable over MCP and carries per-expose overrides for the output-port server:
exposes:
- exposeId: customer_profiles
kind: table
# ...contract, binding, policy...
mcp: # NEW in v0.7.4
sampling:
maxRows: 100 # integer ≥ 1, default 100
classification:
dataClass: confidential # public | internal | confidential | restricted
mcp.sampling.maxRows— integer, minimum1, default100. A hard cap for thesampleMCP tool. Defends against an over-curious agent asking for petabyte-scale samples.mcp.classification.dataClass— one ofpublic | internal | confidential | restricted. Surfaced on thedescribetool so consumer agents can declare downstream handling. Advisory only — it is a hint, not an enforced control.
🛡️ Runtime agentPolicy enforcement (behavioral change)
The FLUID MCP output-port gateway now enforces exposes[].policy.agentPolicy on every read:
allowedModels/deniedModels— the calling model is checked against the allow/deny lists before any data is returned.allowedUseCases/deniedUseCases— the declared use case is checked against the controlled vocabulary.
Requests that violate the policy are rejected at the gateway rather than served. The agentPolicy shape is unchanged from 0.7.3 — if you already declared it, no edits are needed; it simply becomes a live gate.
🙈 PII / PHI value redaction
When a column is classified as PII/PHI, the gateway redacts the values, not the column: the column stays visible in the response shape, but each value is replaced with [REDACTED-PII]. Agents still see the schema and can reason about structure without ever receiving the sensitive payload.
phiis not new in 0.7.4 — it has been a value in the columnsensitivityenum since 0.7.3.
🐘 New binding platform and formats (NEW, additive)
binding.platformgainspostgres— for the MCP output-port PostgreSQL driver. Existing platforms (gcp,aws,azure,snowflake,databricks,kafka,local,kubernetes,other) are unchanged.binding.formatgainspostgres_table,athena_table, andglue_table— added alongside (not replacing) the existing formats includingsnowflake_viewand theredshift_*values.
binding:
platform: postgres # NEW in v0.7.4
format: postgres_table # NEW in v0.7.4 (also: athena_table, glue_table)
location: { ... }
fluidVersion also moves from const: "0.7.3" to enum: ["0.7.3", "0.7.4"], so existing 0.7.3 values still validate against the 0.7.4 schema.
Backward compatibility — fully additive
0.7.4 is fully backward-compatible with 0.7.3. Every valid 0.7.3 contract validates as 0.7.4 unchanged — the release only adds optional fields and enum values. Nothing was removed:
- Top-level
governanceandbinding.governance(the AWS Lake Formation blocks — data-lake admins, LF-tag / TBAC definitions, per-resource principal grants, row/column filters) remain valid. binding.formatstill acceptssnowflake_view,redshift_table,redshift_serverless, andredshift_external_schema— the newpostgres_table/athena_table/glue_tablevalues are added alongside them.runtime.platformstill acceptsathena,glue, andredshift.- Acquisition enums are unchanged: catalog
registerstill acceptsdatamesh_manager; managed-deploymenttargetstill acceptsopentofu.
The only schema-level change beyond the additions is that fluidVersion moves from const: "0.7.3" to enum: ["0.7.3", "0.7.4"], so a 0.7.3 value keeps validating.
Upgrading
fluidVersion: "0.7.4" # optional — "0.7.3" still validates against the 0.7.4 schema
Bumping the version is all it takes — there are no removed fields to migrate off. The new exposes[].mcp block, the postgres platform, and the postgres_table / athena_table / glue_table formats are all optional and additive.
References
- Schema Changelog — the field-by-field machine diff for every version.
- Full 0.7.3 → 0.7.4 diff — the complete auto-generated change list (additive: new
exposes[].mcpblock, newpostgresplatform andpostgres_table/athena_table/glue_tableformats, andfluidVersionwidened to an enum).
