{"openapi":"3.1.0","info":{"title":"Blended Family API","version":"0.1.0","description":"A fully local, original blended/step-family etiquette and communication reference — never legal, custody, or therapy advice.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://blenderfam.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/blenderfam/docs"},"termsOfService":"https://connectorbay.com/blenderfam/terms"},"servers":[{"url":"https://blenderfam.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/blenderfam/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/topic_list":{"post":{"operationId":"topic_list","summary":"All eight blended-family topics this reference covers. Use for \"what topics do you cover for blended","description":"All eight blended-family topics this reference covers. Use for \"what topics do you cover for blended\n    families\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"topic_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/etiquette_by_topic":{"post":{"operationId":"etiquette_by_topic","summary":"A summary and tips for one blended-family topic. Use for \"how do we handle holidays across two","description":"A summary and tips for one blended-family topic. Use for \"how do we handle holidays across two\n    households\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"topic":{"description":"discipline, holidays, introductions, terminology, finances, loyalty_conflicts, coparenting_communication, or family_traditions.","minLength":1,"title":"Topic","type":"string"}},"required":["topic"],"title":"etiquette_by_topicArguments","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/communication_scripts":{"post":{"operationId":"communication_scripts","summary":"Phrase-starters for common blended-family conversation moments. Use for \"script for when a coparent","description":"Phrase-starters for common blended-family conversation moments. Use for \"script for when a coparent\n    disagrees on rules\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"situation":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A specific situation, e.g. 'holiday scheduling conflict'; omit for all.","title":"Situation"}},"title":"communication_scriptsArguments","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/age_appropriate_tips":{"post":{"operationId":"age_appropriate_tips","summary":"Guidance scoped to one age band. Use for \"age-appropriate tips for introducing a new partner to a","description":"Guidance scoped to one age band. Use for \"age-appropriate tips for introducing a new partner to a\n    teenager\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"age_band":{"description":"young_child, school_age, or teen.","minLength":1,"title":"Age Band","type":"string"}},"required":["age_band"],"title":"age_appropriate_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/age_band_list":{"post":{"operationId":"age_band_list","summary":"The three age bands this reference covers. Use for \"what age bands do you have tips for\".","description":"The three age bands this reference covers. Use for \"what age bands do you have tips for\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"age_band_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/blended_family_glossary":{"post":{"operationId":"blended_family_glossary","summary":"Definitions of blended-family terms. Use for \"what's a loyalty conflict\".","description":"Definitions of blended-family terms. Use for \"what's a loyalty conflict\".","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":"blended_family_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}}}}