{"openapi":"3.1.0","info":{"title":"Knots API","version":"0.1.0","description":"A fully local, hand-curated practical knot-tying reference: 40+ real knots across climbing, sailing/marine, camping/outdoor, fishing, decorative, general-purpose/household and first-aid/rescue use, with step-by-step instructions, strength ratings, typical uses, cautions, search, category browsing, use-case suggestions, a beginner shortlist and safety notes.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://knots.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/knots/docs"},"termsOfService":"https://connectorbay.com/knots/terms"},"servers":[{"url":"https://knots.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/knots/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/knot_info":{"post":{"operationId":"knot_info","summary":"Full detail for one knot: category, numbered step-by-step tying instructions written to be followed without","description":"Full detail for one knot: category, numbered step-by-step tying instructions written to be followed without\n    a picture, a qualitative strength/reliability rating, typical uses, and known weaknesses/cautions. Use for \"how\n    do I tie a bowline\", \"how strong is a clove hitch\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"A knot's name or alias.","examples":["bowline","sheet bend","prusik"],"minLength":1,"title":"Name","type":"string"}},"required":["name"],"title":"knot_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/knot_search":{"post":{"operationId":"knot_search","summary":"Keyword search across every knot's name, aliases, category, summary, typical uses and cautions. Use for","description":"Keyword search across every knot's name, aliases, category, summary, typical uses and cautions. Use for\n    \"knots for sailing\", \"any knot good for webbing\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"description":"Keyword to search for.","minLength":1,"title":"Query","type":"string"}},"required":["query"],"title":"knot_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/knots_by_category":{"post":{"operationId":"knots_by_category","summary":"Every knot in one category. Use category_list to see valid category names. Use for \"list all climbing","description":"Every knot in one category. Use category_list to see valid category names. Use for \"list all climbing\n    knots\", \"what fishing knots do you have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"category":{"description":"A category name.","examples":["Climbing","Sailing & Marine","Fishing"],"title":"Category","type":"string"}},"required":["category"],"title":"knots_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/find_knot_for_use":{"post":{"operationId":"find_knot_for_use","summary":"Suggests 2-4 suitable knots for a stated use case, keyword-matched against each knot's tagged typical uses.","description":"Suggests 2-4 suitable knots for a stated use case, keyword-matched against each knot's tagged typical uses.\n    Use for \"what knot should I use to join two different ropes\", \"best knot for a tarp ridgeline\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"use_case":{"description":"A job to accomplish, in plain language.","examples":["tying two ropes of different thickness together","securing a tarp","a loop that won't slip","quick-release for a boat"],"minLength":1,"title":"Use Case","type":"string"}},"required":["use_case"],"title":"find_knot_for_useArguments","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":"Every knot category with how many knots are in it. Use for \"what categories of knots do you cover\".","description":"Every knot category with how many knots are in it. Use for \"what categories of knots 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/knot_strength_comparison":{"post":{"operationId":"knot_strength_comparison","summary":"A side-by-side qualitative comparison of named knots' strength/reliability rating, how easy each is to","description":"A side-by-side qualitative comparison of named knots' strength/reliability rating, how easy each is to\n    untie after loading, and whether it's considered load-bearing. Use for \"bowline vs figure-eight, which is\n    stronger\", \"compare prusik and klemheist\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"names":{"description":"Two or more knot names to compare.","items":{"type":"string"},"minItems":2,"title":"Names","type":"array"}},"required":["names"],"title":"knot_strength_comparisonArguments","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/beginner_knots":{"post":{"operationId":"beginner_knots","summary":"A curated shortlist of the most essential, easiest knots for a beginner to learn first, ordered from most","description":"A curated shortlist of the most essential, easiest knots for a beginner to learn first, ordered from most\n    to least essential. Use for \"what knots should I learn first\", \"teach me the basics\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"count":{"default":5,"description":"How many knots to return.","maximum":10,"minimum":1,"title":"Count","type":"integer"}},"title":"beginner_knotsArguments","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/safety_notes":{"post":{"operationId":"safety_notes","summary":"For a knot relevant to climbing, rescue, or other load-bearing use, returns its clear safety disclaimer.","description":"For a knot relevant to climbing, rescue, or other load-bearing use, returns its clear safety disclaimer.\n    No knot in this reference is presented as certified or tested for life-safety use — always get proper training\n    and follow certified-course/manufacturer guidance before relying on any knot for life safety. Use for \"is the\n    bowline safe for climbing\", \"what are the risks with a prusik\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"A knot's name or alias.","minLength":1,"title":"Name","type":"string"}},"required":["name"],"title":"safety_notesArguments","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/knot_glossary":{"post":{"operationId":"knot_glossary","summary":"Definitions of common rope/knot terms — bight, bitter end, standing part, working end, hitch vs bend vs","description":"Definitions of common rope/knot terms — bight, bitter end, standing part, working end, hitch vs bend vs\n    knot, dress/set a knot, round turn, capsize, friction hitch, seizing, load-bearing. Use for \"what's a bight\",\n    \"what's the difference between a hitch and a bend\".","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":"knot_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}}}}