{"openapi":"3.1.0","info":{"title":"Flag Check API","version":"0.1.0","description":"A fully local, educational relationship green-flag/red-flag reference covering communication, respect, boundaries, trust, conflict resolution and support — framed as patterns relationship educators commonly point to, never as a diagnosis of any real relationship.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://flagcheck.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/flagcheck/docs"},"termsOfService":"https://connectorbay.com/flagcheck/terms"},"servers":[{"url":"https://flagcheck.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/flagcheck/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/flag_info":{"post":{"operationId":"flag_info","summary":"One named pattern's description and the general educational framing behind it — never a judgment about any","description":"One named pattern's description and the general educational framing behind it — never a judgment about any\n    real relationship. Use for \"what is stonewalling\", \"what's love bombing\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"A pattern's name.","examples":["active listening","stonewalling","love bombing"],"minLength":1,"title":"Name","type":"string"}},"required":["name"],"title":"flag_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/flag_search":{"post":{"operationId":"flag_search","summary":"Keyword search across every pattern's name, description, category and educational framing. Use for \"flags","description":"Keyword search across every pattern's name, description, category and educational framing. Use for \"flags\n    about trust\", \"patterns related to control\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"description":"Keyword to search for.","minLength":1,"title":"Query","type":"string"},"count":{"default":10,"maximum":20,"minimum":1,"title":"Count","type":"integer"}},"required":["query"],"title":"flag_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/flags_by_category":{"post":{"operationId":"flags_by_category","summary":"Every pattern in one category, optionally narrowed to green flags, red flags, or context-dependent ones. Use","description":"Every pattern in one category, optionally narrowed to green flags, red flags, or context-dependent ones. Use\n    for \"green flags about communication\", \"red flags about boundaries\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"category":{"description":"communication, respect, boundaries, trust, conflict_resolution, or support.","minLength":1,"title":"Category","type":"string"},"flag_type":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optionally narrow to green, red, or context_dependent.","title":"Flag Type"}},"required":["category"],"title":"flags_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":"All six categories this reference covers, with a one-line note and count each. Use for \"what categories do","description":"All six categories this reference covers, with a one-line note and count each. Use for \"what categories do\n    you 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/context_dependent_flags":{"post":{"operationId":"context_dependent_flags","summary":"Patterns that depend heavily on context rather than being simply good or bad — like very intense early","description":"Patterns that depend heavily on context rather than being simply good or bad — like very intense early\n    affection or how money gets discussed — with the educational nuance for each. Use for \"what are some 'it\n    depends' relationship signs\", \"yellow flags in relationships\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"count":{"default":20,"maximum":20,"minimum":1,"title":"Count","type":"integer"}},"title":"context_dependent_flagsArguments","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/self_reflection_prompts":{"post":{"operationId":"self_reflection_prompts","summary":"Open-ended, non-diagnostic journaling prompts for the reader's own reflection, optionally focused on one","description":"Open-ended, non-diagnostic journaling prompts for the reader's own reflection, optionally focused on one\n    category. These are questions to sit with, not a quiz with a score. Use for \"self-reflection questions about my\n    relationship\", \"questions to think about regarding trust in my relationship\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"topic":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optionally narrow to one category; omit for general prompts.","title":"Topic"},"count":{"default":3,"maximum":10,"minimum":1,"title":"Count","type":"integer"}},"title":"self_reflection_promptsArguments","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/relationship_glossary":{"post":{"operationId":"relationship_glossary","summary":"Educational definitions of commonly-discussed relationship terms — gaslighting, love bombing, stonewalling,","description":"Educational definitions of commonly-discussed relationship terms — gaslighting, love bombing, stonewalling,\n    attachment style, codependency, and more. Use for \"what does gaslighting mean\", \"what's an attachment style\".","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":"relationship_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}},"/v1/tools/compare_flags":{"post":{"operationId":"compare_flags","summary":"A side-by-side educational comparison of named patterns' category and flag type. Use for \"compare stonewalling","description":"A side-by-side educational comparison of named patterns' category and flag type. Use for \"compare stonewalling\n    and active listening\", \"how is love bombing different from genuine enthusiasm\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"names":{"description":"Two or more pattern names to compare.","items":{"type":"string"},"minItems":2,"title":"Names","type":"array"}},"required":["names"],"title":"compare_flagsArguments","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_seek_support":{"post":{"operationId":"when_to_seek_support","summary":"Resource-oriented guidance on when and how to bring in outside help — a trusted person, a licensed","description":"Resource-oriented guidance on when and how to bring in outside help — a trusted person, a licensed\n    counselor, or a helpline — rather than working through a serious concern with a reference tool alone. Use for\n    \"when should I talk to a counselor about my relationship\", \"I'm not sure if I should be worried\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"when_to_seek_supportArguments","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}}}}