Decision Gate Provider Contract Builder
Build provider contracts that define provider checks (queryable evidence) with strict-mode comparator rules. This tool never calls the network and never stores data outside your browser session.
What this produces
- A single provider contract JSON (the file you ship alongside an MCP provider).
- Strict-mode comparator allow-lists based on the returned value type.
- Schemas and metadata aligned with the Decision Gate contract.
Validation model
- Strict mode enforces the comparator compatibility matrix derived from the returned value type.
- Permissive mode allows unsafe comparators but flags them as warnings.
- Schema parsing and comparator validation happen locally in the browser.
Builder workspace
The interactive builder loads below. It runs entirely in your browser, never calls the network, and never stores data outside your session.
Copy JSONDownloadResize preview panelResize previewTutorialCompose selectionClear selectionCombine AssetCore projection modules to seed a full provider contract.ModulesScalar inventory plus 2D spatial grids.0D + 2DBalances + slots for scalar inventory state.0D CoreDiscrete 1D container topology.1D GridDiscrete 2D container topology.2D GridContinuous 1D + 2D fixed-point geometry.Continuous GeometryAll discrete and continuous projections.Full AssetCorePresetsAssetCore composition loaded.Select at least one AssetCore module.Composition warnings: {count} mismatch(es) detected.{templates} modules / {predicates} checksSelect modules to compose a contract.0D1D2DBalanceContinuousDiscreteGridSlotsScalar balance containers with fixed-point quantities.0D BalanceSlot containers for discrete occupancy and class mapping.0D SlotsDiscrete 1D grids with indexed cell data.1D Grid (Discrete)Discrete 2D grids with cell geometry and placement.2D Grid (Discrete)Continuous 1D geometry with fixed-point segments.1D ContinuousContinuous 2D geometry with fixed-point rectangles.2D Continuous{count} checksAssetCore compositionThis builder outputs a provider contract for Decision Gate.Choose a template or define provider identity.Add provider checks and define returned value types and comparators.Review validation, then download or copy the contract.Start your provider contractDefine provider checks and comparator rules.Provider ID: {id}Provider contract builderTemplatesStart with a strict template and customize from there.New checkAnchor typesAdd anchor types if the provider emits stable anchors.file_pathActionsComparatorsCheck nameProvider inputsReturned value type{count} selectedStrict mode disables comparators that conflict with the returned value type.Selected: {list}No comparators selected yet.Allowed comparatorsContent typesAdd at least one MIME type.application/jsonCheck descriptionDescribe the returned value and when it should be used.Explain what this check returns.DeterminismDescribe whether results depend on time, external state, or remain stable.EditProvider check detailsNo provider checks yet. Add one to define your first signal.Select or add a provider check to edit.DescriptionShort descriptionParams (JSON){ "key": "value" }Result (JSON){ "ok": true }Add exampleNo examples yet.Provide sample params and results to help tooling and authors.ExamplesExample {index}Provider inputsComparator matrixCheck nameUse lowercase snake_case. Referenced by scenarios (e.g. team_id).e.g. team_idDeclare evidence anchors and content types returned by this check.Evidence outputsProvider inputs optionalProvider inputs requiredIndicate whether EvidenceQuery.params must be supplied to fetch the value.Provider input schemaRemoveRemove {name}? This cannot be undone.Remove provider checkReturned value type{name} | {type} | {count} comparatorsEach provider check defines a queryable signal, its returned value type, and allowed comparators.Provider checksReturned value type: {type}UnionUntitled checkProvider checks ({count})Comparators selectedValidation clean{count} error(s) still need attention.Check namesComplete the checklistProvider identityAdd a provider ID and name.Ready to exportExport readinessNot available for {type} returned values in strict mode.Not compatible with {type} returned values.Opt-in comparator disabled by policy.Opt-in comparator enabled by policy.Opt-in comparator selected without enabling the policy.Click to jump to the field.View comparator matrixCancelRemove{count} check(s) will be added.CancelApply changesNo notable changes detected.Review what will change before replacing your current contract.Provider identity: {name} ({id}){count} check(s) will be removed.Apply {name}?unknown{count} check(s) will be updated.DismissLoaded your last builder draft for this tab.Draft restoredSaved {time}Start freshCheck name is required.Check name must be snake_case (lowercase letters, numbers, underscores).Config schema JSON is invalid: {error}{name}: example {index} params JSON is invalid.{name}: example {index} result JSON is invalid.Invalid JSON.Invalid JSON: {detail}Select at least one comparator for {name}.Provider ID is required.Provider name is required.Strict mode: {name} uses {invalid} comparators that do not match a {type} returned value.AssetCore is a deterministic structured memory substrate that stores world state in typed containers. The composition tool lets you seed a complete Decision Gate provider contract from AssetCore projection modules.Choose presets for common configurations or select individual modules to build a custom provider. The composed contract includes all provider checks, schemas, and comparator rules needed to query AssetCore state.What is AssetCore composition?Asset Core documentationLearn about the deterministic memory modelProvider development guideBuild and test your provider contractAssetCore template catalogBrowse all available projection modulesModules map to AssetCore container topologies (balances, grids, continuous geometry)Provider checks are pre-validated for strict mode compatibilityComposed contracts are ready for capabilities_path in decision-gate.tomlBuild Decision Gate providers from structured memory projectionsStart with a preset to quickly prototype, then customize by adding or removing individual modules.AssetCore compositionEach module represents a family of AssetCore projections. Selecting a module adds its provider checks, result schemas, and strict-mode comparators to your composed contract.Modules are independent and can be combined freely. The builder automatically merges overlapping provider checks and validates comparator compatibility.What are AssetCore modules?Providers referenceHow providers expose checksAssetCore template catalogDetailed check and schema documentation0D Balance: Fixed-point quantities in scalar containers0D Slots: Discrete occupancy and class mapping1D / 2D Grid: Cell-based spatial indexingContinuous 1D / 2D: Fixed-point geometry segments and rectanglesIndividual projection families for fine-grained controlHover over a module card to see its check count before selecting.AssetCore modulesPresets are curated bundles of AssetCore modules designed for specific container topologies. They give you a working provider contract in one click.After applying a preset, you can still add or remove individual modules. Presets are a starting point, not a constraint.What are AssetCore presets?Core model conceptsUnderstand Decision Gate architectureAssetCore template catalogView all modules included in each preset0D Core: Scalar inventory (balances + slots)1D / 2D Grid: Discrete spatial containersContinuous: Fixed-point geometry (lines, rectangles)Full AssetCore: All projections combinedPre-configured module bundles for common use casesThe "0D + 2D" preset is ideal for games with inventory systems and 2D spatial placement.AssetCore presetsUse this panel to name the check, describe its behavior, and set the returned value type.Changes update the contract preview and validation immediately.How do I edit a check?Builder guideWalkthrough of every editor sectionProvider developmentSchema patterns and examplesChanging check names breaks existing scenariosDescriptions should explain the returned valueEdit one provider check at a timePrefer small, focused checks over huge catch-alls.Check editorEach provider check declares a name, returned value type, allowed comparators, and optional provider inputs.Scenario predicates later reference these checks by name when building gates.What is a provider check?Builder guideHow to author provider contractsScenario condition authoringHow scenarios use checksProvider developmentImplement evidence providersCheck names map to EvidenceQuery.predicateReturned value type drives comparator compatibilityInputs are parameters required to fetch evidenceDefine each queryable check your provider can answerChanging check names later breaks existing scenarios.Provider checksComparators decide how EvidenceResult.value is tested in ScenarioSpec.Strict mode blocks comparators that do not match the returned value type.What are comparators?Scenario condition authoringHow scenarios apply comparatorsData shapesComparator compatibility rulesStart with equals and not_equalsAdd ordering only for numeric or date typesDefine how scenarios compare returned valuesKeep the comparator list small to reduce scenario ambiguity.Allowed comparatorsAnchor types describe stable identifiers you can use for offline verification or audit. Content types declare the MIME type of any evidence payloads.If the provider does not emit anchors, leave anchor types empty. If the provider returns non-JSON, list the correct content types.What are evidence outputs?Audit log referenceEvidence audit and anchorsProvider developmentCapability contract requirementsAnchor types enable audit-grade traceabilityContent types support disclosure and tooling correctnessDeclare anchors and content types returned by the providerFor most JSON providers, start with application/json and add more only when needed.Evidence outputsExamples pair params with representative results so tooling can render guidance and validate comparator assumptions.Keep examples minimal and deterministic. Avoid secrets or live data.Why add examples?Predicate authoringHow predicates use provider checksProvider developmentExample schema guidanceUse one example per major result shapeMatch params_required rules (omit params when not needed)Examples help scenario authors and tooling validate expectationsExamples are optional but strongly recommended for LLM authoring.ExamplesThis preview matches the schema loaded from capabilities_path.Copy or download the JSON alongside your MCP provider.What is the preview?Provider configurationcapabilities_path usageProvider developmentBuild and ship provider contractsThe contract is the source of truth for provider checksKeep it versioned with your provider codeThe JSON provider contract Decision Gate consumesRe-export after any schema change.Contract previewProvider ID is the stable identifier used in EvidenceQuery.provider_id and ScenarioSpec predicates.Name and description help scenario authors understand where checks come from and appear in docs.What is provider identity?Provider configurationdecision-gate.toml provider entriesProvider developmentHow to build MCP evidence providersUse snake_case provider IDs that match your configProvider names are human-readable labelsDescriptions appear in generated docs and toolingIdentify the evidence source used in scenariosChanging provider IDs breaks existing scenarios.Provider identityProvider inputs become EvidenceQuery.params when scenarios run.If inputs are required, scenarios must supply them; if not, params should be omitted.What are provider inputs?Provider protocolEvidenceQuery request/response shapeProvider developmentHow to model provider inputsUse JSON Schema to validate paramsSet additionalProperties to false for safetyOnly include inputs the provider needsParameters required to fetch the valueKeep param schemas minimal and deterministic.Provider inputsThis is the type of EvidenceResult.value returned by the provider, not the expected value in a scenario.Strict mode derives allowed comparators from this type.What is the returned value type?Provider developmentContract schema guidanceData shapesHow schemas influence validationString formats (date, date-time, uuid) change comparator rulesUnion types intersect comparator setsChoose the narrowest type that matches outputDescribe the value the provider returnsModel the provider output exactly to avoid strict-mode errors.Returned value typeKey pointsRelated resourcesTemplates are minimal provider contracts not tied to AssetCore. Use them when building providers for HTTP endpoints, environment variables, or other custom data sources.Each template demonstrates a different result type pattern: boolean flags, numeric status codes, or structured objects. Expand from there as your provider grows.What are Decision Gate templates?Builder guideStep-by-step builder walkthroughProvider developmentEnd-to-end provider implementationQuickstart guideRun your first scenario in minutesMinimal: Single boolean provider checkHTTP Status: Parameterized integer checkSchema Inspection: Structured object checkStarter contracts for custom data sourcesStart with the Minimal template to learn the contract shape, then graduate to more complex patterns.Decision Gate templatesExplain this returned value typeThe builder mirrors DG MCP strict validation to catch errors early.Click any issue to jump to the exact field.Why am I seeing validation issues?Data shapesComparator validation referenceErrors block export in strict modeWarnings indicate mirror-mode mismatchesStrict-mode checks before exportResolve all errors before shipping a contract.ValidationContract applied.ApplyThis page was opened with {name}. Apply it to load the contract.DismissTemplate readyProvider configProvider checksCheck editorPreviewProviderJump toAddRemoveOKCloseResult typeOK = allowed. opt-in = requires validation toggles.Not allowedUnion result schemas only allow comparators valid for every listed type.opt-inEach row is a result type class; each column is a comparator family.Comparator compatibility matrixZoom in{percent}%Zoom outResetMirror mode (legacy comparators)Mirror mode allows legacy comparators but highlights compatibility risks.Strict validation (default)Strict mode disables comparators that conflict with the result type.BackBuilderDecision Gate docsImport JSONName the provider, then define provider checks and comparators. Strict mode keeps contracts safe.Not nowStart tutorialGuided walkthroughPreviewValidationRequires validation.enable_deep_equals = true in decision-gate.toml.Enable deep equals comparatorsRequires validation.enable_lexicographic = true in decision-gate.toml.Enable lexicographic comparatorsComparator policyConfigure transport and config schema for decision-gate.toml.Provider configurationProvider config schemaProvider descriptionDescribe what this provider can return.Provider IDDefine the metadata used by evidence queries and docs.Provider identityUse lowercase snake_case. This ID is referenced by scenarios.e.g. github_providerProvider nameHuman-friendly name shown in documentation.e.g. GitHub ProviderProvider notesAdd a noteTransportbuiltinmcpAdd fieldAllow additional propertiesAdd valueAdd variantField descriptionFormatItemsJSONRequiredStructuredThis schema uses features not supported in the structured editor.{count} errorsSee Validation panel for details.Valid{count} warningsContract copied.Copy failed.Download started.{count} error(s) detected.Contract imported.Import failed. Invalid JSON.No validation issues.Template loaded.{count} warning(s).Returns true when the system is ready.Single boolean provider check with no provider inputs.This is a starter contract. Customize before shipping.Deterministic output for demonstration only.Example ProviderMinimal provider checkReturns parsed payload metadata.Structured result provider check with nested provider inputs.Ensure result fields map to stable comparator logic.Inspects payloads and reports structured results.Schema InspectorSchema inspectionReturn HTTP status code for a URL.Parameterized provider check returning a status code.Keep timeouts low to protect ScenarioSpec evaluation.Checks remote status codes using a controlled allowlist.HTTP Status ProviderHTTP status checkUse templateTutorial complete.FinishNextBackStep {current} of {total}Use for lists of strings, numbers, or booleans. Comparators include contains and in_set.{\"name\": \"roles\", \"result\": [\"admin\", \"editor\"]}List of scalar valuesUse for flags and binary checks. Equality and existence comparators are typical.{\"name\": \"is_ready\", \"result\": true}True/false signalsAllowed comparatorsUse when results are limited to known values. Works well with equals and in_set.{\"name\": \"status\", \"result\": \"approved\"}Fixed set of valuesExampleUse for counts, IDs, and scaled quantities. Ordering comparators apply.{\"name\": \"balance_amount_scaled\", \"result\": 150000}Whole numbersOpen comparator matrixRepresents missing or unavailable data. Exists/not_exists comparators are typical.{\"name\": \"env_value\", \"result\": null}Null or missing valuesUse for measurements with fractions. Ordering comparators apply.{\"name\": \"temperature_c\", \"result\": 21.5}Decimal numbersUse for nested values. Comparators are limited; consider extracting scalar checks.{\"name\": \"payload_metadata\", \"result\": {\"version\": \"1.2.3\"}}Structured JSON objectsUse for labels, identifiers, and text. Ordering comparators are disabled in strict mode.{\"name\": \"team_name\", \"result\": \"barcelona\"}Text valuesRFC 3339 dates (YYYY-MM-DD). Enables date ordering comparators.{\"name\": \"ship_date\", \"result\": \"2025-01-12\"}Calendar datesRFC 3339 date-time strings. Enables time ordering comparators.{\"name\": \"observed_at\", \"result\": \"2025-01-12T09:30:00Z\"}TimestampsOpaque identifiers. Equality and existence comparators are typical.{\"name\": \"order_id\", \"result\": \"550e8400-e29b-41d4-a716-446655440000\"}UUID stringsReturned value type: {type}Use a more specific schema when possible. Strict mode treats unknown types conservatively.{\"name\": \"value\", \"result\": \"...\"}Mixed or unknown typesArray items are not scalar. Strict mode treats this as an object result.{name}: no content types declared.Provider IDs should be lowercase snake_case (letters, numbers, underscores).Mirror mode: {name} uses {invalid} comparators that do not match a {type} returned value.