Matchmaking has been a subject of research for many years, but the increasing uptake of service-oriented computing, of which the Grid can be seen as a particular instance, has made effective and flexible matchmaking a necessity. Early approaches to matchmaking and current schemes in the Grid community, like ClassAds, take a syntactic point of view, essentially matching up literals or satisfying some simple constraints for the purpose of identifying computational resources. The increasing availability of web services shifts attention to the function of the service, but WSDL can only publish (limited) information about the signature of the operation which tells the client little about what the service actually does. The focus in the MONET (www.monet.nag.co.uk) and GENSS (genss.cs.bath.ac.uk) projects has been on describing the semantics of mathematical services and developing the means to search for suitable services given a problem description. In this paper we discuss (i) the schema extending WSDL that we call Mathematical Service Description Language (MSDL), (ii) a number of ontologies for describing various properties of mathematical services, (iii) an approach to describing pre-and post-conditions in OpenMath (www.openmath.org) and (iv) an extensible, generic matchmaking framework along with a suite of match plug-ins that are themselves web services.