{"openapi":"3.1.0","info":{"title":"Scanwise API","version":"0.1.0","description":"A fully local document-scanning and OCR quality reference: best-practice tips by category, an OCR failure-mode lookup, tips by document type, a pre-scan checklist, a resolution-by-use-case recommendation, and an OCR/scanning glossary. No actual image processing occurs — reference guidance only.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://scanwise.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/scanwise/docs"},"termsOfService":"https://connectorbay.com/scanwise/terms"},"servers":[{"url":"https://scanwise.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/scanwise/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/best_practices":{"post":{"operationId":"best_practices","summary":"Best-practice tips for getting a clean scan/photo suited to OCR, by category, or all categories. Use","description":"Best-practice tips for getting a clean scan/photo suited to OCR, by category, or all categories. Use\n    for \"how do I get a clean scan for OCR\", \"lighting tips for scanning documents\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"category":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"lighting | angle | resolution | contrast | surface_and_handling | file_format_and_settings; omit for all categories.","title":"Category"}},"title":"best_practicesArguments","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 best-practice categories this reference covers. Use for \"what scanning topics do you cover\".","description":"All six best-practice categories this reference covers. Use for \"what scanning 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/failure_mode_lookup":{"post":{"operationId":"failure_mode_lookup","summary":"Given a described OCR symptom, returns the likely cause and fix. Use for \"why is my OCR output garbled","description":"Given a described OCR symptom, returns the likely cause and fix. Use for \"why is my OCR output garbled\n    near the spine of this book\", \"why are numbers on my receipt scan always wrong\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"symptom_keyword":{"description":"A described OCR problem, e.g. 'garbled text', 'missing lines', 'wrong reading order'.","minLength":1,"title":"Symptom Keyword","type":"string"}},"required":["symptom_keyword"],"title":"failure_mode_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/failure_modes_list":{"post":{"operationId":"failure_modes_list","summary":"All known OCR failure modes in this reference with their causes and fixes. Use for \"what are common OCR","description":"All known OCR failure modes in this reference with their causes and fixes. Use for \"what are common OCR\n    problems\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"failure_modes_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/tips_by_document_type":{"post":{"operationId":"tips_by_document_type","summary":"Specific scanning tips for one of six document types. Use for \"how do I scan a receipt well\", \"tips for","description":"Specific scanning tips for one of six document types. Use for \"how do I scan a receipt well\", \"tips for\n    photographing a whiteboard for notes\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"doc_type":{"description":"receipt | book_or_bound_document | id_or_card | handwritten_note | whiteboard | multi_page_form","title":"Doc Type","type":"string"}},"required":["doc_type"],"title":"tips_by_document_typeArguments","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/document_type_list":{"post":{"operationId":"document_type_list","summary":"All six document types this reference has specific tips for. Use for \"what document types do you cover\".","description":"All six document types this reference has specific tips for. Use for \"what document types do you cover\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"document_type_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/pre_scan_checklist":{"post":{"operationId":"pre_scan_checklist","summary":"A step-by-step checklist to run through right before scanning any document. Use for \"give me a","description":"A step-by-step checklist to run through right before scanning any document. Use for \"give me a\n    checklist before I scan this\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"pre_scan_checklistArguments","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/resolution_recommendation":{"post":{"operationId":"resolution_recommendation","summary":"A recommended scan resolution (DPI) for a stated use case, with the reasoning. Use for \"what DPI should","description":"A recommended scan resolution (DPI) for a stated use case, with the reasoning. Use for \"what DPI should\n    I scan a receipt at\", \"what resolution do I need for OCR on small print\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"use_case":{"description":"ocr_normal_text | ocr_small_text | archival_preservation | quick_reference_only | photo_or_graphic","title":"Use Case","type":"string"}},"required":["use_case"],"title":"resolution_recommendationArguments","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/glossary":{"post":{"operationId":"glossary","summary":"Defines OCR/scanning terms — DPI, deskew, dewarp, binarization, bit depth, moiré, layout analysis,","description":"Defines OCR/scanning terms — DPI, deskew, dewarp, binarization, bit depth, moiré, layout analysis,\n    searchable PDF, OCR vs ICR. Use for \"what does deskew mean\", \"what's the difference between OCR and ICR\".","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":"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}}}}