{"openapi":"3.1.0","info":{"title":"Networkline API","version":"0.1.0","description":"A fully local professional-networking conversation toolkit: context-specific icebreakers, conversation deepeners, group-entry lines, solo-attendee tips, contact-exchange phrasing, common mistakes, and a follow-up message generator.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://networkline.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/networkline/docs"},"termsOfService":"https://connectorbay.com/networkline/terms"},"servers":[{"url":"https://networkline.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/networkline/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/icebreaker_by_context":{"post":{"operationId":"icebreaker_by_context","summary":"Original opening lines suited to a specific networking context, optionally filled in with your topic.","description":"Original opening lines suited to a specific networking context, optionally filled in with your topic.\n    Use for \"give me a conference icebreaker\", \"how do I start a conversation at an alumni event\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"context":{"description":"conference | alumni_event | industry_meetup | career_fair | coworking_or_startup_event | professional_association","title":"Context","type":"string"},"topic":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A specific topic/field to weave into the openers, e.g. 'machine learning infrastructure'.","title":"Topic"},"count":{"default":3,"description":"How many openers to return.","maximum":5,"minimum":1,"title":"Count","type":"integer"}},"required":["context"],"title":"icebreaker_by_contextArguments","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_list":{"post":{"operationId":"context_list","summary":"All six supported networking contexts with their labels. Use for \"what event types do you cover\".","description":"All six supported networking contexts with their labels. Use for \"what event types do you cover\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"context_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_icebreaker":{"post":{"operationId":"random_icebreaker","summary":"One random opening line for a context — useful when you just want a single line rather than a list.","description":"One random opening line for a context — useful when you just want a single line rather than a list.\n    Use for \"just give me one icebreaker for a meetup\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"context":{"description":"conference | alumni_event | industry_meetup | career_fair | coworking_or_startup_event | professional_association","title":"Context","type":"string"},"topic":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A specific topic/field to weave in.","title":"Topic"}},"required":["context"],"title":"random_icebreakerArguments","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_deepener":{"post":{"operationId":"conversation_deepener","summary":"Follow-up lines for keeping a conversation going, redirecting it toward the other person, finding a","description":"Follow-up lines for keeping a conversation going, redirecting it toward the other person, finding a\n    shared connection, or winding it down gracefully. Use for \"how do I keep this conversation going\", \"how do\n    I politely end this conversation and move on\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"strategy":{"description":"deepen | pivot_to_them | find_common_ground | exit_gracefully","title":"Strategy","type":"string"}},"required":["strategy"],"title":"conversation_deepenerArguments","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/group_conversation_entry_lines":{"post":{"operationId":"group_conversation_entry_lines","summary":"Lines for joining a group conversation already in progress, each with guidance on when to use it. Use","description":"Lines for joining a group conversation already in progress, each with guidance on when to use it. Use\n    for \"how do I join a group that's already talking\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"topic":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The topic the group appears to be discussing, if known.","title":"Topic"}},"title":"group_conversation_entry_linesArguments","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/solo_attendee_tips":{"post":{"operationId":"solo_attendee_tips","summary":"Practical tips for attending a networking event alone — when to arrive, who to approach, how to read an","description":"Practical tips for attending a networking event alone — when to arrive, who to approach, how to read an\n    open versus closed group. Use for \"how do I network at an event where I don't know anyone\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"solo_attendee_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/contact_exchange_line":{"post":{"operationId":"contact_exchange_line","summary":"Phrasing for asking to exchange contact info, at three levels of directness. Use for \"how do I ask for","description":"Phrasing for asking to exchange contact info, at three levels of directness. Use for \"how do I ask for\n    someone's contact info without it being awkward\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"directness":{"default":"low_key","description":"low_key | specific_reason | direct_ask","title":"Directness","type":"string"},"topic":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"What the specific_reason phrasing should reference.","title":"Topic"}},"title":"contact_exchange_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/common_mistakes":{"post":{"operationId":"common_mistakes","summary":"Frequent professional-networking conversation mistakes with fixes. Use for \"what are common networking","description":"Frequent professional-networking conversation mistakes with fixes. Use for \"what are common networking\n    mistakes\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"common_mistakesArguments","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_message":{"post":{"operationId":"follow_up_message","summary":"A post-event follow-up message in one of four styles, filled in with the event and topic discussed. Use","description":"A post-event follow-up message in one of four styles, filled in with the event and topic discussed. Use\n    for \"write a follow-up message after meeting someone at a conference\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"style":{"description":"generic | with_ask | with_resource | reconnect_after_a_while","title":"Style","type":"string"},"event":{"description":"The event name where you met.","minLength":1,"title":"Event","type":"string"},"topic":{"description":"What you talked about.","minLength":1,"title":"Topic","type":"string"}},"required":["style","event","topic"],"title":"follow_up_messageArguments","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}}}}