Executes a question-bank assessment against answer fixtures you supply — an answ
Executes a question-bank assessment against answer fixtures you supply — an answer plus the score it should produce — using the native OpenOLAT QTI engine rather than a reimplementation of the scoring rules. Each fixture comes back with expected and actual score, and the discrepancy count says at a glance whether the bank behaves as its author believed. This is the regression test for a question bank before it goes in front of learners, where a mis-scoring item is expensive and hard to undo.
Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.
Endpoint
POST https://agent.halowerk.com/v1/oss-openolat-question-bank-answer-fixture-review
| Category | Everything else |
|---|---|
| Provider host | agent.halowerk.com |
| Networks | eip155:8453 |
| Payment schemes | exact |
| Self-reported calls, 30 days | 1 from 1 payers (the provider's figure, not ours) |
Our checks, last 30 days
| Day | Result | HTTP | Asked | Time |
|---|---|---|---|---|
| 2026-10-24 | valid payment request | 402 | $0.005 | 1262 ms |
Example input (from the provider)
{
"body": {
"assets": [
{
"content_base64": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4//8/AAX+Av4N70a4AAAAAElFTkSuQmCC",
"media_type": "image/png",
"name": "media/diagram.png"
}
],
"bank_id": "supplied_bank",
"cut_value": "6",
"fixtures": [
{
"events": [
{
"item_id": "single",
"persist_and_reopen": false,
"responses": [
{
"response_id": "RESPONSE",
"values": [
"A"
]
}
]
},
{
"item_id": "multiple",
"persist_and_reopen": true,
"responses": [
{
"response_id": "RESPONSE",
"values": [
"A",
"B"
]
}
]
},
{
"item_id": "numeric",
"persist_and_reopen": false,
"responses": [
{
"response_id": "RESPONSE",
"values": [
"42.0"
]
}
]
},
{
"item_id": "text",
"persist_and_reopen": false,
"responses": [
{
"response_id": "RESPONSE",
"values": [
"GR\u00dc\u00dfE"
]
}
]
},
{
"item_id": "ordered",
"persist_and_reopen": false,
"responses": [
{
"response_id": "RESPONSE",
"values": [
"A",
"B",
"C"
]
}
]
}
],
"expected": {
"items": [
{
"attempts": 1,
"invalid_response_ids": [],
"item_id": "single",
"response_valid": true,
"score": "1",
"unbound_response_ids": []
},
{
"attempts": 1,
"invalid_response_ids": [],
"item_id": "multiple",
"response_valid": true,
"score": "3",
"unbound_response_ids": []
},
{
"attempts": 1,
"invalid_response_ids": [],
"item_id": "numeric",
"response_valid": true,
"score": "1",
"unbound_response_ids": []
},
{
"attempts": 1,
"invalid_response_ids": [],
"item_id": "text",
"response_valid": true,
"score": "2",
"unbound_response_ids": []
},
{
"attempts": 1,
"invalid_response_ids": [],
"item_id": "ordered",
"response_valid": true,
"score": "1",
"unbound_response_ids": []
}
],
"passed": true,
"test_score": "8"
},
"fixture_id": "correct"
},
{
"events": [
{
"item_id": "single",
"persist_and_reopen": false,
"responses": [
{
"response_id": "RESPONSE",
"values": [
"A"
]
}
]
},
{
"item_id": "multiple",
"persist_and_reopen": true,
"responses": [
{
"response_id": "RESPONSE",
"values": [
"A",
"C"
]
}
]
},
{
"item_id": "numeric",
"persist_and_reopen": false,
"responses": [
{
"response_id": "RESPONSE",
"values": [
"41"
]
}
]
},
{
"item_id": "text",
"persist_and_reopen": false,
"responses": [
{
"response_id": "RESPONSE",
"values": [
"gr\u00fc\u00dfe"
]
}
]
},
{
"item_id": "ordered",
"persist_and_reopen": false,
"responses": [
{
"response_id": "RESPONSE",
"values": [
"C",
"B",
"A"
]
}
]
}
],
"expected": {
"items": [
{
"attempts": 1,
"invalid_response_ids": [],
"item_id": "single",
"response_valid": true,
"score": "1",
"unbound_response_ids": []
},
{
"attempts": 1,
"invalid_response_ids": [],
"item_id": "multiple",
"response_valid": true,
"score": "1",
"unbound_response_ids": []
},
{
"attempts": 1,
"invalid_response_ids": [],
"item_id": "numeric",
"response_valid": true,
"score": "1",
"unbound_response_ids": []
},
{
"attempts": 1,
"invalid_response_ids": [],
"item_id": "text",
"response_valid": true,
"score": "2",
"unbound_response_ids": []
},
{
"attempts": 1,
"invalid_response_ids": [],
"item_id": "ordered",
"response_valid": true,
"score": "0",
"unbound_response_ids": []
}
],
"passed": true,
"test_score": "5"
},
"fixture_id": "expected_discrepancies"
}
],
"items": [
{
"item_id": "single",
"xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><assessmentItem xmlns=\"http://www.imsglobal.org/xsd/imsqti_v2p1\" identifier=\"single\" title=\"single\" adaptive=\"false\" timeDependent=\"false\"><responseDeclaration identifier=\"RESPONSE\" cardinality=\"single\" baseType=\"identifier\"><correctResponse><value>A</value></correctResponse></responseDeclaration><outcomeDeclaration identifier=\"SCORE\" cardinality=\"single\" baseType=\"float\"><defaultValue><value>0</value></defaultValue></outcomeDeclaration><itemBody><p><img src=\"media/diagram.png\" alt=\"Synthetic one-pixel fixture\"/></p><choiceInteraction responseIdentifier=\"RESPONSE\" shuffle=\"false\" maxChoices=\"1\"><simpleChoice identifier=\"A\">Alpha</simpleChoice><simpleChoice identifier=\"B\">Beta</simpleChoice><simpleChoice identifier=\"C\">Gamma</simpleChoice></choiceInteraction></itemBody><responseProcessing template=\"http://www.imsglobal.org/question/qti_v2p1/rptemplates/match_correct\"/></assessmentItem>"
},
{
"item_id": "multiple",
"xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><assessmentItem xmlns=\"http://www.imsglobal.org/xsd/imsqti_v2p1\" identifier=\"multiple\" title=\"multiple\" adaptive=\"false\" timeDependent=\"false\"><responseDeclaration identifier=\"RESPONSE\" cardinality=\"multiple\" baseType=\"identifier\"><correctResponse><value>A</value><value>B</value></correctResponse><mapping defaultValue=\"-2\" lowerBound=\"0\" upperBound=\"3\"><mapEntry mapKey=\"A\" mappedValue=\"2\"/><mapEntry mapKey=\"B\" mappedValue=\"1\"/><mapEntry mapKey=\"C\" mappedValue=\"-1\"/></mapping></responseDeclaration><outcomeDeclaration identifier=\"SCORE\" cardinality=\"single\" baseType=\"float\"><defaultValue><value>0</value></defaultValue></outcomeDeclaration><itemBody><choiceInteraction responseIdentifier=\"RESPONSE\" shuffle=\"false\" maxChoices=\"3\"><simpleChoice identifier=\"A\">Alpha</simpleChoice><simpleChoice identifier=\"B\">Beta</simpleChoice><simpleChoice identifier=\"C\">Gamma</simpleChoice></choiceInteraction></itemBody><responseProcessing template=\"http://www.imsglobal.org/question/qti_v2p1/rptemplates/map_response\"/></assessmentItem>"
},
{
"item_id": "numeric",
"xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><assessmentItem xmlns=\"http://www.imsglobal.org/xsd/imsqti_v2p1\" identifier=\"numeric\" title=\"numeric\" adaptive=\"false\" timeDependent=\"false\"><responseDeclaration identifier=\"RESPONSE\" cardinality=\"single\" baseType=\"float\"><correctResponse><value>42</value></correctResponse></responseDeclaration><outcomeDeclaration identifier=\"SCORE\" cardinality=\"single\" baseType=\"float\"><defaultValue><value>0</value></defaultValue></outcomeDeclaration><itemBody><p>Answer: <textEntryInteraction responseIdentifier=\"RESPONSE\"/></p></itemBody><responseProcessing template=\"http://www.imsglobal.org/question/qti_v2p1/rptemplates/match_correct\"/></assessmentItem>"
},
{
"item_id": "text",
"xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><assessmentItem xmlns=\"http://www.imsglobal.org/xsd/imsqti_v2p1\" identifier=\"text\" title=\"text\" adaptive=\"false\" timeDependent=\"false\"><responseDeclaration identifier=\"RESPONSE\" cardinality=\"single\" baseType=\"string\"><correctResponse><value>Gr\u00fc\u00dfe</value></correctResponse></responseDeclaration><outcomeDeclaration identifier=\"SCORE\" cardinality=\"single\" baseType=\"float\"><defaultValue><value>0</value></defaultValue></outcomeDeclaration><itemBody><p>Answer: <textEntryInteraction responseIdentifier=\"RESPONSE\"/></p></itemBody><responseProcessing><responseCondition><responseIf><stringMatch caseSensitive=\"false\" substring=\"false\"><variable identifier=\"RESPONSE\"/><baseValue baseType=\"string\">Gr\u00fc\u00dfe</baseValue></stringMatch><setOutcomeValue identifier=\"SCORE\"><baseValue baseType=\"float\">2</baseValue></setOutcomeValue></responseIf><responseElse><setOutcomeValue identifier=\"SCORE\"><baseValue baseType=\"float\">0</baseValue></setOutcomeValue></responseElse></responseCondition></responseProcessing></assessmentItem>"
},
{
"item_id": "ordered",
"xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><assessmentItem xmlns=\"http://www.imsglobal.org/xsd/imsqti_v2p1\" identifier=\"ordered\" title=\"ordered\" adaptive=\"false\" timeDependent=\"false\"><responseDeclaration identifier=\"RESPONSE\" cardinality=\"ordered\" baseType=\"identifier\"><correctResponse><value>A</value><value>B</value><value>C</value></correctResponse></responseDeclaration><outcomeDeclaration identifier=\"SCORE\" cardinality=\"single\" baseType=\"float\"><defaultValue><value>0</value></defaultValue></outcomeDeclaration><itemBody><orderInteraction responseIdentifier=\"RESPONSE\" shuffle=\"false\"><simpleChoice identifier=\"A\">Alpha</simpleChoice><simpleChoice identifier=\"B\">Beta</simpleChoice><simpleChoice identifier=\"C\">Gamma</simpleChoice></orderInteraction></itemBody><responseProcessing template=\"http://www.imsglobal.org/question/qti_v2p1/rptemplates/match_correct\"/></assessmentItem>"
}
],
"maximum_score": "8",
"score_tolerance": "0"
},
"bodyType": "json",
"method": "POST",
"type": "http"
}
Promised output schema (from the provider)
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"body": {
"additionalProperties": false,
"properties": {
"assets": {
"items": {
"additionalProperties": false,
"properties": {
"content_base64": {
"maxLength": 174764,
"minLength": 4,
"type": "string"
},
"media_type": {
"enum": [
"image/png",
"image/jpeg",
"image/gif",
"image/webp"
]
},
"name": {
"pattern": "^[A-Za-z0-9][A-Za-z0-9_./-]{0,127}$",
"type": "string"
}
},
"required": [
"name",
"media_type",
"content_base64"
],
"type": "object"
},
"maxItems": 32,
"minItems": 0,
"type": "array"
},
"bank_id": {
"pattern": "^[A-Za-z_][A-Za-z0-9_.-]{0,63}$",
"type": "string"
},
"cut_value": {
"anyOf": [
{
"pattern": "^-?(0|[1-9][0-9]{0,6})(\\.[0-9]{1,9})?$",
"type": "string"
},
{
"type": "null"
}
]
},
"fixtures": {
"items": {
"additionalProperties": false,
"properties": {
"events": {
"items": {
"additionalProperties": false,
"properties": {
"item_id": {
"pattern": "^[A-Za-z_][A-Za-z0-9_.-]{0,63}$",
"type": "string"
},
"persist_and_reopen": {
"type": "boolean"
},
"responses": {
"items": {
"additionalProperties": false,
"properties": {
"response_id": {
"pattern": "^[A-Za-z_][A-Za-z0-9_.-]{0,63}$",
"type": "string"
},
"values": {
"items": {
"maxLength": 4096,
"minLength": 0,
"type": "string"
},
"maxItems": 64,
"minItems": 0,
"type": "array"
}
},
"required": [
"response_id",
"values"
],
"type": "object"
},
"maxItems": 32,
"minItems": 0,
"type": "array"
}
},
"required": [
"item_id",
"responses",
"persist_and_reopen"
],
"type": "object"
},
"maxItems": 64,
"minItems": 0,
"type": "array"
},
"expected": {
"additionalProperties": false,
"properties": {
"items": {
"items": {
"additionalProperties": false,
"properties": {
"attempts": {
"maximum": 64,
"minimum": 0,
"type": "integer"
},
"invalid_response_ids": {
"items": {
"pattern": "^[A-Za-z_][A-Za-z0-9_.-]{0,63}$",
"type": "string"
},
"maxItems": 32,
"minItems": 0,
"type": "array",
"uniqueItems": true
},
"item_id": {
"pattern": "^[A-Za-z_][A-Za-z0-9_.-]{0,63}$",
"type": "string"
},
"response_valid": {
"type": "boolean"
},
"score": {
"anyOf": [
{
"pattern": "^-?(0|[1-9][0-9]{0,6})(\\.[0-9]{1,9})?$",
"type": "string"
},
{
"type": "null"
}
]
},
"unbound_response_ids": {
"items": {
"pattern": "^[A-Za-z_][A-Za-z0-9_.-]{0,63}$",
"type": "string"
},
"maxItems": 32,
"m