The location of the service configuration file is provided by the servicesConfigURL User Setting, and defaults to servicesconfig.xml in the users' ChemAxon folder - located in the user home as .chemaxon or ChemAxon, depending on the operating system.
The file should be valid for the following XSD schema:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- definition of attributes -->
<xs:attribute name="alias" type="xs:string" />
<xs:attribute name="name" type="xs:string" />
<xs:attribute name="class" type="xs:string" />
<xs:attribute name="url" type="xs:string" />
<xs:attribute name="method" type="xs:string" />
<xs:attribute name="descriptor" type="xs:string" default="chemaxon.marvin.services.descriptors.LocalServiceDescriptor"/>
<xs:attribute name="value" type="xs:string" />
<xs:attribute name="expression" type="xs:string" />
<!-- definition of complex types -->
<xs:complexType name="evaluationType">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute ref="class" use="optional" default="chemaxon.marvin.services.ChemicalTermsArgument" />
<xs:attribute ref="expression" use="optional" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="argumentType">
<xs:all>
<xs:element name="Evaluate" type="evaluationType" minOccurs="0" maxOccurs="1" />
</xs:all>
<xs:attribute name="class" use="optional" default="java.lang.String">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="java.lang.Integer" />
<xs:enumeration value="java.lang.Float" />
<xs:enumeration value="java.lang.Double" />
<xs:enumeration value="java.lang.String" />
<xs:enumeration value="java.lang.Long" />
<xs:enumeration value="java.lang.Boolean" />
<xs:enumeration value="chemaxon.struc.Molecule" />
<xs:enumeration value="chemaxon.struc.MDocument" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute ref="value" use="optional" />
<xs:attribute ref="name" use="optional" default="Unnamed" />
<xs:attribute ref="alias" use="optional" />
</xs:complexType>
<xs:complexType name="serviceType">
<xs:all>
<xs:element name="Arguments" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="Argument" type="argumentType" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute ref="name" use="required" />
<xs:attribute ref="url" use="required" />
<xs:attribute ref="method" use="required" />
<xs:attribute ref="class" use="optional" />
<xs:attribute ref="descriptor" use="optional" />
<xs:attribute ref="alias" use="optional" />
<xs:anyAttribute processContents="skip" />
</xs:complexType>
<xs:element name="Services">
<xs:complexType>
<xs:sequence>
<xs:element name="Service" type="serviceType" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>