{"ok":true,"site":{"host":"leofratu.github.io","url":"https://leofratu.github.io/oai-hackathon/","type":"live","desc":"Train an online text classifier with human labels and a WebMCP browser agent.","tools":[{"name":"get_training_state","kind":"answer","impl":"imperative","description":"Read the Label Loop task, online Naive Bayes model, label queue, current configuration, and aggregate holdout metrics. Hidden holdout labels and unresolved human labels are excluded.","title":"Read online training state","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/oai-hackathon/"},{"name":"inspect_uncertain_samples","kind":"answer","impl":"imperative","description":"Return unlabeled support tickets ranked by normalized predictive entropy. Use this to select the most informative samples for human review.","title":"Rank uncertain samples","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":8,"description":"Number of uncertain samples to return."}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/oai-hackathon/"},{"name":"queue_label_review","kind":"transact","impl":"imperative","description":"Queue one to three unlabeled samples for the person. This tool cannot assign labels. The review appears on the shared page and must be completed by the person.","title":"Request human labels","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"sampleIds":{"type":"array","minItems":1,"maxItems":3,"uniqueItems":true,"items":{"type":"string","pattern":"^ticket-[0-9]{3}$"},"description":"Unlabeled sample IDs returned by inspect_uncertain_samples."},"note":{"type":"string","minLength":1,"maxLength":180,"description":"Why these labels would improve the model."}},"required":["sampleIds","note"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/oai-hackathon/"},{"name":"train_confirmed_batch","kind":"act","impl":"imperative","description":"Incrementally update the in-browser classifier with up to eight labels already confirmed by the person. Unreviewed and agent-predicted labels are never trained.","title":"Train on confirmed labels","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"maximum":{"type":"integer","minimum":1,"maximum":8,"description":"Maximum confirmed examples to consume."}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/oai-hackathon/"},{"name":"evaluate_model","kind":"act","impl":"imperative","description":"Return aggregate accuracy, macro F1, confidence, log loss, and per-label metrics on a fixed hidden holdout set. Individual holdout examples and answers are never returned.","title":"Evaluate the classifier","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/oai-hackathon/"},{"name":"propose_model_config","kind":"act","impl":"imperative","description":"Stage new smoothing and low-confidence review settings with a rationale. The proposal does not change the classifier until the person accepts it on the page.","title":"Propose model settings","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"alpha":{"type":"number","minimum":0.1,"maximum":3,"description":"Laplace smoothing strength."},"reviewThreshold":{"type":"number","minimum":0.5,"maximum":0.95,"description":"Predictions below this confidence require human review."},"rationale":{"type":"string","minLength":1,"maxLength":220,"description":"Why the proposed settings fit the current evidence."}},"required":["alpha","reviewThreshold","rationale"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/oai-hackathon/"},{"name":"inspect_training_history","kind":"answer","impl":"imperative","description":"Read metric checkpoints and the provenance of examples trained during this session. This never reveals hidden holdout answers.","title":"Inspect training history","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/oai-hackathon/"},{"name":"predict_ticket","kind":"act","impl":"imperative","description":"Classify new support-ticket text with the current in-browser model. Returns probabilities, normalized entropy, the approved review threshold, and a route-or-review decision.","title":"Run model inference","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"text":{"type":"string","minLength":3,"maxLength":300,"description":"Support-ticket text to classify."}},"required":["text"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/oai-hackathon/"},{"name":"inspect_model_diagnostics","kind":"act","impl":"imperative","description":"Return one-vs-rest feature weights, aggregate confusion counts, calibration gap, and log loss for the current model without exposing individual holdout rows.","title":"Inspect learned model diagnostics","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"featureLimit":{"type":"integer","minimum":3,"maximum":10,"description":"Top learned tokens per class."}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/oai-hackathon/"}],"category":"AI & Agents","favicon":"/favicons/leofratu.github.io.svg","apiSurface":"spec","toolCount":9}}