Product Kit · 1.0.0
Structured Output Recovery Kit
Turn malformed JSON or tool output into canonical JSON with validation evidence and a safe retry action.
Developers replacing repeated model retries and brittle regular expressions in structured-output pipelines.
Validated recovery envelope
{
"ok": true,
"schema_version": "utilito.product-kit.v1",
"kit": {
"id": "structured-output-recovery-kit",
"version": "1.0.0"
},
"result": {
"status": "ready",
"confidence": "high",
"output": "{\"count\":2,\"name\":\"Ada\"}",
"value": {
"count": 2,
"name": "Ada"
},
"repairs": [
{
"sequence": 1,
"type": "STRIPPED_FENCE",
"path": "$",
"detail": "Removed Markdown code fence."
},
{
"sequence": 2,
"type": "UNQUOTED_KEY",
"path": "$.count",
"detail": "Quoted key count."
},
{
"sequence": 3,
"type": "UNQUOTED_KEY",
"path": "$.name",
"detail": "Quoted key name."
},
{
"sequence": 4,
"type": "TRAILING_COMMA",
"path": "$",
"detail": "Removed a trailing comma."
}
],
"diagnostics": {
"syntax": {
"status": "repaired",
"findings": [
{
"id": "STRIPPED_FENCE",
"path": "$",
"message": "Removed Markdown code fence."
},
{
"id": "UNQUOTED_KEY",
"path": "$.count",
"message": "Quoted key count."
},
{
"id": "UNQUOTED_KEY",
"path": "$.name",
"message": "Quoted key name."
},
{
"id": "TRAILING_COMMA",
"path": "$",
"message": "Removed a trailing comma."
}
]
},
"schema": {
"status": "valid",
"findings": []
},
"tool_call": {
"status": "not_requested",
"findings": []
}
},
"validation": {
"target": "Utilito bounded JSON Schema subset v1",
"valid": true,
"errors": []
},
"tool_call_validation": null,
"warnings": [],
"safe_next_action": {
"code": "COPY_CANONICAL_OUTPUT",
"message": "Copy the canonical output into the next deterministic step."
}
},
"receipt": {
"input_bytes": 33,
"output_bytes": 24,
"operations": 2,
"omitted_items": 0,
"warnings": [],
"parseable_before": false,
"parseable_after": true,
"canonicalized": true,
"repairs_applied": 4,
"inferred_closures": 0,
"repairs": [
{
"sequence": 1,
"type": "STRIPPED_FENCE",
"path": "$",
"detail": "Removed Markdown code fence."
},
{
"sequence": 2,
"type": "UNQUOTED_KEY",
"path": "$.count",
"detail": "Quoted key count."
},
{
"sequence": 3,
"type": "UNQUOTED_KEY",
"path": "$.name",
"detail": "Quoted key name."
},
{
"sequence": 4,
"type": "TRAILING_COMMA",
"path": "$",
"detail": "Removed a trailing comma."
}
],
"confidence": "high",
"syntax_status": "repaired",
"schema_status": "valid",
"tool_call_status": "not_requested",
"limits": {
"source_utf8_bytes": 262144,
"graph_depth": 32,
"graph_nodes": 2000,
"container_fanout": 256
},
"limitations": [
"Repairs are syntactic and deterministic; semantic correctness is not claimed.",
"Only the published bounded JSON Schema subset is supported.",
"Missing values are never inferred and submitted values are never type-coerced."
],
"safe_next_action": {
"code": "COPY_CANONICAL_OUTPUT",
"message": "Copy the canonical output into the next deterministic step."
},
"values_invented": false,
"values_coerced": false
},
"provenance": {
"deterministic": true,
"model_used": false,
"network_used": false,
"storage_used": false,
"core_versions": {
"structured_output_recovery_kit": "1.0.0",
"structured_output_rescue": "1.0.0",
"json_repair": "1.0.0"
}
},
"error": null
}Free runnable capability
Recover and validate one bounded response with deterministic evidence and no signup.
Builder capability
The existing Builder Pilot adds batch recovery and higher bounded volume; it does not add model guessing or hidden retries.
See the existing Builder PilotResponse-only privacy
Submitted text is sent only to the response-only API when you select Recover; it is not stored, logged as telemetry, or used by a model.
Limits and trust boundary
- Schema validation supports only type, enum, properties, required, additionalProperties:false, and items.
- Recovery never invents missing values or coerces value types; schema-invalid output remains blocked with diagnostics.
- Inferred closures always require review before retrying the source operation.