MP: A Protocol for Efficient Exchange of Mathematical Expressions The Multi Protocol (MP) is designed for integrating symbolic, numeric, graphics, document processing, and other tools for scientific computation, into a single distributed problem-solving environment. MP is layered, reflecting the logically distinct aspects of tool integration. Data representation issues are addressed by specifying a set of basic data types and a mechanism for constructing non-basic types. MP passes all data in the form of annotated parse trees. The parse tree provides a simple, flexible and tool-independent way to represent and exchange data, and annotations provide a powerful and generic expressive facility for transmitting additional information. MP also provides efficient encodings for numeric data and includes different types of optimizations to reduce the cost of exchanging data. The optimizations are important when transmitting large expressions typically encountered in symbolic and numeric computation. MP is extensible. Users can define additional sets of operators and annotations as well as tailor the generic optimization mechanisms to efficiently encode their own data structures. A clear distinction between MP-defined and user-defined definitions is enforced.