This paper lays part of the groundwork for a domain theory of negotiation, that is, a way of classifying interactions so that it is clear, given a domain, which negotiation mechanisms and strategies are appropriate. We de ne State Oriented Domains, a general category of interaction. Necessary and su cient conditions for cooperation are outlined. We use the notion of worth in an altered de nition of utility, thus enabling agreements in a wider class of joint-goal reachable situations. An approach is o ered for con ict resolution, and it is shown that even in a con ict situation, partial cooperative steps can be taken by interacting agents (that is, agents in fundamental con ict might still agree to cooperate up to a certain point).A Uni ed Negotiation Protocol (UNP) is developed that can be used in all types of encounters. It is shown that in certain borderline cooperative situations, a partial cooperative agreement (i.e., one that does not achieve all agents' goals) might be preferred by all agents, even though there exists a rational agreement that would achieve all their goals.Finally, we analyze cases where agents have incomplete information on the goals and worth of other agents. First we consider the case where agents' goals are private information, and we analyze what goal declaration strategies the agents might adopt to increase their utility. Then, we consider the situation where the agents' goals (and therefore standalone costs) are common knowledge, but the worth they attach to their goals is private information. We introduce two mechanisms, one \strict," the other \tolerant," and analyze their a ects on the stability and e ciency of negotiation outcomes.De nition 1 A State Oriented Domain (SOD) is a tuple < S; A; J; c > where:1. S is the set of all possible world states; 2. A = fA 1 ; A 2 ; : : :A n g is an ordered list of agents; 3. J is the set of all possible joint (i.e., n-agent) plans. A joint plan J 2 J moves the world from one state in S to another. The actions taken by agent k are called k's role in J, and will be written as J k . We can also write J as (J 1 ; J 2 ; : : :; J n ); 4. c is a function c: J ! (IR + ) n : For each joint plan J in J , c(J) is a vector of n positive real numbers, the cost of each agent's role in the joint plan. c(J) i is the i-th element of the cost vector, i.e., it is the cost of the i-th role in J. If an agent plays no role in J, his cost is 0.