Agent DetectiveTHE MIDNIGHT GALANederlands
A moonlit manor beyond an iron gate. On the desk: a sealed letter, books, a map and a pocket watch.
Inspect manorInspect observatoryEnter team registryInspect witness notesInspect manor planInspect pocket watchRead sealed letter
ENGLAND · 23:57

The midnight
invitation

A sealed letter waits on the desk. It bears your name.

Click an object to inspect it. Tab + Enter also work. Swipe the scene to explore.

Your commission

Build an agent. Solve the midnight mystery.

Detective, the answer is hidden in separate records. Your task is to build a Python agent that connects them. Complete the three TODOs in the starter package.

  1. Parse — Read and validate one JSON action from the chat model.
  2. Dispatch — Call only an allowed evidence tool with valid arguments.
  3. Loop — Give observations back to the model until it submits a person, a room and a weapon.

Register at the gate. Download the starter. Test in practice mode. Start ranked mode only when your lecturer opens it.

Open assignment →

Investigation guide · No live case evidence is shown here.

The scene of the mystery

One person. One room. One weapon.

Build a small evidence-joining agent for a fictional midnight gala mystery.

Your Python program asks an ordinary chat model for one plain-text JSON action at a time. It validates the action, calls one allowlisted evidence tool, adds the observation to the next model message, and eventually submits one person, one room, and one weapon.

OBSERVE → DECIDE → ACT

Inspect the desk to learn how to connect the evidence. The actual mystery is solved by your Python agent using the game API.

Investigation guide · No live case evidence is shown here.

The manor plan

Two clues. One location.

FLOOR + WING → ROOM

The witness saw a floor. The forensic report identifies a wing. Compare both with the room catalog. The matching room is the link to the other evidence.

get_witness_statement
get_forensics_report
list_rooms

Investigation guide · No live case evidence is shown here.

The witness ledger

A jacket is only half the story.

CLOTHING + ACCESS → PERSON

Read the jacket color in the witness statement. Match it against the people catalog, then check who had access to the identified room. You need both clues.

list_people
get_access_log

Investigation guide · No live case evidence is shown here.

The forensic instrument

Matter leaves a trace.

MATERIAL + INVENTORY → WEAPON

The forensic report gives the material. Compare it with the weapon catalog and the inventory of the identified room. Together they identify the object.

list_weapons
get_inventory

Investigation guide · No live case evidence is shown here.

The rules of time

Prepare before the clock starts.

Registration does not start a timer. Your code starts it when you initialize a run.

Practice first. One valid final answer ends a run, even if it is wrong. Malformed final JSON does not consume a run.

Leaderboard →

Investigation guide · No live case evidence is shown here.

The team registry

Every investigation needs a name.

Use the shared class code from your lecturer. Registration creates a team, not a run.

Your team code is public. Your long credential is private. Keep it out of prompts, screenshots, and Git.

Register your team →

Investigation guide · No live case evidence is shown here.