Common to Grid services, Web Services, software agents and software components is that they are independently built and provide services aimed for composition. A key issue is whether or not the services in a composite system can interact with each other “sensibly” and as orchestrated by the enclosing composition. In this paper, we introduce an approach where we can specify individual services’ interaction intentions, and check their compatibility in a composite system. We discuss the use of the approach, the specification language, and the compatibility checking tool in the context of software components. They are equally applicable to other service frameworks mentioned above.