{"openapi":"3.1.0","info":{"title":"Literacyadult API","version":"0.1.0","description":"A fully local adult-literacy practice-passage generator: hand-written passages on adult-appropriate everyday-life, workplace, and civic topics across three reading levels, a Flesch-Kincaid-style level checker, and comprehension questions per passage.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://literacyadult.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/literacyadult/docs"},"termsOfService":"https://connectorbay.com/literacyadult/terms"},"servers":[{"url":"https://literacyadult.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/literacyadult/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/list_levels":{"post":{"operationId":"list_levels","summary":"The three reading bands (beginning, intermediate, advanced) with their approximate grade equivalent, and","description":"The three reading bands (beginning, intermediate, advanced) with their approximate grade equivalent, and\n    the three topic areas. Use for \"what reading levels do you cover\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_levelsArguments","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/list_passages":{"post":{"operationId":"list_passages","summary":"Browses the bundled passage bank by level and/or topic, without returning full passage text. Use for","description":"Browses the bundled passage bank by level and/or topic, without returning full passage text. Use for\n    \"show me all the intermediate workplace passages\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"level":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"beginning | intermediate | advanced; omit for all levels.","title":"Level"},"topic":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"workplace | civic | everyday_life; omit for all topics.","title":"Topic"}},"title":"list_passagesArguments","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/get_passage":{"post":{"operationId":"get_passage","summary":"One full practice passage — by id, or a random one matching a level/topic filter — plus a live-computed","description":"One full practice passage — by id, or a random one matching a level/topic filter — plus a live-computed\n    reading-level check confirming it actually measures at its claimed level. Use for \"give me a\n    beginning-level reading passage about voting\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"passage_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A specific passage id from list_passages.","title":"Passage Id"},"level":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"beginning | intermediate | advanced — picks a random passage at this level if passage_id is omitted.","title":"Level"},"topic":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"workplace | civic | everyday_life","title":"Topic"}},"title":"get_passageArguments","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/verify_reading_level":{"post":{"operationId":"verify_reading_level","summary":"Flesch-Kincaid grade level and reading ease for any text — the same check used to verify this","description":"Flesch-Kincaid grade level and reading ease for any text — the same check used to verify this\n    connector's own bundled passages actually match their claimed level. Use for \"check what reading level\n    this paragraph is at\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"text":{"description":"Any text to score.","minLength":1,"title":"Text","type":"string"}},"required":["text"],"title":"verify_reading_levelArguments","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/comprehension_questions":{"post":{"operationId":"comprehension_questions","summary":"The hand-authored true/false, fill-in-the-blank, and short-answer comprehension questions for one","description":"The hand-authored true/false, fill-in-the-blank, and short-answer comprehension questions for one\n    passage. Use for \"quiz me on this passage\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"passage_id":{"description":"A passage id from list_passages or get_passage.","title":"Passage Id","type":"string"}},"required":["passage_id"],"title":"comprehension_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}}}}