{"openapi":"3.1.0","info":{"title":"Small Talk API","version":"0.1.0","description":"A fully local, original small-talk topic generator: conversation topics by setting, follow-up questions, polite exit lines, dos and don'ts, mixed topic packs, weather-opener alternatives, and compliment starters.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://smalltalk.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/smalltalk/docs"},"termsOfService":"https://connectorbay.com/smalltalk/terms"},"servers":[{"url":"https://smalltalk.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/smalltalk/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/topics_by_setting":{"post":{"operationId":"topics_by_setting","summary":"Small-talk topics/questions for one setting. Use for \"small talk topics for a work event\", \"what do I say","description":"Small-talk topics/questions for one setting. Use for \"small talk topics for a work event\", \"what do I say\n    while waiting at the doctor's office\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"setting":{"description":"work_event, party, waiting_room, elevator, networking_event, gym, queue, or public_transport.","minLength":1,"title":"Setting","type":"string"},"count":{"default":5,"maximum":10,"minimum":1,"title":"Count","type":"integer"}},"required":["setting"],"title":"topics_by_settingArguments","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_topic":{"post":{"operationId":"random_topic","summary":"One random small-talk topic, optionally narrowed to a setting. Use for \"give me a random small talk topic\".","description":"One random small-talk topic, optionally narrowed to a setting. Use for \"give me a random small talk topic\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"setting":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optionally narrow to one setting.","title":"Setting"}},"title":"random_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/setting_list":{"post":{"operationId":"setting_list","summary":"All eight settings this reference covers, with a one-line note and count each. Use for \"what settings do","description":"All eight settings this reference covers, with a one-line note and count each. Use for \"what settings do\n    you have small talk topics for\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"setting_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/topic_search":{"post":{"operationId":"topic_search","summary":"Keyword search across every topic's text and setting. Use for \"small talk about weekend plans\".","description":"Keyword search across every topic's text and setting. Use for \"small talk about weekend plans\".","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":"topic_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/follow_up_questions":{"post":{"operationId":"follow_up_questions","summary":"Follow-up questions to keep a conversation going once a topic comes up. Use for \"how do I keep the","description":"Follow-up questions to keep a conversation going once a topic comes up. Use for \"how do I keep the\n    conversation going about their job\", \"follow-up questions about someone's trip\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"topic":{"description":"A topic word, e.g. work, hobby, travel, or food.","minLength":1,"title":"Topic","type":"string"},"count":{"default":4,"maximum":4,"minimum":1,"title":"Count","type":"integer"}},"required":["topic"],"title":"follow_up_questionsArguments","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/exit_line":{"post":{"operationId":"exit_line","summary":"Polite ways to end a small-talk conversation, optionally tailored to a setting. Use for \"how do I end this","description":"Polite ways to end a small-talk conversation, optionally tailored to a setting. Use for \"how do I end this\n    conversation politely\", \"exit line for a networking event\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"setting":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optionally tailor to one setting.","title":"Setting"},"count":{"default":2,"maximum":2,"minimum":1,"title":"Count","type":"integer"}},"title":"exit_lineArguments","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/small_talk_dos_and_donts":{"post":{"operationId":"small_talk_dos_and_donts","summary":"General small-talk etiquette: open-ended questions, matching energy, reading disinterest, and topics","description":"General small-talk etiquette: open-ended questions, matching energy, reading disinterest, and topics\n    commonly advised against with someone you've just met. Use for \"small talk dos and don'ts\", \"topics to avoid\n    with strangers\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"small_talk_dos_and_dontsArguments","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/conversation_topic_pack":{"post":{"operationId":"conversation_topic_pack","summary":"A mixed pack of topics plus a fitting exit line, all for one setting. Use for \"give me small talk topics and","description":"A mixed pack of topics plus a fitting exit line, all for one setting. Use for \"give me small talk topics and\n    an exit line for a networking event\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"setting":{"description":"work_event, party, waiting_room, elevator, networking_event, gym, queue, or public_transport.","minLength":1,"title":"Setting","type":"string"},"count":{"default":5,"maximum":8,"minimum":1,"title":"Count","type":"integer"}},"required":["setting"],"title":"conversation_topic_packArguments","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/weather_alternatives":{"post":{"operationId":"weather_alternatives","summary":"Playful alternatives to the classic 'nice weather we're having' opener. Use for \"alternatives to talking","description":"Playful alternatives to the classic 'nice weather we're having' opener. Use for \"alternatives to talking\n    about the weather\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"count":{"default":5,"maximum":8,"minimum":1,"title":"Count","type":"integer"}},"title":"weather_alternativesArguments","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/compliment_starters":{"post":{"operationId":"compliment_starters","summary":"Safe, generic compliment-based conversation openers. Use for \"compliment ideas to start a conversation\".","description":"Safe, generic compliment-based conversation openers. Use for \"compliment ideas to start a conversation\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"count":{"default":4,"maximum":5,"minimum":1,"title":"Count","type":"integer"}},"title":"compliment_startersArguments","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}}}}