Calvin is a research grade agent system which observes users accessing documents. It provides facilities for building agent that can index the documents, and make suggestions based on the documents accessed. The process of indexing and suggesting has been abstracted so that multiple data analysis components can be implemented without modifying the architecture. Interactions can automatically be recorded and ``replayed,'' allowing the automatic creation of a test bed of data sets for determining the performance of analyzing algorithms. The kinds of resources the agents can recognize, as well as the ways in which the resources are accessed are extensible because of a built in resource registry and XML message passing over TCP/IP connections. Calvin is designed to help free the researchers from thinking about data storage/infrastructure issues, so that they can focus on the information analysis elements of the research.