A computer-implemented method to search for applications considering contextual input information, the method comprising: receiving first contextual information that is related to a computing device, the contextual information including capability information of the computing device for installing and automatically configuring the application to run on the computing device; accessing application manifest information for applications available from an application catalog; accessing policy information that determines how to match accessed application manifest information to the received first contextual information related to the device; identifying one or more applications with manifest data that matches a currently detected context based on the accessed policy information; ranking identified applications higher than other applications in the application catalog; displaying applications to the user based on the modified ranking produced by considering the first contextual information; upon receiving a request to install an application among the displayed applications, installing and automatically configuring the application based on the capability information of the computing device; upon receiving an instruction to run the application, running the application; providing, to the running application, second contextual information that describes events taking place on the computing device, wherein the events include at least one of indications of content a user is consuming, activities on a user's schedule, a location of the computing device, a person the user is communicating with, or recent activities of the user; and modifying behavior of the running application based on the second contextual information, including modifying a part of an interface of the running application or a main screen of the running application with contextually relevant information. receiving first contextual information that is related to a computing device, the contextual information including capability information of the computing device for installing and automatically configuring the application to run on the computing device; accessing application manifest information for applications available from an application catalog; accessing policy information that determines how to match accessed application manifest information to the received first contextual information related to the device; identifying one or more applications with manifest data that matches a currently detected context based on the accessed policy information; ranking identified applications higher than other applications in the application catalog; displaying applications to the user based on the modified ranking produced by considering the first contextual information; upon receiving a request to install an application among the displayed applications, installing and automatically configuring the application based on the capability information of the computing device; upon receiving an instruction to run the application, running the application; providing, to the running application, second contextual information that describes events taking place on the computing device, wherein the events include at least one of indications of content a user is consuming, activities on a user's schedule, a location of the computing device, a person the user is communicating with, or recent activities of the user; and modifying behavior of the running application based on the second contextual information, including modifying a part of an interface of the running application or a main screen of the running application with contextually relevant information.