There's a lot of steps to that! It starts when the user sends in the code they want; that's read off the ansible and translated by the machinery into a series of marbles. Those then go into a machine with a section of track that can tilt down, and marbles denoting zero are added to the top until it's full; every time they get to the point where the longest book code is another digit longer they have to change that bit to make room for the new digit. Then the special marbles denoting the beginning and end of that section are added, and the marbles that encode where the ansible is, so the machine can find it again when it has the book. The marbles then go off to a reader, which checks the first marble to make sure it's makes the 'beginning' tone, and then it checks the second marble to see what tone it makes and adjusts the track depending on what it hears. Once it's checked the second marble, it removes it, so when the request gets to the next reader the old third marble is the new second marble, and that gets checked and removed. Once it gets to the last marble in the code, it's made its way to the book that was requested, and from there the track is made in a way that lets the encoded book follow along behind the marbles in the second part of the code, which lead it to the reader with the ansible in it in the same way the marbles were led to the book in the first place. Then once they get to the reader, the encoded book goes into that and the reader decodes it into a series of marbles that are then translated into ansible nudges to send back to the person who requested the book. Of course that's a simplification; there are extra bits of machinery that do things like sending the entire request to a holding lane if there aren't any readers free or the book it's looking for is already being read by someone else, or that handle things like the library having a few copies of a very popular book available or something going wrong with how the request is put together. It gets really complicated!