{"openapi":"3.1.0","info":{"title":"Long Marriage API","version":"0.1.0","description":"A fully local reference for maintaining a long-term relationship or marriage: communication habits, appreciation practices, conflict navigation, life-transition notes, routine/novelty balance, financial-communication tips, milestone ideas, when-to-consider-counseling signals and a glossary.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://longmarriage.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/longmarriage/docs"},"termsOfService":"https://connectorbay.com/longmarriage/terms"},"servers":[{"url":"https://longmarriage.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/longmarriage/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/communication_habits_guide":{"post":{"operationId":"communication_habits_guide","summary":"General communication habits for a long-term relationship — regular check-ins, active listening, \"I\"","description":"General communication habits for a long-term relationship — regular check-ins, active listening, \"I\"\n    statements, noticing repair attempts during conflict, and staying curious rather than assuming you already\n    know a longtime partner's mind. Use for \"how do we communicate better after years together\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"communication_habits_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/appreciation_practices_guide":{"post":{"operationId":"appreciation_practices_guide","summary":"Ways of regularly expressing appreciation in a long relationship — naming specifics, noticing the","description":"Ways of regularly expressing appreciation in a long relationship — naming specifics, noticing the\n    ordinary not just big gestures, saying it out loud, a recurring ritual, appreciating character as well as\n    actions. Use for \"how do we keep showing appreciation after so many years\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"appreciation_practices_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/conflict_navigation_guide":{"post":{"operationId":"conflict_navigation_guide","summary":"General, non-clinical tips for navigating disagreement in a long relationship — solvable vs perpetual","description":"General, non-clinical tips for navigating disagreement in a long relationship — solvable vs perpetual\n    problems, taking a break when flooded, starting conversations gently, complaining about behavior rather\n    than criticizing character, and watching for defensiveness or stonewalling. Use for \"how do we argue\n    better\", \"we keep having the same fight, what do we do\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"conflict_navigation_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/life_transition_guide":{"post":{"operationId":"life_transition_guide","summary":"Notes for navigating a shared life transition together — becoming empty nesters, retirement, caring for","description":"Notes for navigating a shared life transition together — becoming empty nesters, retirement, caring for\n    aging parents, a career change or job loss, a health change, or relocating. The health-change entry stays\n    scoped to the relationship side, not medical guidance. Use for \"how do we handle retirement together\",\n    \"tips for staying connected while caregiving for a parent\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"transition":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A transition to look up; omit to list all.","examples":["retirement","empty nesters","relocating"],"title":"Transition"}},"title":"life_transition_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/routine_and_novelty_guide":{"post":{"operationId":"routine_and_novelty_guide","summary":"Guidance on balancing reliable, low-effort routine with occasional novelty in a long relationship. Use","description":"Guidance on balancing reliable, low-effort routine with occasional novelty in a long relationship. Use\n    for \"we've fallen into a rut, what do we do\", \"how do we keep things fresh after years together\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"routine_and_novelty_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/financial_communication_tips":{"post":{"operationId":"financial_communication_tips","summary":"General communication norms for talking about money as a couple — not financial, budgeting, or tax","description":"General communication norms for talking about money as a couple — not financial, budgeting, or tax\n    advice, just how to have the conversation itself. Use for \"how do we talk about money without fighting\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"financial_communication_tipsArguments","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/milestone_ideas":{"post":{"operationId":"milestone_ideas","summary":"Ideas for marking an anniversary or relationship milestone — revisiting early memories, a letter to your","description":"Ideas for marking an anniversary or relationship milestone — revisiting early memories, a letter to your\n    future selves, a meaningful rather than expensive gesture, a shared new experience, reflecting on what's\n    changed. Use for \"ideas for our 20th anniversary\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"milestone_ideasArguments","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/when_to_consider_counseling_guide":{"post":{"operationId":"when_to_consider_counseling_guide","summary":"General, non-diagnostic signals that couples counseling might help — a repeating unresolved conflict,","description":"General, non-diagnostic signals that couples counseling might help — a repeating unresolved conflict,\n    contempt showing up in conflict, a life transition straining things more than expected — framed as ordinary\n    relationship maintenance, not a sign of failure. Use for \"should we think about couples counseling\", \"is it\n    normal to consider counseling even if things are mostly fine\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"when_to_consider_counseling_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/glossary":{"post":{"operationId":"glossary","summary":"Definitions of terms used elsewhere in this connector — repair attempt, perpetual problem, flooding,","description":"Definitions of terms used elsewhere in this connector — repair attempt, perpetual problem, flooding,\n    stonewalling, contempt, bid for connection. Use for \"what's a bid for connection\", \"what does flooding mean\n    in a conflict context\".","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}}}}