The proliferation of cell phones has led to an ever increasing number of inappropriate interruptions. SmartContacts provides a solution to this problem by empowering the caller to make better, more informed decisions about the appropriateness of making a call by providing him/her information about the receiver's context. SmartContacts also demonstrates the usefulness and feasibility of a large scale service discovery mechanism for a ubiquitous computing environment. It supports automatic service discovery over the Internet in real time and on demand. It adopts a purely decentralized service organization structure, which provides better scalability and fault tolerance than most of the existing service discovery systems.