This paper considers the semantics of the agent communication language KQML. By using this language for communication, agents will be able to request and provide services. Indeed, numerous projects have shown how the language can profitably support interoperation among distributed agents. However, before becoming a widely-accepted standard, it would be worthwhile to examine the language in detail, especially the semantical issues it raises. This paper identifies numerous difficulties with the language, and an attempt is made to point to their resolution. The paper illustrates the kind of semantics we believe to be necessary to characterize agent communication languages, identifies an important adequacy condition (compositionality) and shows how to compose a question from a request and an inform. Finally, the paper discusses possible impacts to be felt on various KQML decisions from the semantical issues raised here.