1. Schema validation on every render
Every Interactive Tool has an input schema, derived from the component’sproperties declaration. When the model calls the tool, the platform validates the model’s response against the schema before any rendering happens.
If the model returns malformed data, such as a missing required field, a wrong type, or an out-of-range number, the call is rejected with a typed error and the renderer is never invoked. The error names the fields that failed, so the model can correct its response on retry.
Validation is not opt-in. Every tool call goes through it.
2. Component allowlists
A layout component declares which view components the model is allowed to compose inside each slot. The allowlist is part of the component’s BindJS property definitions, the slot property’sallowedComponents array. It becomes part of the tool’s schema, so the server-side validation above enforces it. If the model references a component that isn’t on the list, the call is rejected and that component never reaches the renderer.
3. Isolated on the server, sandboxed on the client
Data Tools run in V8 isolates, not in the MCP server process. The isolate enforces:- Secrets are injected via
env.secretsat runtime, never embedded in the component’s code or visible in the package bundle. The model never sees your keys. - Outbound HTTP is restricted to allowed domains declared on the Data Tool. A handler cannot reach an arbitrary URL.
- Execution time and memory are capped (60 seconds, 128 MB by default). Runaway handlers terminate cleanly.
- No filesystem access, no environment variables, no cross-tenant exposure.
4. Versioning and rollback
Every published Type is pinned to a specific package version. Editing a published Type puts it inmodified status: the production endpoint continues to serve the last published version while the draft endpoint shows the working copy.
When you publish, the package version increments. Reverting is a metadata change: metabind rollback re-pins tools to a previous package version. No redeploy, no rebuild.
This means a bad publish never strands your users. You see the issue in the project’s execution history, you roll back, and production is whole again.
Tool-call history
Every tool call is recorded in the project’s execution history, with its timestamp, tool, status, timing, how the caller authenticated, and a short snippet of its input and output. Failed validations and rejected calls are recorded alongside successful ones, so a governance review can see what the model tried to do, not just what got through. Each failure carries an error type (configuration, runtime, tool, or upstream), so failures separate cleanly when triaging.
Analytics roll usage up per tool: call count, success and failure counts, latency averages and p95s. Find both under Analytics in Metabind Studio, on the Developer plan and up.
Why this matters
Answers are composed at runtime, so the checks have to travel with every answer. MCP and AI gateways govern which tools and data an agent can reach; Metabind also governs what it shows. The two work together. For an enterprise team, the governance model is the difference between prototype and deployable. For a developer team, it’s the difference between writing infrastructure to constrain the model and writing tools.What governance does not cover
Governance constrains what the model can render and which tools it can call. It does not constrain what the model says in text or what the LLM provider’s safety filters do. Those are concerns for the LLM provider and the host application, not the rendering platform. With the Agent Proxy, your system prompt steers the model on every turn, but a prompt can’t force a model’s wording. Governance also does not enforce business correctness. A Data Tool that returns the wrong price returns the wrong price. Schema validation catches malformed responses, not factually wrong ones. Tool design and the model’s own reasoning carry that responsibility.Where governance lives in Metabind Studio
Governance settings appear in two places in the UI:- Component editor → property →
allowedComponentsdeclares which components can be composed in each slot of a layout. Authored in BindJS as part of the property definition. See Component allowlists. - Data Tool → Allowed Domains and Secrets scopes outbound HTTP and credentials per Data Tool. See Data Tools.
What to read next
Tools and Types
What the governance model is governing.
Components and Packages
How allowlists and packages combine for safe rendering.
Sandboxed execution
How Data Tool handlers run, and their limits.
Schema validation in depth
How schema validation runs and what it catches.