Tool tree
gradeNot graded
describe_learning_offerAnswer
Return the LearningManifest of this page: outcomes, requirements, and every activity with its minutes and grader. When this site names concepts its own way, `concepts` lists those local ids and any alignment the site declares to the nema registry, so a vault can be asked to translate them. Nothing about the learner is read or written, and no question or answer key is returned.
View tool JSON
{
"name": "describe_learning_offer",
"kind": "answer",
"impl": "imperative",
"description": "Return the LearningManifest of this page: outcomes, requirements, and every activity with its minutes and grader. When this site names concepts its own way, `concepts` lists those local ids and any alignment the site declares to the nema registry, so a vault can be asked to translate them. Nothing about the learner is read or written, and no question or answer key is returned.",
"inputSchema": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
},
"page": "/"
}personalize_learning_pathAction
Present a ReadinessAssertion the learner approved in their vault and rebuild the path from it. Verifies the signature, the audience and the expiry, then shows on the page what the learner can skip and why. Returns the personalized path. The learner must approve the disclosure in their vault before a token exists.
View tool JSON
{
"name": "personalize_learning_path",
"kind": "act",
"impl": "imperative",
"description": "Present a ReadinessAssertion the learner approved in their vault and rebuild the path from it. Verifies the signature, the audience and the expiry, then shows on the page what the learner can skip and why. Returns the personalized path. The learner must approve the disclosure in their vault before a token exists.",
"inputSchema": {
"type": "object",
"properties": {
"assertionToken": {
"type": "string",
"description": "A compact nema1. ReadinessAssertion token minted for this origin."
}
},
"required": [
"assertionToken"
],
"additionalProperties": false
},
"page": "/"
}start_activityAction
Open one activity in the page and scroll to it, so the learner can do it. Returns what the learner has to do. This tool navigates only: there is no tool on this page that submits an answer or grades one. Poll get_attempt_status to see what the learner did.
View tool JSON
{
"name": "start_activity",
"kind": "act",
"impl": "imperative",
"description": "Open one activity in the page and scroll to it, so the learner can do it. Returns what the learner has to do. This tool navigates only: there is no tool on this page that submits an answer or grades one. Poll get_attempt_status to see what the learner did.",
"inputSchema": {
"type": "object",
"properties": {
"activityId": {
"type": "string",
"description": "One of: read, architecture-check, naive-check, rings-check, syscall-check, cisc-check."
}
},
"required": [
"activityId"
],
"additionalProperties": false
},
"page": "/"
}get_attempt_statusAnswer
Read what the learner has done on one activity: not_started, in_progress, passed or failed, with attempts, hints used and time spent. Once the learner has submitted, the grader result and the feedback shown on screen are returned too. Never returns the learner submission, the answer or the answer key.
View tool JSON
{
"name": "get_attempt_status",
"kind": "answer",
"impl": "imperative",
"description": "Read what the learner has done on one activity: not_started, in_progress, passed or failed, with attempts, hints used and time spent. Once the learner has submitted, the grader result and the feedback shown on screen are returned too. Never returns the learner submission, the answer or the answer key.",
"inputSchema": {
"type": "object",
"properties": {
"activityId": {
"type": "string",
"description": "One of: read, architecture-check, naive-check, rings-check, syscall-check, cisc-check."
}
},
"required": [
"activityId"
],
"additionalProperties": false
},
"page": "/"
}issue_evidence_receiptAction
Ask this page for the signed EvidenceReceipt of an activity the learner passed. The page signs with a key it generated in this browser and puts the public key inside the receipt, so any vault can verify it without knowing this site. Idempotent: the stored token is returned on a repeat call.
View tool JSON
{
"name": "issue_evidence_receipt",
"kind": "act",
"impl": "imperative",
"description": "Ask this page for the signed EvidenceReceipt of an activity the learner passed. The page signs with a key it generated in this browser and puts the public key inside the receipt, so any vault can verify it without knowing this site. Idempotent: the stored token is returned on a repeat call.",
"inputSchema": {
"type": "object",
"properties": {
"activityId": {
"type": "string",
"description": "One of: read, architecture-check, naive-check, rings-check, syscall-check, cisc-check."
}
},
"required": [
"activityId"
],
"additionalProperties": false
},
"page": "/"
}present_assertionAction
Hand this page a ReadinessAssertion the learner approved in their vault. The page verifies the signature, the audience and the expiry, then shows what the learner can skip. Returns the personalized path.
View tool JSON
{
"name": "present_assertion",
"kind": "act",
"impl": "declarative",
"description": "Hand this page a ReadinessAssertion the learner approved in their vault. The page verifies the signature, the audience and the expiry, then shows what the learner can skip. Returns the personalized path.",
"inputSchema": {
"type": "object",
"properties": {
"assertionToken": {
"type": "string",
"description": "nema1...."
}
},
"required": [
"assertionToken"
]
},
"page": "/"
}