{"openapi":"3.1.0","info":{"title":"Dating Bio API","version":"0.1.0","description":"A fully local dating-profile bio-writing reference: structure guidance, a pitfalls guide, a cliche scanner, tone styles, prompt-answer tips, photo-selection tips, an authenticity-guardrail scanner, length/readability guidance and a glossary. General self-presentation tips only, never manipulation coaching.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://datingbio.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/datingbio/docs"},"termsOfService":"https://connectorbay.com/datingbio/terms"},"servers":[{"url":"https://datingbio.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/datingbio/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/bio_structure_guide":{"post":{"operationId":"bio_structure_guide","summary":"A four-part structure scaffold for a dating bio — opening hook, two or three specific details, a touch","description":"A four-part structure scaffold for a dating bio — opening hook, two or three specific details, a touch\n    of warmth or humor, and a conversation-starter close — each with guidance. Use for \"what's a good structure\n    for a dating bio\", \"how do I start my profile bio\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"bio_structure_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/bio_pitfalls_guide":{"post":{"operationId":"bio_pitfalls_guide","summary":"Common ways dating bios fall flat — the wall of text, only-negatives framing, listing traits instead of","description":"Common ways dating bios fall flat — the wall of text, only-negatives framing, listing traits instead of\n    showing them, the humble-brag résumé, total vagueness, no conversation starter, overused lines — each with\n    why it fails. Use for \"what should I avoid in my dating bio\", \"why isn't my bio getting responses\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"bio_pitfalls_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/cliche_scan":{"post":{"operationId":"cliche_scan","summary":"Scans bio text you provide against a curated list of overused dating-bio phrases (\"partner in crime\", \"no","description":"Scans bio text you provide against a curated list of overused dating-bio phrases (\"partner in crime\", \"no\n    drama\", \"down to earth\", ...) and suggests a more specific reframe for each match found. Use for \"check my\n    bio for cliches\", \"does this sound generic\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"bio_text":{"description":"Your draft bio text to scan for common overused phrases.","minLength":1,"title":"Bio Text","type":"string"}},"required":["bio_text"],"title":"cliche_scanArguments","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/tone_style_guide":{"post":{"operationId":"tone_style_guide","summary":"Four tone approaches for a dating bio — playful, sincere, minimalist, adventurous — each with a","description":"Four tone approaches for a dating bio — playful, sincere, minimalist, adventurous — each with a\n    description and a technique note (not a finished example bio). Use for \"give me a playful tone for my bio\",\n    \"what does a minimalist dating bio look like\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"tone":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A tone: playful, sincere, minimalist, or adventurous. Omit for all four.","title":"Tone"}},"title":"tone_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/prompt_answer_tips":{"post":{"operationId":"prompt_answer_tips","summary":"General tips for answering short platform \"prompt\" style bio questions — specificity, memorability,","description":"General tips for answering short platform \"prompt\" style bio questions — specificity, memorability,\n    variety across answers — not tied to any named app. Use for \"how do I answer dating app prompts well\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"prompt_answer_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/photo_selection_tips":{"post":{"operationId":"photo_selection_tips","summary":"General, non-manipulative tips for choosing profile photos — recency, a clear unfiltered face photo, a","description":"General, non-manipulative tips for choosing profile photos — recency, a clear unfiltered face photo, a\n    mix of shot types, obvious identification in group photos, a genuine smile. Use for \"what photos should I\n    use for my dating profile\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"photo_selection_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/authenticity_check":{"post":{"operationId":"authenticity_check","summary":"Scans bio text you provide for entitled/negging language, pressure or urgency tactics, over-the-top","description":"Scans bio text you provide for entitled/negging language, pressure or urgency tactics, over-the-top\n    first-contact intensity, or signs of dishonest framing — a second look to help you avoid sounding\n    manipulative or misleading in your OWN writing, not a tool for evaluating anyone else. Use for \"does my bio\n    sound entitled or pushy\", \"check my bio isn't misleading\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"bio_text":{"description":"Your draft bio text to scan for entitled, pressuring, or dishonest-sounding language.","minLength":1,"title":"Bio Text","type":"string"}},"required":["bio_text"],"title":"authenticity_checkArguments","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/length_readability_guide":{"post":{"operationId":"length_readability_guide","summary":"General length and readability guidance for a bio meant to be read on a phone screen — roughly how long","description":"General length and readability guidance for a bio meant to be read on a phone screen — roughly how long\n    is enough, and tips for keeping it easy to skim without losing personality. Use for \"how long should my\n    dating bio be\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"length_readability_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 dating-app terms for context — prompt, ghosting, catfishing, love bombing, breadcrumbing,","description":"Definitions of dating-app terms for context — prompt, ghosting, catfishing, love bombing, breadcrumbing,\n    soft launch. Definitions only, not instructions. Use for \"what does ghosting mean\", \"what's breadcrumbing\".","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}}}}