I had this moving dot barcode reader and it gave me an idea. It is recognized as a USB keyboard, and it just works out of the box without any software on any computer.
I imagine a glass bead blinky implant that when it powers up, it waits a second, and increments an internal register. Then it blinks out the otp code in Code39 with a red led (surrounded by “*” codes to the barcode spec).
If you take the barcode reader, break the vibrating magnet thing and swap the laser for blue, add a filter to the sensor. The barcode reader will now type your otp. The wedge could simply become a Frankenstein merger of a power source for NFC and an existing off the shelf barcode reader board that has been stripped of its original plastic housing.
Set up something on the chip so that the secret value can be saved, overwritten if given a valid series of expected codes, but never read.
Also relevent: The method of powering up the device is magnetic pairing, the method of sending the otp, is arbitrary coded light pulses. Code 39 is merely an example, effective means of transmitting numbers is arbitrary. Morse code, count the number of blinks and pauses (pulse dial), use dmtf modulation, use Reed-Solomon error correction, etc.
HOTP is TOTP but instead of an incrementing value it is the time that adds some pinache to your secret. This standalone file works well. NFC can’t keep time, but it can keep count.