The core of Marshal is the information transfer model. To create a model use the Marshal Editor and combine data extractions, transformations and loading operations to form the result needed.
A Marshal model is a package definition that includes rules on how to obtain the data to pack and, to some extent, what to do with the final package. The overall package structure is created by adding data extraction operations and linking them to one another, forming a tree structure. There's a wide variety of data extractors available, e.g. for running SQL against a relational database, for invoking web services (JSON/XML) exposed by a system or plain harvesting of web pages and files.
Marshal provides a large set of functionality to process the extracted data. This includes standard data encoding and conversion functions as well as programmatic tools such as regular expressions and XPaths to pick values from plain text and XML respectively. There are also data processing functions for managing documents (BLOBs), allowing your to store them embedded (base64) in or external (xlink) to the XML file.
It's also possible to model loading, i.e. to model operations that are to be run after the extractions and transformations. This is typically used to create search indexes for exported information to completely model data migration from one system to another.