code: public static String validateCapabilities(ToolConsumer consumer, JSONObject providerProfile) 
  	{
  		List<Properties> theTools = new ArrayList<Properties> ();
  		Properties info = new Properties();
  
  		// Mostly to catch casting errors from bad JSON
  		try {
  			String retval = parseToolProfile(theTools, info, providerProfile);
  			if ( retval != null )  return retval;
  
  			if ( theTools.size() < 1 ) return "No tools found in profile";
  
  			// Check all the capabilities requested by all the tools comparing against consumer
  			List<String> capabilities = consumer.getCapability_offered();
  			for ( Properties theTool : theTools ) {
  				String ec = (String) theTool.get("enabled_capability");
  				JSONArray enabled_capability = (JSONArray) JSONValue.parse(ec);
  				if ( enabled_capability != null ) for (Object o : enabled_capability) {
  					ec = (String) o;
  					if ( capabilities.contains(ec) ) continue;
  					return "Capability not permitted="+ec;
  				}
  			}
  			return null;
  		}
  		catch (Exception e ) {
  			return "Exception:"+ e.getLocalizedMessage();
  		}
  	}
docs: Validate incoming capabilities requested against out ToolConsumer