{"openapi":"3.1.0","info":{"title":"Friend Kit API","version":"0.1.0","description":"A fully local, hand-curated friendship/social-skills tips reference: practical, non-clinical tips for making and maintaining adult friendships across six categories, activity ideas, a first-move guide, a guide on why adult friendship is commonly reported as harder, a glossary, and self-check reflection prompts.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://friendkit.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/friendkit/docs"},"termsOfService":"https://connectorbay.com/friendkit/terms"},"servers":[{"url":"https://friendkit.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/friendkit/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/tips_by_category":{"post":{"operationId":"tips_by_category","summary":"Practical friendship tips for one category. Use for \"tips for making new friends\", \"how to keep a","description":"Practical friendship tips for one category. Use for \"tips for making new friends\", \"how to keep a\n    friendship going\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"category":{"description":"making_new_friends, maintaining_friendships, deepening_friendships, boundaries, moving_to_a_new_place, or letting_a_friendship_fade.","minLength":1,"title":"Category","type":"string"},"count":{"default":10,"maximum":20,"minimum":1,"title":"Count","type":"integer"}},"required":["category"],"title":"tips_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/tip_search":{"post":{"operationId":"tip_search","summary":"Keyword search across every tip's text and category. Use for \"tips about one-sided friendships\", \"tips","description":"Keyword search across every tip's text and category. Use for \"tips about one-sided friendships\", \"tips\n    about moving to a new city\".","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":"tip_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/category_list":{"post":{"operationId":"category_list","summary":"All six tip categories with a one-line note and count each. Use for \"what friendship topics do you cover\".","description":"All six tip categories with a one-line note and count each. Use for \"what friendship topics do 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/random_tip":{"post":{"operationId":"random_tip","summary":"One random friendship tip, optionally narrowed to a category. Use for \"give me a random friendship tip\".","description":"One random friendship tip, optionally narrowed to a category. Use for \"give me a random friendship tip\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"category":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optionally narrow to one category.","title":"Category"}},"title":"random_tipArguments","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/friendship_activity_ideas":{"post":{"operationId":"friendship_activity_ideas","summary":"Platonic hangout and activity ideas that support building or deepening a friendship — recurring, low-key","description":"Platonic hangout and activity ideas that support building or deepening a friendship — recurring, low-key\n    activities tend to work best. Use for \"activity ideas to do with a friend\", \"hangout ideas for new friends\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"count":{"default":6,"maximum":10,"minimum":1,"title":"Count","type":"integer"}},"title":"friendship_activity_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/making_first_move_guide":{"post":{"operationId":"making_first_move_guide","summary":"How to ask someone to hang out, handle a no gracefully, understand being the usual initiator, and keep a new","description":"How to ask someone to hang out, handle a no gracefully, understand being the usual initiator, and keep a new\n    hangout low-pressure. Use for \"how do I ask someone to hang out\", \"am I always the one who has to plan things\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"making_first_move_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/adult_friendship_challenges_guide":{"post":{"operationId":"adult_friendship_challenges_guide","summary":"A dedicated, normalizing guide on why making close friends as an adult is commonly reported as harder than","description":"A dedicated, normalizing guide on why making close friends as an adult is commonly reported as harder than\n    it was earlier in life, and what actually helps. Use for \"why is it so hard to make friends as an adult\", \"is it\n    normal to have fewer close friends now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"adult_friendship_challenges_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/friendship_glossary":{"post":{"operationId":"friendship_glossary","summary":"Defines commonly-used friendship terms — third place, reciprocity, social battery, friendship drift, and","description":"Defines commonly-used friendship terms — third place, reciprocity, social battery, friendship drift, and\n    more. Use for \"what's a third place\", \"what does social battery mean\".","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":"friendship_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/self_check_prompts":{"post":{"operationId":"self_check_prompts","summary":"Non-clinical, open-ended reflection prompts about a friendship's balance and quality. Use for \"is my","description":"Non-clinical, open-ended reflection prompts about a friendship's balance and quality. Use for \"is my\n    friendship one-sided\", \"questions to think about regarding a friendship\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"count":{"default":4,"maximum":6,"minimum":1,"title":"Count","type":"integer"}},"title":"self_check_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}}}}