{"openapi":"3.1.0","info":{"title":"Loom API","version":"0.1.0","description":"A fully local knitting/crochet reference and calculator toolkit: gauge-swatch math, yarn yardage estimates, needle/hook size conversion, stitch and row count calculators, yarn substitution, a stitch-abbreviation dictionary with search, ease guidance, and a craft glossary.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://loom.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/loom/docs"},"termsOfService":"https://connectorbay.com/loom/terms"},"servers":[{"url":"https://loom.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/loom/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/gauge_calculator":{"post":{"operationId":"gauge_calculator","summary":"Compares your actual gauge swatch measurement to a pattern's stated gauge: computes your real","description":"Compares your actual gauge swatch measurement to a pattern's stated gauge: computes your real\n    stitches/rows per 4in, the scale-factor difference from the pattern, whether to size needles up or down (and\n    roughly by how much), and — if you give the pattern's finished measurements — the size you'd actually get by\n    proceeding unchanged. Use for \"I'm getting 22 sts instead of the pattern's 20, what needle size should I try\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"stitches_per_swatch":{"description":"Total stitches counted across your swatch's measured width.","exclusiveMinimum":0,"title":"Stitches Per Swatch","type":"number"},"rows_per_swatch":{"description":"Total rows counted across your swatch's measured height.","exclusiveMinimum":0,"title":"Rows Per Swatch","type":"number"},"swatch_width_in":{"description":"The width, in inches, over which you counted stitches_per_swatch.","exclusiveMinimum":0,"title":"Swatch Width In","type":"number"},"swatch_height_in":{"description":"The height, in inches, over which you counted rows_per_swatch.","exclusiveMinimum":0,"title":"Swatch Height In","type":"number"},"pattern_stitches_per_4in":{"description":"The pattern's stated gauge: stitches per 4in/10cm.","exclusiveMinimum":0,"title":"Pattern Stitches Per 4In","type":"number"},"pattern_rows_per_4in":{"description":"The pattern's stated gauge: rows per 4in/10cm.","exclusiveMinimum":0,"title":"Pattern Rows Per 4In","type":"number"},"pattern_finished_width_in":{"anyOf":[{"exclusiveMinimum":0,"type":"number"},{"type":"null"}],"default":null,"description":"Optional: the pattern's stated finished width, to project your actual finished width.","title":"Pattern Finished Width In"},"pattern_finished_length_in":{"anyOf":[{"exclusiveMinimum":0,"type":"number"},{"type":"null"}],"default":null,"description":"Optional: the pattern's stated finished length, to project your actual finished length.","title":"Pattern Finished Length In"}},"required":["stitches_per_swatch","rows_per_swatch","swatch_width_in","swatch_height_in","pattern_stitches_per_4in","pattern_rows_per_4in"],"title":"gauge_calculatorArguments","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/yarn_yardage_estimator":{"post":{"operationId":"yarn_yardage_estimator","summary":"A rough total-yardage estimate (with a +/-15% range) for a project type and size, scaled for the chosen","description":"A rough total-yardage estimate (with a +/-15% range) for a project type and size, scaled for the chosen\n    yarn weight category. A hand-curated planning table, not a specific pattern's stated yardage. Use for \"how\n    much yarn do I need for an adult sweater in worsted weight\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_type":{"description":"Project type.","examples":["scarf","hat","sweater","baby_blanket","socks","shawl","mittens","amigurumi"],"title":"Project Type","type":"string"},"size":{"description":"Size within that project type.","examples":["adult","child","small","medium","large","standard"],"title":"Size","type":"string"},"yarn_weight_category":{"description":"Craft Yarn Council-style weight category.","examples":["lace","fingering","dk","worsted","bulky"],"title":"Yarn Weight Category","type":"string"}},"required":["project_type","size","yarn_weight_category"],"title":"yarn_yardage_estimatorArguments","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/needle_hook_size_convert":{"post":{"operationId":"needle_hook_size_convert","summary":"Converts a knitting-needle or crochet-hook size between US, UK/Canadian (old), and metric (mm) sizing","description":"Converts a knitting-needle or crochet-hook size between US, UK/Canadian (old), and metric (mm) sizing\n    systems, from a hand-curated standard conversion table. Use for \"what's a US 8 knitting needle in mm\",\n    \"what US crochet hook is 4mm\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"size":{"description":"The size to convert, in the from_system.","examples":["8","5.0","H-8","6"],"title":"Size","type":"string"},"from_system":{"description":"us | uk | mm","title":"From System","type":"string"},"to_system":{"description":"us | uk | mm","title":"To System","type":"string"},"tool_type":{"default":"needle","description":"needle | hook","title":"Tool Type","type":"string"}},"required":["size","from_system","to_system"],"title":"needle_hook_size_convertArguments","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/stitch_count_calculator":{"post":{"operationId":"stitch_count_calculator","summary":"How many stitches to cast on for a target width at a given stitch gauge. Use for \"how many stitches do I","description":"How many stitches to cast on for a target width at a given stitch gauge. Use for \"how many stitches do I\n    cast on for a 20 inch wide scarf at 18 stitches per 4 inches\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"target_width_in":{"description":"Desired finished width, in inches.","exclusiveMinimum":0,"title":"Target Width In","type":"number"},"gauge_stitches_per_4in":{"description":"Gauge: stitches per 4in/10cm.","exclusiveMinimum":0,"title":"Gauge Stitches Per 4In","type":"number"}},"required":["target_width_in","gauge_stitches_per_4in"],"title":"stitch_count_calculatorArguments","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/rows_to_length":{"post":{"operationId":"rows_to_length","summary":"How many rows are needed for a target length at a given row gauge. Use for \"how many rows for a 30 inch","description":"How many rows are needed for a target length at a given row gauge. Use for \"how many rows for a 30 inch\n    long scarf at 24 rows per 4 inches\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"target_length_in":{"description":"Desired finished length, in inches.","exclusiveMinimum":0,"title":"Target Length In","type":"number"},"gauge_rows_per_4in":{"description":"Gauge: rows per 4in/10cm.","exclusiveMinimum":0,"title":"Gauge Rows Per 4In","type":"number"}},"required":["target_length_in","gauge_rows_per_4in"],"title":"rows_to_lengthArguments","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/yarn_substitution":{"post":{"operationId":"yarn_substitution","summary":"How many skeins of a substitute yarn are needed to match a pattern's total required yardage, plus how","description":"How many skeins of a substitute yarn are needed to match a pattern's total required yardage, plus how\n    many skeins the pattern's original yarn works out to for comparison. Use for \"the pattern calls for 1000\n    yards in 220-yard skeins, how many 364-yard skeins of my yarn do I need\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"original_weight_category":{"description":"The original yarn's weight category, for the reminder note.","examples":["worsted","dk","fingering"],"title":"Original Weight Category","type":"string"},"original_yardage":{"description":"Total yardage the pattern calls for.","exclusiveMinimum":0,"title":"Original Yardage","type":"number"},"original_yardage_per_skein":{"description":"Yards per skein of the yarn the pattern specifies.","exclusiveMinimum":0,"title":"Original Yardage Per Skein","type":"number"},"substitute_yardage_per_skein":{"description":"Yards per skein of the substitute yarn you want to use.","exclusiveMinimum":0,"title":"Substitute Yardage Per Skein","type":"number"}},"required":["original_weight_category","original_yardage","original_yardage_per_skein","substitute_yardage_per_skein"],"title":"yarn_substitutionArguments","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/stitch_abbreviation_lookup":{"post":{"operationId":"stitch_abbreviation_lookup","summary":"Looks up a standard knitting or crochet stitch abbreviation: its full name and a plain-language","description":"Looks up a standard knitting or crochet stitch abbreviation: its full name and a plain-language\n    description of the technique. Use for \"what does k2tog mean\", \"what's ssk\", \"what is dc in crochet\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"abbreviation":{"description":"A stitch abbreviation.","examples":["k2tog","ssk","sc","dc","yo"],"title":"Abbreviation","type":"string"},"craft":{"default":"knitting","description":"knitting | crochet | both","title":"Craft","type":"string"}},"required":["abbreviation"],"title":"stitch_abbreviation_lookupArguments","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/abbreviation_search":{"post":{"operationId":"abbreviation_search","summary":"Searches stitch abbreviations by keyword across their abbreviation, full name and description. Use for","description":"Searches stitch abbreviations by keyword across their abbreviation, full name and description. Use for\n    \"what stitches involve a decrease\", \"find crochet post stitches\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"description":"A keyword to search abbreviations, names and descriptions for.","minLength":1,"title":"Query","type":"string"},"craft":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional filter: knitting | crochet | both. Omit to search everything.","title":"Craft"}},"required":["query"],"title":"abbreviation_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/ease_guide":{"post":{"operationId":"ease_guide","summary":"Standard ease guidance (how much roomier or snugger than the body a garment should be) for close-fitting,","description":"Standard ease guidance (how much roomier or snugger than the body a garment should be) for close-fitting,\n    classic, relaxed and oversized fits, by garment type. Use for \"what ease should a cardigan have\",\n    \"how much negative ease for socks\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"garment_type":{"description":"Garment type.","examples":["sweater","cardigan","hat","mittens","socks","vest","shawl"],"title":"Garment Type","type":"string"}},"required":["garment_type"],"title":"ease_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/craft_glossary":{"post":{"operationId":"craft_glossary","summary":"Definitions of common knitting/crochet terms (gauge, ease, blocking, frogging, WIP, magic loop, join in","description":"Definitions of common knitting/crochet terms (gauge, ease, blocking, frogging, WIP, magic loop, join in\n    the round, ...). Use for \"what does frogging mean\", \"what's a WIP\".","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":"craft_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}}}}