1. A method of automatically augmenting functionality in an application programming interface comprising the steps of: receiving from an application a request for functionality to be fulfilled by a first component implementing at least a portion of the functionality within the application programming interface; querying the first component for the requested functionality; receiving an indication from the first component that the requested functionality is not implemented by the first component; searching for an augmentation component that implements the requested functionality; loading the augmentation component to fulfill the request for functionality in place of the first component; and responding to the request for functionality using the loaded augmentation component.