Raw schema
{
"type": "object",
"properties": {
"after": {
"description": "deadline: the date of the event",
"type": "string"
},
"afterTime": {
"description": "deadline: the time of filing",
"type": "string"
},
"args": {
"description": "the arguments of the predicate in the order of its signature; with kind='collect' exactly one of them is the selection variable ?name (for example ['urn:x:water', 'urn:x:mix', '?value']), the rest are values. Values follow the parameter type: an entity โ 'urn:โฆ' or a short name; Date โ 'YYYY-MM-DD'; Money โ '<number> <currency>' ('43250 KZT'); Quantity โ '<number> <unit>' with the unit exactly as the package spells it ('25 calendar_year', '30 meter'; law_packages shows the units of the constants, units are never converted โ ยง49); a constant of the package โ its name",
"type": "array"
},
"calc": {
"description": "kind='calc': a tree {op,left,right}, op โ add|sub|mul|div|le|lt|ge|gt|eq|ne (the synonyms divide/multiply/plus/minus and the signs are accepted); the leaves are 5 | '3932 KZT' | '2 mrp' | {lookup: 'mrp', args: [2026]} โ a statutory value from the corpus; aggregates ยง59 are {aggregate: 'sum', element: '?v', over: [{predicate, args with '?variables'}]} over the facts given in facts"
},
"cutoff": {
"description": "deadline: the hour operations close",
"type": "string"
},
"days": {
"description": "deadline: the length of the period",
"type": "integer"
},
"deadlinePolicy": {
"description": "the ยง86 policy for counting time limits expressed in days: {start_count: 'same_day'|'next_day', include_end: true|false, roll: 'no_roll'|'next_working_day'|'previous_working_day'[, month_end: 'last_day_of_month' โ for months and years only]}. Without it a norm carrying a time limit answers with a DEADLINE_POLICY_* warning โ the policy is set by the law of procedure and the server never assumes one. The snapshot of the official calendar ยง85 for working days is supplied by the server itself whenever an instrument counts them.",
"type": "object"
},
"evidence": {
"description": "case documents, section 74, evidence_item nodes. One document is referenced from provenance.evidence of many facts. payload.confidence is data for the EvidencePolicy; the engine does not evaluate the number",
"type": "array"
},
"evidencePolicy": {
"description": "StableId of an evidence_policy node, section 78.2. Without it, previous calls keep their behaviour. The confidence threshold is a rule of that policy, not an argument of the call",
"type": "string"
},
"facts": {
"description": "facts of the case: [{predicate, args, negated?, package?, provenance?, judgment?}]. package resolves an ambiguous short name. provenance is {origin?, evidence?: StableId, span?: {page?, quote?, offset?}, extractor?: {name, version?, confidence?}, observedAt?, recordedAt?}. origin defaults to case_input (section 73; extraction adds no origin value): the extractor is lowered to a was_generated_by edge, the document to was_derived_from. confidence is a decimal string; the threshold is read by the package EvidencePolicy (field confidence), not by the engine. A fact with an extractor and no evidence is accepted as case_input and yields the warning FACT_WITHOUT_EVIDENCE. A call without provenance is unchanged. args use the same notation as the args of the question",
"type": "array"
},
"focused": {
"description": "kind='truth': ask as focused_truth (ยง181.3) โ the same answer as the full truth, but the proof and the warnings cover only the cone of the question; the answer carries evaluationKind and the slice hashes (focus); the cone in focus is reduced to coneHash and the predicate count, the full cone manifest comes in evaluation.focusManifest with proof=true. A slice is not an audit document: law_prepare_answer does not accept it for publication",
"type": "boolean"
},
"kind": {
"description": "the kind of question (truth by default)",
"enum": [
"truth",
"collect",
"deadline",
"calc",
"positions",
"why_not"
]
},
"legalTime": {
"description": "the date of the law (YYYY-MM-DD)",
"type": "string"
},
"package": {
"description": "narrow the question to one package of law",
"type": "string"
},
"predicate": {
"description": "what is being asked, e.g. 'duty_amount'",
"type": "string"
},
"proof": {
"description": "return the evaluation field with the proof graph in the answer โ a ready-made input for law_explain (kind truth|collect; by default a summary without the graph)",
"type": "boolean"
},
"responseMode": {
"description": "full (default) โ the complete answer. compact is accepted for compatibility: this server builds no short reply and returns the same complete answer in both modes; there is no fullAnswer reference and no stored snapshot of the answer.",
"enum": [
"full",
"compact"
]
},
"selectedInterpretations": {
"description": "named readings ยง152; for an exactly_one group choose exactly one StableId out of law_packages/law_rules",
"items": {
"type": "string"
},
"type": "array"
},
"supportEdges": {
"description": "support edges, section 75, support_edge nodes: from is the document id, to is the fact literal, relation is supports or refutes. Admission is decided by the package EvidencePolicy, not by the host",
"type": "array"
},
"unit": {
"enum": [
"calendar_day",
"business_day"
]
},
"version": {
"description": "the exact package version pinned by the client (open('name@version')); if it differs from the profile composition the host refuses instead of answering with another version",
"type": "string"
}
},
"additionalProperties": false
}