This paper presents an algorithm called Nstar (N*) that performs optimizing agent-based negotiation. N* borrows concepts from branch-andbound and A* optimal search algorithms. The N* negotiation algorithm can be used for a general class of negotiation problems that requires consensus among two or more collaborating agents. N* schedules events through a negotiation protocol that mimics a process of proposing and counter proposing. It makes use of an evaluation function that represents an underestimation of the “global” preference for a particular proposal. This preference is computed based on a user preference model. An optimal solution is found when there is a compromise and the evaluation function is maximized.