{"openapi":"3.1.0","info":{"title":"Brightwise API","version":"0.1.0","description":"Kids' learning tools: math practice, times tables, word problems, spelling, vocabulary, reading level, flashcards, trivia, grammar, geography — all local.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://brightwise.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/brightwise/docs"},"termsOfService":"https://connectorbay.com/brightwise/terms"},"servers":[{"url":"https://brightwise.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/brightwise/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/math_practice":{"post":{"operationId":"math_practice","summary":"Generate math practice problems with answers included for self-checking. Use for \"give me 10 addition","description":"Generate math practice problems with answers included for self-checking. Use for \"give me 10 addition\n    problems for a 2nd grader\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"operation":{"default":"add","description":"add | subtract | multiply | divide | mixed","title":"Operation","type":"string"},"difficulty":{"default":"easy","description":"easy | medium | hard","title":"Difficulty","type":"string"},"count":{"default":10,"maximum":25,"minimum":1,"title":"Count","type":"integer"}},"title":"math_practiceArguments","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/times_table_quiz":{"post":{"operationId":"times_table_quiz","summary":"A quiz on one times table (1-12), plus the full reference table. Use for \"quiz me on the 7 times","description":"A quiz on one times table (1-12), plus the full reference table. Use for \"quiz me on the 7 times\n    table\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"table":{"maximum":12,"minimum":1,"title":"Table","type":"integer"},"count":{"default":10,"maximum":12,"minimum":1,"title":"Count","type":"integer"}},"required":["table"],"title":"times_table_quizArguments","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/math_word_problem":{"post":{"operationId":"math_word_problem","summary":"A story-style math word problem for a grade level, with the numeric answer. Use for \"make up a word","description":"A story-style math word problem for a grade level, with the numeric answer. Use for \"make up a word\n    problem about sharing cookies\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"grade":{"default":3,"maximum":8,"minimum":1,"title":"Grade","type":"integer"},"operation":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"add | subtract | multiply | divide","title":"Operation"}},"title":"math_word_problemArguments","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/spelling_practice":{"post":{"operationId":"spelling_practice","summary":"A grade-level (1-6) spelling word list, or — if `word` and `attempt` are both given — a check of the","description":"A grade-level (1-6) spelling word list, or — if `word` and `attempt` are both given — a check of the\n    attempt against the word. Use for \"spelling words for 4th grade\" or \"is 'recieve' spelled right for\n    'receive'\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"grade":{"default":2,"maximum":6,"minimum":1,"title":"Grade","type":"integer"},"count":{"default":10,"maximum":15,"minimum":1,"title":"Count","type":"integer"},"word":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A word to check a spelling attempt against, instead of getting a practice list.","title":"Word"},"attempt":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The spelling attempt to check against `word`.","title":"Attempt"}},"title":"spelling_practiceArguments","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/vocabulary_builder":{"post":{"operationId":"vocabulary_builder","summary":"Grade-leveled vocabulary words with definition, synonyms, antonyms and an example sentence, or a direct","description":"Grade-leveled vocabulary words with definition, synonyms, antonyms and an example sentence, or a direct\n    lookup by word. Use for \"what does 'meticulous' mean\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"word":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A specific word to look up.","title":"Word"},"grade":{"anyOf":[{"maximum":8,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Filter to a grade level.","title":"Grade"},"count":{"default":1,"maximum":10,"minimum":1,"title":"Count","type":"integer"}},"title":"vocabulary_builderArguments","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/reading_level":{"post":{"operationId":"reading_level","summary":"Flesch-Kincaid grade level and Flesch reading ease for a piece of text. Use for \"what grade level is","description":"Flesch-Kincaid grade level and Flesch reading ease for a piece of text. Use for \"what grade level is\n    this paragraph written at\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"text":{"description":"The text to analyze.","title":"Text","type":"string"}},"required":["text"],"title":"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/flashcards":{"post":{"operationId":"flashcards","summary":"A general-knowledge flashcard deck (or the list of decks if none is given). Use for \"planet","description":"A general-knowledge flashcard deck (or the list of decks if none is given). Use for \"planet\n    flashcards\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"deck":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A deck name, or 'list' to see all decks.","examples":["us_states_capitals","planets","elements_basic","us_presidents","world_capitals"],"title":"Deck"},"count":{"anyOf":[{"maximum":30,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Sample this many cards instead of the whole deck.","title":"Count"}},"title":"flashcardsArguments","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/trivia_quiz":{"post":{"operationId":"trivia_quiz","summary":"Kid-friendly trivia questions with multiple-choice answers, filterable by subject and grade. Use for","description":"Kid-friendly trivia questions with multiple-choice answers, filterable by subject and grade. Use for\n    \"science trivia for a 5th grader\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"science | history | geography | math | literature","title":"Subject"},"grade":{"anyOf":[{"maximum":8,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"title":"Grade"},"count":{"default":1,"maximum":10,"minimum":1,"title":"Count","type":"integer"}},"title":"trivia_quizArguments","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/grammar_practice":{"post":{"operationId":"grammar_practice","summary":"Grammar practice questions (parts of speech, punctuation, sentence structure) with explanations. Use","description":"Grammar practice questions (parts of speech, punctuation, sentence structure) with explanations. Use\n    for \"is this sentence punctuated correctly\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"topic":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"parts_of_speech | punctuation | sentence_structure","title":"Topic"},"grade":{"anyOf":[{"maximum":8,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"title":"Grade"},"count":{"default":1,"maximum":10,"minimum":1,"title":"Count","type":"integer"}},"title":"grammar_practiceArguments","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/geography_quiz":{"post":{"operationId":"geography_quiz","summary":"US state-capital or world-geography quiz questions. Use for \"what's the capital of Texas\".","description":"US state-capital or world-geography quiz questions. Use for \"what's the capital of Texas\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"kind":{"default":"us_states","description":"us_states | world","title":"Kind","type":"string"},"count":{"default":5,"maximum":15,"minimum":1,"title":"Count","type":"integer"}},"title":"geography_quizArguments","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}}}}