Skip to main content
Glama

Load a saved ruleset

dsail_load_ruleset
Read-onlyIdempotent

Read a saved policy ruleset exactly as it was stored.

Use when someone asks which saved rules were used, or needs to inspect an existing revision rather than author a new one.

Loads a named ruleset: its source, its hash, its claim manifest and claim schema, its diagnostics, its revision chain and any approvals bound to it — the same contract a compile returns, for bytes already stored.

An approval follows the stored bytes, so source re-compiled from memory is a different object the moment the two texts drift; the source this returns, with the hash it came with as parent_hash, is the starting point for an edit. Loading shows nothing on screen.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYesThe saved ruleset's name, exactly as `dsail_list_rulesets` reports it.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / oneOf
      Previous value: -[
      -  {
      -    "description": "A stored ruleset, in the shape a compile of it would return plus what the store knows about it. This is how a saved ruleset is SHOWN — re-compiling remembered source produces a different object the moment the two disagree, and an approval follows the stored bytes.",
      -    "properties": {
      -      "approvals": {
      -        "items": {
      -          "properties": {
      -            "approved_at": {
      -              "description": "UTC, ISO 8601.",
      -              "type": "string"
      -            },
      -            "approver": {
      -              "type": "string"
      -            },
      -            "hash": {
      -              "description": "The exact bytes signed for. An approval follows the hash, never a name: a later revision is not covered by it.",
      -              "type": "string"
      -            },
      -            "note": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            }
      -          },
      -          "required": [
      -            "hash",
      -            "approver",
      -            "approved_at"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "claim_schema": {
      -        "description": "JSON Schema for the claim dictionary.",
      -        "type": "object"
      -      },
      -      "diagnostics": {
      -        "items": {
      -          "properties": {
      -            "line": {
      -              "type": [
      -                "integer",
      -                "null"
      -              ]
      -            },
      -            "message": {
      -              "type": "string"
      -            },
      -            "severity": {
      -              "enum": [
      -                "error",
      -                "warning"
      -              ],
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "severity",
      -            "message"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "label": {
      -        "description": "The ruleset's stored application-domain label (TJP-642), as ids under `vocabulary_version`. Null when the ruleset carries none, or when this account has labeling disabled. A label never alters a result; the level-two proposal text a caller sent is matched and dropped, never stored or returned.",
      -        "properties": {
      -          "confidence": {
      -            "enum": [
      -              "high",
      -              "medium",
      -              "low",
      -              null
      -            ],
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "declined": {
      -            "type": "boolean"
      -          },
      -          "level_one": {
      -            "description": "Level-one domain id. Null only when declined.",
      -            "enum": [
      -              "finance",
      -              "consumer_finance",
      -              "capital_markets",
      -              "insurance",
      -              "regulatory_compliance",
      -              "hr_workforce",
      -              "security_access",
      -              "security_classification",
      -              "healthcare",
      -              "legal_contracts",
      -              "procurement",
      -              "engineering_release",
      -              "content_safety",
      -              "other",
      -              null
      -            ],
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "level_two": {
      -            "description": "Level-two term id, from GET /v1/vocabulary. Null when the proposal matched no published term (the proposal was counted toward promotion instead) or none was offered.",
      -            "pattern": "^l2-[0-9]{4,}$",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "updated_at": {
      -            "description": "UTC, ISO 8601.",
      -            "type": "string"
      -          },
      -          "vocabulary_version": {
      -            "example": "v1",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "vocabulary_version",
      -          "level_one",
      -          "level_two",
      -          "confidence",
      -          "declined",
      -          "updated_at"
      -        ],
      -        "type": [
      -          "object",
      -          "null"
      -        ]
      -      },
      -      "manifest": {
      -        "properties": {
      -          "claims": {
      -            "items": {
      -              "properties": {
      -                "boolean_subtype": {
      -                  "type": "string"
      -                },
      -                "claim": {
      -                  "type": "string"
      -                },
      -                "context": {
      -                  "type": "string"
      -                },
      -                "data_type": {
      -                  "enum": [
      -                    "boolean",
      -                    "numeric",
      -                    "enum"
      -                  ],
      -                  "type": "string"
      -                },
      -                "ordered": {
      -                  "type": "boolean"
      -                },
      -                "question": {
      -                  "description": "Shown to the extracting model.",
      -                  "type": "string"
      -                },
      -                "range": {
      -                  "properties": {
      -                    "max": {
      -                      "type": "number"
      -                    },
      -                    "min": {
      -                      "type": "number"
      -                    }
      -                  },
      -                  "type": "object"
      -                },
      -                "required": {
      -                  "type": "boolean"
      -                },
      -                "unit": {
      -                  "type": [
      -                    "string",
      -                    "null"
      -                  ]
      -                },
      -                "unknown_allowed": {
      -                  "const": true,
      -                  "type": "boolean"
      -                },
      -                "unknown_sentinel": {
      -                  "description": "Present only when this claim's own vocabulary contains a member spelled like the sentinel. Then the string means that member and this names the value that means undetermined (null).",
      -                  "type": "string"
      -                },
      -                "vocabulary": {
      -                  "items": {
      -                    "type": "string"
      -                  },
      -                  "type": "array"
      -                }
      -              },
      -              "required": [
      -                "claim",
      -                "data_type",
      -                "question",
      -                "required",
      -                "unknown_allowed"
      -              ],
      -              "type": "object"
      -            },
      -            "type": "array"
      -          },
      -          "rules": {
      -            "items": {
      -              "description": "One rule, with the assertions it states. A rule is the unit a policy is written in; an assertion is the unit the engine answers, and one rule may state several. A ruleset compiled here is a single DSAIL source and the grammar has no grouping construct, so today every rule holds exactly one assertion and carries its name — read results through this level anyway and a rule that states more costs you nothing.",
      -              "properties": {
      -                "assertions": {
      -                  "items": {
      -                    "description": "One assertion a rule states. The engine answers per assertion, so this is the unit a check reports on.",
      -                    "properties": {
      -                      "line": {
      -                        "type": [
      -                          "integer",
      -                          "null"
      -                        ]
      -                      },
      -                      "name": {
      -                        "type": "string"
      -                      },
      -                      "source": {
      -                        "type": [
      -                          "string",
      -                          "null"
      -                        ]
      -                      },
      -                      "unknown_policy": {
      -                        "enum": [
      -                          "optimistic",
      -                          "pessimistic",
      -                          "neutral"
      -                        ],
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "name",
      -                      "unknown_policy"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "type": "array"
      -                },
      -                "rule": {
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "rule",
      -                "assertions"
      -              ],
      -              "type": "object"
      -            },
      -            "type": "array"
      -          },
      -          "ruleset_hash": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "ruleset_hash",
      -          "claims",
      -          "rules"
      -        ],
      -        "type": "object"
      -      },
      -      "name": {
      -        "description": "The name that was asked for.",
      -        "type": "string"
      -      },
      -      "namespace": {
      -        "description": "Service-internal scope identifier. For clients, not for display: never show this to a person, who identifies a ruleset by name.",
      -        "type": "string"
      -      },
      -      "ok": {
      -        "const": true,
      -        "type": "boolean"
      -      },
      -      "review": {
      -        "description": "A plain-text rendering of what this ruleset asks and decides, for a person about to approve it. Derived from the manifest on every compile, never stored, so it cannot drift from the contract a caller was handed.",
      -        "type": "string"
      -      },
      -      "revision_chain": {
      -        "description": "This hash, then its parent, back to the root.",
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "ruleset_hash": {
      -        "description": "sha256 of the normalised source. This is the object key.",
      -        "type": "string"
      -      },
      -      "source": {
      -        "description": "The normalised DSAIL source that hashed to `ruleset_hash`, so a caller that only ever compiles has something to show or diff without a separate load-by-name call.",
      -        "type": "string"
      -      },
      -      "stored": {
      -        "properties": {
      -          "parent_hash": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "revision_depth": {
      -            "type": "integer"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "summary": {
      -        "description": "The same thing in one sentence, for a row in a list rather than a page a person reads.",
      -        "type": "string"
      -      },
      -      "unbridged_units": {
      -        "description": "Unit pairs this ruleset compares that no loaded converter bridges, attributed by the engine to the rule that cannot be lowered. Each one answers UNKNOWN for every claim dictionary until a converter is added.",
      -        "items": {
      -          "properties": {
      -            "cause": {
      -              "enum": [
      -                "missing",
      -                "ambiguous"
      -              ],
      -              "type": "string"
      -            },
      -            "from": {
      -              "type": "string"
      -            },
      -            "rule": {
      -              "type": "string"
      -            },
      -            "to": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "rule",
      -            "from",
      -            "to",
      -            "cause"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "unit_library_hash": {
      -        "description": "The project unit library this compile read. Half of a result's provenance; null selects the six built-in standards.",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "validation_contract": {
      -        "description": "Exactly what check will reject, known before submitting.",
      -        "type": "object"
      -      },
      -      "versions": {
      -        "description": "Which engine and which wire contract produced this response.",
      -        "properties": {
      -          "engine": {
      -            "example": "dsail-core",
      -            "type": "string"
      -          },
      -          "engine_version": {
      -            "type": "string"
      -          },
      -          "language_version": {
      -            "description": "DSAIL language version.",
      -            "type": "string"
      -          },
      -          "service_version": {
      -            "type": "string"
      -          },
      -          "supported_language_versions": {
      -            "items": {
      -              "type": "string"
      -            },
      -            "type": "array"
      -          },
      -          "wire_version": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "engine",
      -          "engine_version",
      -          "language_version",
      -          "service_version",
      -          "wire_version"
      -        ],
      -        "type": "object"
      -      }
      -    },
      -    "required": [
      -      "ok",
      -      "namespace",
      -      "name",
      -      "ruleset_hash",
      -      "source",
      -      "manifest",
      -      "revision_chain",
      -      "approvals",
      -      "versions"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "error": {
      -        "properties": {
      -          "actual": {
      -            "type": "integer"
      -          },
      -          "budget": {
      -            "type": "string"
      -          },
      -          "code": {
      -            "enum": [
      -              "VALIDATION_REJECTED",
      -              "COMPILE_FAILED",
      -              "BUDGET_EXCEEDED",
      -              "RULESET_NOT_FOUND",
      -              "ENGINE_ERROR",
      -              "BAD_REQUEST",
      -              "CREDENTIAL_REQUIRED",
      -              "CREDENTIAL_INVALID",
      -              "CREDENTIAL_SCOPE",
      -              "EVALUATION_LIMIT",
      -              "ENTITLEMENT_EXCEEDED",
      -              "TIER_UNAVAILABLE"
      -            ],
      -            "type": "string"
      -          },
      -          "diagnostics": {
      -            "items": {
      -              "properties": {
      -                "line": {
      -                  "type": [
      -                    "integer",
      -                    "null"
      -                  ]
      -                },
      -                "message": {
      -                  "type": "string"
      -                },
      -                "severity": {
      -                  "enum": [
      -                    "error",
      -                    "warning"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "severity",
      -                "message"
      -              ],
      -              "type": "object"
      -            },
      -            "type": "array"
      -          },
      -          "docs": {
      -            "description": "The docs-site page that resolves this code (markdown). Fetch it before retrying blind.",
      -            "format": "uri",
      -            "type": "string"
      -          },
      -          "failure_count": {
      -            "description": "How many fields failed in total. Equal to the length of `failures` unless a very large rejection was truncated, which the message says.",
      -            "type": "integer"
      -          },
      -          "failures": {
      -            "description": "EVERY failing field, not the first one.",
      -            "items": {
      -              "properties": {
      -                "expected": {
      -                  "type": "string"
      -                },
      -                "field": {
      -                  "type": "string"
      -                },
      -                "received": {
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "field",
      -                "expected",
      -                "received"
      -              ],
      -              "type": "object"
      -            },
      -            "type": "array"
      -          },
      -          "hint": {
      -            "description": "The grammar guide, carried on compile failures so the next call can succeed without a human.",
      -            "type": "string"
      -          },
      -          "limit": {
      -            "type": "integer"
      -          },
      -          "message": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "code",
      -          "message"
      -        ],
      -        "type": "object"
      -      },
      -      "ok": {
      -        "const": false,
      -        "type": "boolean"
      -      },
      -      "versions": {
      -        "description": "Which engine and which wire contract produced this response.",
      -        "properties": {
      -          "engine": {
      -            "example": "dsail-core",
      -            "type": "string"
      -          },
      -          "engine_version": {
      -            "type": "string"
      -          },
      -          "language_version": {
      -            "description": "DSAIL language version.",
      -            "type": "string"
      -          },
      -          "service_version": {
      -            "type": "string"
      -          },
      -          "supported_language_versions": {
      -            "items": {
      -              "type": "string"
      -            },
      -            "type": "array"
      -          },
      -          "wire_version": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "engine",
      -          "engine_version",
      -          "language_version",
      -          "service_version",
      -          "wire_version"
      -        ],
      -        "type": "object"
      -      }
      -    },
      -    "required": [
      -      "ok",
      -      "error",
      -      "versions"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "description": "A stored ruleset, in the shape a compile of it would return plus what the store knows about it. This is how a saved ruleset is SHOWN — re-compiling remembered source produces a different object the moment the two disagree, and an approval follows the stored bytes.",
      +    "properties": {
      +      "approvals": {
      +        "items": {
      +          "properties": {
      +            "approved_at": {
      +              "description": "UTC, ISO 8601.",
      +              "type": "string"
      +            },
      +            "approver": {
      +              "type": "string"
      +            },
      +            "hash": {
      +              "description": "The exact bytes signed for. An approval follows the hash, never a name: a later revision is not covered by it.",
      +              "type": "string"
      +            },
      +            "note": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            }
      +          },
      +          "required": [
      +            "hash",
      +            "approver",
      +            "approved_at"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "claim_schema": {
      +        "description": "JSON Schema for the claim dictionary.",
      +        "type": "object"
      +      },
      +      "diagnostics": {
      +        "items": {
      +          "properties": {
      +            "line": {
      +              "type": [
      +                "integer",
      +                "null"
      +              ]
      +            },
      +            "message": {
      +              "type": "string"
      +            },
      +            "severity": {
      +              "enum": [
      +                "error",
      +                "warning"
      +              ],
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "severity",
      +            "message"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "label": {
      +        "description": "The ruleset's stored application-domain label (TJP-642), as ids under `vocabulary_version`. Null when the ruleset carries none, or when this account has labeling disabled. A label never alters a result; the level-two proposal text a caller sent is matched and dropped, never stored or returned.",
      +        "properties": {
      +          "confidence": {
      +            "enum": [
      +              "high",
      +              "medium",
      +              "low",
      +              null
      +            ],
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "declined": {
      +            "type": "boolean"
      +          },
      +          "level_one": {
      +            "description": "Level-one domain id. Null only when declined.",
      +            "enum": [
      +              "finance",
      +              "consumer_finance",
      +              "capital_markets",
      +              "insurance",
      +              "regulatory_compliance",
      +              "hr_workforce",
      +              "security_access",
      +              "security_classification",
      +              "healthcare",
      +              "legal_contracts",
      +              "procurement",
      +              "engineering_release",
      +              "content_safety",
      +              "other",
      +              null
      +            ],
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "level_two": {
      +            "description": "Level-two term id, from GET /v1/vocabulary. Null when the proposal matched no published term (the proposal was counted toward promotion instead) or none was offered.",
      +            "pattern": "^l2-[0-9]{4,}$",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "updated_at": {
      +            "description": "UTC, ISO 8601.",
      +            "type": "string"
      +          },
      +          "vocabulary_version": {
      +            "example": "v1",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "vocabulary_version",
      +          "level_one",
      +          "level_two",
      +          "confidence",
      +          "declined",
      +          "updated_at"
      +        ],
      +        "type": [
      +          "object",
      +          "null"
      +        ]
      +      },
      +      "manifest": {
      +        "properties": {
      +          "claims": {
      +            "items": {
      +              "properties": {
      +                "boolean_subtype": {
      +                  "type": "string"
      +                },
      +                "claim": {
      +                  "type": "string"
      +                },
      +                "context": {
      +                  "type": "string"
      +                },
      +                "data_type": {
      +                  "enum": [
      +                    "boolean",
      +                    "numeric",
      +                    "enum"
      +                  ],
      +                  "type": "string"
      +                },
      +                "ordered": {
      +                  "type": "boolean"
      +                },
      +                "question": {
      +                  "description": "Shown to the extracting model.",
      +                  "type": "string"
      +                },
      +                "range": {
      +                  "properties": {
      +                    "max": {
      +                      "type": "number"
      +                    },
      +                    "min": {
      +                      "type": "number"
      +                    }
      +                  },
      +                  "type": "object"
      +                },
      +                "required": {
      +                  "type": "boolean"
      +                },
      +                "unit": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "unknown_allowed": {
      +                  "const": true,
      +                  "type": "boolean"
      +                },
      +                "unknown_sentinel": {
      +                  "description": "Present only when this claim's own vocabulary contains a member spelled like the sentinel. Then the string means that member and this names the value that means undetermined (null).",
      +                  "type": "string"
      +                },
      +                "vocabulary": {
      +                  "items": {
      +                    "type": "string"
      +                  },
      +                  "type": "array"
      +                }
      +              },
      +              "required": [
      +                "claim",
      +                "data_type",
      +                "question",
      +                "required",
      +                "unknown_allowed"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "rules": {
      +            "items": {
      +              "description": "One rule, with the assertions it states. A rule is the unit a policy is written in; an assertion is the unit the engine answers, and one rule may state several. A ruleset compiled here is a single DSAIL source and the grammar has no grouping construct, so today every rule holds exactly one assertion and carries its name — read results through this level anyway and a rule that states more costs you nothing.",
      +              "properties": {
      +                "assertions": {
      +                  "items": {
      +                    "description": "One assertion a rule states. The engine answers per assertion, so this is the unit a check reports on.",
      +                    "properties": {
      +                      "line": {
      +                        "type": [
      +                          "integer",
      +                          "null"
      +                        ]
      +                      },
      +                      "name": {
      +                        "type": "string"
      +                      },
      +                      "source": {
      +                        "type": [
      +                          "string",
      +                          "null"
      +                        ]
      +                      },
      +                      "unknown_policy": {
      +                        "enum": [
      +                          "optimistic",
      +                          "pessimistic",
      +                          "neutral"
      +                        ],
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "name",
      +                      "unknown_policy"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "type": "array"
      +                },
      +                "rule": {
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "rule",
      +                "assertions"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "ruleset_hash": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "ruleset_hash",
      +          "claims",
      +          "rules"
      +        ],
      +        "type": "object"
      +      },
      +      "name": {
      +        "description": "The name that was asked for.",
      +        "type": "string"
      +      },
      +      "namespace": {
      +        "description": "Service-internal scope identifier. For clients, not for display: never show this to a person, who identifies a ruleset by name.",
      +        "type": "string"
      +      },
      +      "ok": {
      +        "const": true,
      +        "type": "boolean"
      +      },
      +      "review": {
      +        "description": "A plain-text rendering of what this ruleset asks and decides, for a person about to approve it. Derived from the manifest on every compile, never stored, so it cannot drift from the contract a caller was handed.",
      +        "type": "string"
      +      },
      +      "revision_chain": {
      +        "description": "This hash, then its parent, back to the root.",
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "ruleset_hash": {
      +        "description": "sha256 of the normalised source. This is the object key.",
      +        "type": "string"
      +      },
      +      "source": {
      +        "description": "The normalised DSAIL source that hashed to `ruleset_hash`, so a caller that only ever compiles has something to show or diff without a separate load-by-name call.",
      +        "type": "string"
      +      },
      +      "stored": {
      +        "properties": {
      +          "parent_hash": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "revision_depth": {
      +            "type": "integer"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "summary": {
      +        "description": "The same thing in one sentence, for a row in a list rather than a page a person reads.",
      +        "type": "string"
      +      },
      +      "unbridged_units": {
      +        "description": "Unit pairs this ruleset compares that no loaded converter bridges, attributed by the engine to the rule that cannot be lowered. Each one answers UNKNOWN for every claim dictionary until a converter is added.",
      +        "items": {
      +          "properties": {
      +            "cause": {
      +              "enum": [
      +                "missing",
      +                "ambiguous"
      +              ],
      +              "type": "string"
      +            },
      +            "from": {
      +              "type": "string"
      +            },
      +            "rule": {
      +              "type": "string"
      +            },
      +            "to": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "rule",
      +            "from",
      +            "to",
      +            "cause"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "unit_library_hash": {
      +        "description": "The project unit library this compile read. Half of a result's provenance; null selects the six built-in standards.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "validation_contract": {
      +        "description": "Exactly what check will reject, known before submitting.",
      +        "type": "object"
      +      },
      +      "versions": {
      +        "description": "Which engine and which wire contract produced this response.",
      +        "properties": {
      +          "engine": {
      +            "example": "dsail-core",
      +            "type": "string"
      +          },
      +          "engine_version": {
      +            "type": "string"
      +          },
      +          "language_version": {
      +            "description": "DSAIL language version.",
      +            "type": "string"
      +          },
      +          "service_version": {
      +            "type": "string"
      +          },
      +          "supported_language_versions": {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "wire_version": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "engine",
      +          "engine_version",
      +          "language_version",
      +          "service_version",
      +          "wire_version"
      +        ],
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "ok",
      +      "namespace",
      +      "name",
      +      "ruleset_hash",
      +      "source",
      +      "manifest",
      +      "revision_chain",
      +      "approvals",
      +      "versions"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "error": {
      +        "properties": {
      +          "actual": {
      +            "description": "How much the request used, where that is known. Absent for solver_memory_mb: the solver stops at the limit.",
      +            "type": "integer"
      +          },
      +          "budget": {
      +            "type": "string"
      +          },
      +          "code": {
      +            "enum": [
      +              "VALIDATION_REJECTED",
      +              "COMPILE_FAILED",
      +              "BUDGET_EXCEEDED",
      +              "RULESET_NOT_FOUND",
      +              "ENGINE_ERROR",
      +              "ENGINE_BUSY",
      +              "BAD_REQUEST",
      +              "CREDENTIAL_REQUIRED",
      +              "CREDENTIAL_INVALID",
      +              "CREDENTIAL_SCOPE",
      +              "EVALUATION_LIMIT",
      +              "ENTITLEMENT_EXCEEDED",
      +              "TIER_UNAVAILABLE"
      +            ],
      +            "type": "string"
      +          },
      +          "diagnostics": {
      +            "items": {
      +              "properties": {
      +                "line": {
      +                  "type": [
      +                    "integer",
      +                    "null"
      +                  ]
      +                },
      +                "message": {
      +                  "type": "string"
      +                },
      +                "severity": {
      +                  "enum": [
      +                    "error",
      +                    "warning"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "severity",
      +                "message"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "docs": {
      +            "description": "The docs-site page that resolves this code (markdown). Fetch it before retrying blind.",
      +            "format": "uri",
      +            "type": "string"
      +          },
      +          "failure_count": {
      +            "description": "How many fields failed in total. Equal to the length of `failures` unless a very large rejection was truncated, which the message says.",
      +            "type": "integer"
      +          },
      +          "failures": {
      +            "description": "EVERY failing field, not the first one.",
      +            "items": {
      +              "properties": {
      +                "expected": {
      +                  "type": "string"
      +                },
      +                "field": {
      +                  "type": "string"
      +                },
      +                "received": {
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "field",
      +                "expected",
      +                "received"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "hint": {
      +            "description": "The grammar guide, carried on compile failures so the next call can succeed without a human.",
      +            "type": "string"
      +          },
      +          "limit": {
      +            "type": "integer"
      +          },
      +          "message": {
      +            "type": "string"
      +          },
      +          "retry_after_ms": {
      +            "description": "ENGINE_BUSY only: when to retry. The REST door also sends it, in seconds, as Retry-After.",
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "code",
      +          "message"
      +        ],
      +        "type": "object"
      +      },
      +      "ok": {
      +        "const": false,
      +        "type": "boolean"
      +      },
      +      "versions": {
      +        "description": "Which engine and which wire contract produced this response.",
      +        "properties": {
      +          "engine": {
      +            "example": "dsail-core",
      +            "type": "string"
      +          },
      +          "engine_version": {
      +            "type": "string"
      +          },
      +          "language_version": {
      +            "description": "DSAIL language version.",
      +            "type": "string"
      +          },
      +          "service_version": {
      +            "type": "string"
      +          },
      +          "supported_language_versions": {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "wire_version": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "engine",
      +          "engine_version",
      +          "language_version",
      +          "service_version",
      +          "wire_version"
      +        ],
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "ok",
      +      "error",
      +      "versions"
      +    ],
      +    "type": "object"
      +  }
      +]
  2. Changed2 schema fields changed
    • addedInput schema / properties / name / description
      Added value: +"The saved ruleset's name, exactly as `dsail_list_rulesets` reports it."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "description": "The stored ruleset exactly as saved: source, manifest, approvals. On failure `ok` is false and `error` carries `code`, `message` and `docs`, the URL of the page that resolves it.",
      +  "oneOf": [
      +    {
      +      "description": "A stored ruleset, in the shape a compile of it would return plus what the store knows about it. This is how a saved ruleset is SHOWN — re-compiling remembered source produces a different object the moment the two disagree, and an approval follows the stored bytes.",
      +      "properties": {
      +        "approvals": {
      +          "items": {
      +            "properties": {
      +              "approved_at": {
      +                "description": "UTC, ISO 8601.",
      +                "type": "string"
      +              },
      +              "approver": {
      +                "type": "string"
      +              },
      +              "hash": {
      +                "description": "The exact bytes signed for. An approval follows the hash, never a name: a later revision is not covered by it.",
      +                "type": "string"
      +              },
      +              "note": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              }
      +            },
      +            "required": [
      +              "hash",
      +              "approver",
      +              "approved_at"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "claim_schema": {
      +          "description": "JSON Schema for the claim dictionary.",
      +          "type": "object"
      +        },
      +        "diagnostics": {
      +          "items": {
      +            "properties": {
      +              "line": {
      +                "type": [
      +                  "integer",
      +                  "null"
      +                ]
      +              },
      +              "message": {
      +                "type": "string"
      +              },
      +              "severity": {
      +                "enum": [
      +                  "error",
      +                  "warning"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "severity",
      +              "message"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "label": {
      +          "description": "The ruleset's stored application-domain label (TJP-642), as ids under `vocabulary_version`. Null when the ruleset carries none, or when this account has labeling disabled. A label never alters a result; the level-two proposal text a caller sent is matched and dropped, never stored or returned.",
      +          "properties": {
      +            "confidence": {
      +              "enum": [
      +                "high",
      +                "medium",
      +                "low",
      +                null
      +              ],
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "declined": {
      +              "type": "boolean"
      +            },
      +            "level_one": {
      +              "description": "Level-one domain id. Null only when declined.",
      +              "enum": [
      +                "finance",
      +                "consumer_finance",
      +                "capital_markets",
      +                "insurance",
      +                "regulatory_compliance",
      +                "hr_workforce",
      +                "security_access",
      +                "security_classification",
      +                "healthcare",
      +                "legal_contracts",
      +                "procurement",
      +                "engineering_release",
      +                "content_safety",
      +                "other",
      +                null
      +              ],
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "level_two": {
      +              "description": "Level-two term id, from GET /v1/vocabulary. Null when the proposal matched no published term (the proposal was counted toward promotion instead) or none was offered.",
      +              "pattern": "^l2-[0-9]{4,}$",
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "updated_at": {
      +              "description": "UTC, ISO 8601.",
      +              "type": "string"
      +            },
      +            "vocabulary_version": {
      +              "example": "v1",
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "vocabulary_version",
      +            "level_one",
      +            "level_two",
      +            "confidence",
      +            "declined",
      +            "updated_at"
      +          ],
      +          "type": [
      +            "object",
      +            "null"
      +          ]
      +        },
      +        "manifest": {
      +          "properties": {
      +            "claims": {
      +              "items": {
      +                "properties": {
      +                  "boolean_subtype": {
      +                    "type": "string"
      +                  },
      +                  "claim": {
      +                    "type": "string"
      +                  },
      +                  "context": {
      +                    "type": "string"
      +                  },
      +                  "data_type": {
      +                    "enum": [
      +                      "boolean",
      +                      "numeric",
      +                      "enum"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "ordered": {
      +                    "type": "boolean"
      +                  },
      +                  "question": {
      +                    "description": "Shown to the extracting model.",
      +                    "type": "string"
      +                  },
      +                  "range": {
      +                    "properties": {
      +                      "max": {
      +                        "type": "number"
      +                      },
      +                      "min": {
      +                        "type": "number"
      +                      }
      +                    },
      +                    "type": "object"
      +                  },
      +                  "required": {
      +                    "type": "boolean"
      +                  },
      +                  "unit": {
      +                    "type": [
      +                      "string",
      +                      "null"
      +                    ]
      +                  },
      +                  "unknown_allowed": {
      +                    "const": true,
      +                    "type": "boolean"
      +                  },
      +                  "unknown_sentinel": {
      +                    "description": "Present only when this claim's own vocabulary contains a member spelled like the sentinel. Then the string means that member and this names the value that means undetermined (null).",
      +                    "type": "string"
      +                  },
      +                  "vocabulary": {
      +                    "items": {
      +                      "type": "string"
      +                    },
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "claim",
      +                  "data_type",
      +                  "question",
      +                  "required",
      +                  "unknown_allowed"
      +                ],
      +                "type": "object"
      +              },
      +              "type": "array"
      +            },
      +            "rules": {
      +              "items": {
      +                "description": "One rule, with the assertions it states. A rule is the unit a policy is written in; an assertion is the unit the engine answers, and one rule may state several. A ruleset compiled here is a single DSAIL source and the grammar has no grouping construct, so today every rule holds exactly one assertion and carries its name — read results through this level anyway and a rule that states more costs you nothing.",
      +                "properties": {
      +                  "assertions": {
      +                    "items": {
      +                      "description": "One assertion a rule states. The engine answers per assertion, so this is the unit a check reports on.",
      +                      "properties": {
      +                        "line": {
      +                          "type": [
      +                            "integer",
      +                            "null"
      +                          ]
      +                        },
      +                        "name": {
      +                          "type": "string"
      +                        },
      +                        "source": {
      +                          "type": [
      +                            "string",
      +                            "null"
      +                          ]
      +                        },
      +                        "unknown_policy": {
      +                          "enum": [
      +                            "optimistic",
      +                            "pessimistic",
      +                            "neutral"
      +                          ],
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "name",
      +                        "unknown_policy"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "rule": {
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "rule",
      +                  "assertions"
      +                ],
      +                "type": "object"
      +              },
      +              "type": "array"
      +            },
      +            "ruleset_hash": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "ruleset_hash",
      +            "claims",
      +            "rules"
      +          ],
      +          "type": "object"
      +        },
      +        "name": {
      +          "description": "The name that was asked for.",
      +          "type": "string"
      +        },
      +        "namespace": {
      +          "description": "Service-internal scope identifier. For clients, not for display: never show this to a person, who identifies a ruleset by name.",
      +          "type": "string"
      +        },
      +        "ok": {
      +          "const": true,
      +          "type": "boolean"
      +        },
      +        "review": {
      +          "description": "A plain-text rendering of what this ruleset asks and decides, for a person about to approve it. Derived from the manifest on every compile, never stored, so it cannot drift from the contract a caller was handed.",
      +          "type": "string"
      +        },
      +        "revision_chain": {
      +          "description": "This hash, then its parent, back to the root.",
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "ruleset_hash": {
      +          "description": "sha256 of the normalised source. This is the object key.",
      +          "type": "string"
      +        },
      +        "source": {
      +          "description": "The normalised DSAIL source that hashed to `ruleset_hash`, so a caller that only ever compiles has something to show or diff without a separate load-by-name call.",
      +          "type": "string"
      +        },
      +        "stored": {
      +          "properties": {
      +            "parent_hash": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "revision_depth": {
      +              "type": "integer"
      +            }
      +          },
      +          "type": "object"
      +        },
      +        "summary": {
      +          "description": "The same thing in one sentence, for a row in a list rather than a page a person reads.",
      +          "type": "string"
      +        },
      +        "unbridged_units": {
      +          "description": "Unit pairs this ruleset compares that no loaded converter bridges, attributed by the engine to the rule that cannot be lowered. Each one answers UNKNOWN for every claim dictionary until a converter is added.",
      +          "items": {
      +            "properties": {
      +              "cause": {
      +                "enum": [
      +                  "missing",
      +                  "ambiguous"
      +                ],
      +                "type": "string"
      +              },
      +              "from": {
      +                "type": "string"
      +              },
      +              "rule": {
      +                "type": "string"
      +              },
      +              "to": {
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "rule",
      +              "from",
      +              "to",
      +              "cause"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "unit_library_hash": {
      +          "description": "The project unit library this compile read. Half of a result's provenance; null selects the six built-in standards.",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "validation_contract": {
      +          "description": "Exactly what check will reject, known before submitting.",
      +          "type": "object"
      +        },
      +        "versions": {
      +          "description": "Which engine and which wire contract produced this response.",
      +          "properties": {
      +            "engine": {
      +              "example": "dsail-core",
      +              "type": "string"
      +            },
      +            "engine_version": {
      +              "type": "string"
      +            },
      +            "language_version": {
      +              "description": "DSAIL language version.",
      +              "type": "string"
      +            },
      +            "service_version": {
      +              "type": "string"
      +            },
      +            "supported_language_versions": {
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "wire_version": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "engine",
      +            "engine_version",
      +            "language_version",
      +            "service_version",
      +            "wire_version"
      +          ],
      +          "type": "object"
      +        }
      +      },
      +      "required": [
      +        "ok",
      +        "namespace",
      +        "name",
      +        "ruleset_hash",
      +        "source",
      +        "manifest",
      +        "revision_chain",
      +        "approvals",
      +        "versions"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "properties": {
      +        "error": {
      +          "properties": {
      +            "actual": {
      +              "type": "integer"
      +            },
      +            "budget": {
      +              "type": "string"
      +            },
      +            "code": {
      +              "enum": [
      +                "VALIDATION_REJECTED",
      +                "COMPILE_FAILED",
      +                "BUDGET_EXCEEDED",
      +                "RULESET_NOT_FOUND",
      +                "ENGINE_ERROR",
      +                "BAD_REQUEST",
      +                "CREDENTIAL_REQUIRED",
      +                "CREDENTIAL_INVALID",
      +                "CREDENTIAL_SCOPE",
      +                "EVALUATION_LIMIT",
      +                "ENTITLEMENT_EXCEEDED",
      +                "TIER_UNAVAILABLE"
      +              ],
      +              "type": "string"
      +            },
      +            "diagnostics": {
      +              "items": {
      +                "properties": {
      +                  "line": {
      +                    "type": [
      +                      "integer",
      +                      "null"
      +                    ]
      +                  },
      +                  "message": {
      +                    "type": "string"
      +                  },
      +                  "severity": {
      +                    "enum": [
      +                      "error",
      +                      "warning"
      +                    ],
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "severity",
      +                  "message"
      +                ],
      +                "type": "object"
      +              },
      +              "type": "array"
      +            },
      +            "docs": {
      +              "description": "The docs-site page that resolves this code (markdown). Fetch it before retrying blind.",
      +              "format": "uri",
      +              "type": "string"
      +            },
      +            "failure_count": {
      +              "description": "How many fields failed in total. Equal to the length of `failures` unless a very large rejection was truncated, which the message says.",
      +              "type": "integer"
      +            },
      +            "failures": {
      +              "description": "EVERY failing field, not the first one.",
      +              "items": {
      +                "properties": {
      +                  "expected": {
      +                    "type": "string"
      +                  },
      +                  "field": {
      +                    "type": "string"
      +                  },
      +                  "received": {
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "field",
      +                  "expected",
      +                  "received"
      +                ],
      +                "type": "object"
      +              },
      +              "type": "array"
      +            },
      +            "hint": {
      +              "description": "The grammar guide, carried on compile failures so the next call can succeed without a human.",
      +              "type": "string"
      +            },
      +            "limit": {
      +              "type": "integer"
      +            },
      +            "message": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "code",
      +            "message"
      +          ],
      +          "type": "object"
      +        },
      +        "ok": {
      +          "const": false,
      +          "type": "boolean"
      +        },
      +        "versions": {
      +          "description": "Which engine and which wire contract produced this response.",
      +          "properties": {
      +            "engine": {
      +              "example": "dsail-core",
      +              "type": "string"
      +            },
      +            "engine_version": {
      +              "type": "string"
      +            },
      +            "language_version": {
      +              "description": "DSAIL language version.",
      +              "type": "string"
      +            },
      +            "service_version": {
      +              "type": "string"
      +            },
      +            "supported_language_versions": {
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "wire_version": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "engine",
      +            "engine_version",
      +            "language_version",
      +            "service_version",
      +            "wire_version"
      +          ],
      +          "type": "object"
      +        }
      +      },
      +      "required": [
      +        "ok",
      +        "error",
      +        "versions"
      +      ],
      +      "type": "object"
      +    }
      +  ],
      +  "type": "object"
      +}
  3. First observed

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive, closed-world, so the safety profile is covered. The description still adds real context beyond them: the returned payload mirrors a compile's contract, approvals are bound to stored bytes (so drifted re-compiled source is a different object), and 'Loading shows nothing on screen' foreshadows the absence of a UI side effect. No error/not-found behavior is described, hence 4 rather than 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first sentence and every following sentence carries information (usage conditions, payload contents, byte-binding caveat, no-visual-effect note). The middle sentence is dense and clause-heavy, which costs a point on structure but not on waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With annotations covering safety and an output schema covering the return shape, the description need only say what is fetched and when; it does both. It stops short of describing failure modes (unknown name) or revision-selection behavior, a minor gap for an otherwise complete definition.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter 'name' is already documented as 'exactly as dsail_list_rulesets reports it.' The description adds no further naming/format guidance, so the schema carries the parameter semantics and baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Read a saved policy ruleset exactly as it was stored') and immediately enumerates what is loaded (source, hash, claim manifest, claim schema, diagnostics, revision chain, approvals). It draws a clear line against authoring/compiling, so an agent can distinguish this from dsail_compile or dsail_save_ruleset without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use conditions: 'when someone asks which saved rules were used, or needs to inspect an existing revision rather than author a new one.' The alternative (authoring/compiling a new revision) is named and the condition that selects this over that is stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.