6. A method for routing a query, the method comprising: receiving a query from a user passed by an application program on a client side, including: allowing the user to highlight text in a word processing document; and allowing the user to select one or more action items from a menu to initiate the query; processing the query on the client side to create one or more query terms; analyzing the query terms on the client side to identify one or more providers that are matches for the query terms; sending a test query including at least a portion of the query to a particular provider; determining whether or not the particular provider is a match based on a response to the test query from the particular provider; grouping the providers into a plurality of categories on the client side according to information provided by the providers; allowing the user to select a category from the plurality of categories on the client side to route the query; querying the providers that are matches; assembling results from the providers into a hierarchy, the hierarchy including a top level having each provider's name and a status for each provider indicating whether or not the provider is available, and the hierarchy including a bottom level listing search results for one or more of the providers; and presenting the results from the providers to the user in context within a results interface of the application program.
7. The method of claim 6 , wherein the step of processing the query further comprises analyzing the query to identify patterns in the query.