Bluetoothctl set passkey

I just had the same issue. If you press tab twice after agent you should see a list of available agents; KeyboardOnly works fine without notifications:

[bluetooth]# agent on          # accidentally used wrong agent
Agent registered
[bluetooth]# agent 
DisplayOnly      DisplayYesNo     KeyboardDisplay  KeyboardOnly     NoInputNoOutput  off              on               
[bluetooth]# agent KeyboardOnly 
Agent is already registered    # can't use two agents at one
[bluetooth]# agent off         # unregister agent
Agent unregistered
[bluetooth]# agent KeyboardOnly   # register proper agent
Agent registered
[bluetooth]# pair XX:XX:XX:04:F5:7C 
Attempting to pair with XX:XX:XX:04:F5:7C 
[CHG] Device XX:XX:XX:04:F5:7C Connected: yes
Request passkey
[agent] Enter passkey (number in 0-999999): 722504
[MoarBacon]# pair XX:XX:XX:04:F5:7C 
Attempting to pair with XX:XX:XX:04:F5:7C 
[CHG] Device XX:XX:XX:04:F5:7C Paired: yes
Pairing successful

Here is what works thanks to kaylum :

$bluetoothctl
[bluetooth]# power on
Changing power on succeeded
[bluetooth]# discoverable on
Changing discoverable on succeeded
[bluetooth]# pairable on
Changing pairable on succeeded
[bluetooth]# agent NoInputNoOutput
Agent registered
[bluetooth]# default-agent 
Default agent request successful

Then I pair the raspberry with my phone from the phone.

[NEW] Device XX:XX:XX:XX:XX:XX nameofthedevice
[CHG] Device XX:XX:XX:XX:XX:XX UUIDS:
      --UUIDS--
[CHG] Device XX:XX:XX:XX:XX:XX Paired: yes