BGP-MS is a user modeling shell system that can assist interactive software systems in adapting to their current users by taking the users' presumed knowledge, beliefs, and goals into account. It offers applications several methods for communicating observations concerning the user to BGP-MS, and for obtaining information on currently held assumptions about the user from BGP-MS. It provides a choice of two integrated formalisms for representing beliefs and goals, and includes several types of inferences for drawing additional assumptions based on an initial interview, observed user actions, and stereotypical knowledge about pre-defined user subgroups.BGP-MS is a customizable software system that is independent from applications, operates concurrently with them, and interacts with them through inter-process communication. For tailoring BGP-MS to a specific application domain, the developer must select those components of BGP-MS that are needed in this domain and fill them with relevant domain-dependent user modeling knowledge. This paper first summarizes the user modeling services that BGP-MS provides to application programs at runtime. It discusses the representational and inferential foundations that determine the scope and the limits of these services, and also gives a detailed example illustrating the interaction between the various system components. It describes interfaces that are available to application developers for tailoring BGP-MS to the specific user modeling needs of their application domains. Finally, it compares the system with all other major user modeling shell systems, and describes a first application that employs BGP-MS for adapting hypertext to users' terminological knowledge.