{"openapi":"3.1.0","info":{"title":"Dealtactics API","version":"0.1.0","description":"A fully local, hand-curated negotiation frameworks and tactics reference: BATNA/WATNA/ZOPA, distributive/integrative/principled negotiation, pressure and psychological tactics with counters, Thomas-Kilmann conflict styles, a BATNA worksheet, a plain-language tactic recognizer, and a glossary.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://dealtactics.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/dealtactics/docs"},"termsOfService":"https://connectorbay.com/dealtactics/terms"},"servers":[{"url":"https://dealtactics.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/dealtactics/docs"},"security":[{},{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/framework_info":{"post":{"operationId":"framework_info","summary":"Explains a preparation framework (BATNA, WATNA, ZOPA/reservation price) or strategic approach (distributive,","description":"Explains a preparation framework (BATNA, WATNA, ZOPA/reservation price) or strategic approach (distributive,\n    integrative, principled negotiation) — what it is, how to use it, when it applies, and an example. Use for\n    \"what is BATNA\", \"explain ZOPA\", \"what's principled negotiation\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"A framework or strategy name.","examples":["BATNA","ZOPA","principled negotiation","integrative bargaining"],"minLength":1,"title":"Name","type":"string"}},"required":["name"],"title":"framework_infoArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/tactic_info":{"post":{"operationId":"tactic_info","summary":"Explains one pressure or psychological negotiation tactic — what it looks like, how it's used, and the","description":"Explains one pressure or psychological negotiation tactic — what it looks like, how it's used, and the\n    recommended counter when it's used against you. Use for \"how do I counter anchoring\", \"what is nibbling in\n    negotiation\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"A tactic name.","examples":["anchoring","silence","good cop bad cop","nibbling"],"minLength":1,"title":"Name","type":"string"}},"required":["name"],"title":"tactic_infoArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/negotiation_style_guide":{"post":{"operationId":"negotiation_style_guide","summary":"The five Thomas-Kilmann conflict-handling styles and when each fits, based on concern for your own","description":"The five Thomas-Kilmann conflict-handling styles and when each fits, based on concern for your own\n    outcome vs. the relationship. Use for \"what negotiation style should I use here\", \"when should I just\n    compromise vs. push harder\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"style":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"competing | collaborating | compromising | avoiding | accommodating; omit to list all five.","title":"Style"}},"title":"negotiation_style_guideArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/tactics_by_category":{"post":{"operationId":"tactics_by_category","summary":"Every framework, strategy, or tactic in one category. Use category_list to see valid category names. Use","description":"Every framework, strategy, or tactic in one category. Use category_list to see valid category names. Use\n    for \"list all pressure tactics\", \"what are the strategic approaches\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"category":{"description":"A category name.","examples":["Pressure & Psychological Tactics","Preparation Frameworks","Conflict Styles"],"title":"Category","type":"string"}},"required":["category"],"title":"tactics_by_categoryArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/category_list":{"post":{"operationId":"category_list","summary":"Every category with how many entries it has. Use for \"what categories of negotiation tactics do you","description":"Every category with how many entries it has. Use for \"what categories of negotiation tactics do you\n    cover\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"category_listArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/tactic_search":{"post":{"operationId":"tactic_search","summary":"Keyword search across every framework, strategy and tactic's name, aliases, category, summary and tagged","description":"Keyword search across every framework, strategy and tactic's name, aliases, category, summary and tagged\n    signs. Use for \"negotiation tactics about deadlines\", \"anything about splitting the difference\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"description":"Keyword to search for.","minLength":1,"title":"Query","type":"string"}},"required":["query"],"title":"tactic_searchArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/recognize_tactic":{"post":{"operationId":"recognize_tactic","summary":"Matches a plain-language description of what the other side is doing to known tactics, each with its","description":"Matches a plain-language description of what the other side is doing to known tactics, each with its\n    counter. Use for \"what tactic is this person using on me\", \"they made an extreme offer then a smaller one\n    right after, what's going on\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"description":{"description":"What the other side is doing, in plain language.","examples":["they keep going silent after I make an offer","they said this is their final offer and won't budge"],"minLength":1,"title":"Description","type":"string"}},"required":["description"],"title":"recognize_tacticArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/batna_worksheet":{"post":{"operationId":"batna_worksheet","summary":"Ranks your alternatives by estimated value to identify your BATNA (the best one) and a suggested","description":"Ranks your alternatives by estimated value to identify your BATNA (the best one) and a suggested\n    reservation price. Use for \"help me figure out my BATNA\", \"which of these alternatives is actually my best\n    one\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"alternatives":{"description":"Each as {option, estimated_value} — estimated_value should be comparable across options (e.g. total comp, or a 1-10 score).","examples":[[{"estimated_value":100,"option":"stay in current job"},{"estimated_value":115,"option":"competing offer"}]],"items":{"additionalProperties":true,"type":"object"},"minItems":1,"title":"Alternatives","type":"array"},"reservation_price":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Your own stated floor, if you have one, to compare against the computed BATNA value.","title":"Reservation Price"}},"required":["alternatives"],"title":"batna_worksheetArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/negotiation_prep_checklist":{"post":{"operationId":"negotiation_prep_checklist","summary":"A step-by-step checklist for preparing for a negotiation: interests vs. positions, BATNA, reservation and","description":"A step-by-step checklist for preparing for a negotiation: interests vs. positions, BATNA, reservation and\n    aspiration price, researching the other side, your opening move, objective criteria, multi-issue framing, and\n    anticipating pressure tactics. Use for \"how should I prepare for this negotiation\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"negotiation_prep_checklistArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/glossary":{"post":{"operationId":"glossary","summary":"Definitions of common negotiation terms — BATNA, WATNA, ZOPA, reservation price, aspiration price, anchor,","description":"Definitions of common negotiation terms — BATNA, WATNA, ZOPA, reservation price, aspiration price, anchor,\n    concession, leverage, log-rolling, distributive/integrative bargaining, principled negotiation. Use for\n    \"what does ZOPA mean\", \"what's log-rolling\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"term":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A specific term to look up; omit to list all.","title":"Term"}},"title":"glossaryArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}