When you upgrade your contact list in Kontalk, you actually trigger this procedure. The client builds a XML block with SHA1 hashes of all your contacts' phone numbers and sends them to the server. The server than looks them up in the whole network and returns matches.
When requesting discovery items to the XMPP service name, the probe component will show up:
<iq type="result" to="[email protected]/wonderland" id="41VKi-7" from="beta.kontalk.net">
<query xmlns="http://jabber.org/protocol/disco#items">
...
<item jid="[email protected]" name="Kontalk probe engine"/>
...
</query>
</iq>
When you want to initiate a roster match request, send it to the probe component with a list of JIDs to be searched. You must send them with the domain part of the server you are connected with, no matter to what server you think the user is connected. The server will reply with correct domain parts.
<iq type="get" to="[email protected]" id="N1">
<query xmlns="http://kontalk.org/extensions/roster">
<item jid="[email protected]"/>
<item jid="[email protected]"/>
<item jid="[email protected]"/>
...
</query>
</iq>
The server will look up the request JIDs on the network and reply with matches.
<iq type="result" to="[email protected]/wonderland" from="[email protected]" id="N1">
<query xmlns="http://kontalk.org/extensions/roster">
<item jid="[email protected]"/>
<item jid="[email protected]"/>
...
</query>
</iq>