{"openapi":"3.1.0","info":{"title":"SATWords API","version":"0.1.0","description":"Unofficial SAT/ACT-tier vocabulary and practice-question generator — hand-curated word bank, fill-in-the-blank and synonym questions, word roots — all local.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://satwords.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/satwords/docs"},"termsOfService":"https://connectorbay.com/satwords/terms"},"servers":[{"url":"https://satwords.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/satwords/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/vocab_word":{"post":{"operationId":"vocab_word","summary":"Look up a specific SAT/ACT-tier word, or sample words (optionally by tier), each with","description":"Look up a specific SAT/ACT-tier word, or sample words (optionally by tier), each with\n    definition, synonyms, antonyms and an example sentence. Use for \"what does 'obdurate' 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"},"tier":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"tier1 | tier2 | tier3, to sample from instead of a specific word.","title":"Tier"},"count":{"default":1,"maximum":15,"minimum":1,"title":"Count","type":"integer"}},"title":"vocab_wordArguments","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/fill_in_blank":{"post":{"operationId":"fill_in_blank","summary":"Real sentence(s) with the target word removed, plus three plausible same-tier distractor","description":"Real sentence(s) with the target word removed, plus three plausible same-tier distractor\n    words and the correct answer. Use for \"give me a fill-in-the-blank SAT vocab question\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"tier":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"tier1 | tier2 | tier3","title":"Tier"},"count":{"default":1,"maximum":10,"minimum":1,"title":"Count","type":"integer"}},"title":"fill_in_blankArguments","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/practice_quiz":{"post":{"operationId":"practice_quiz","summary":"A batch of fill-in-the-blank questions with answers included, for self-check practice. Use","description":"A batch of fill-in-the-blank questions with answers included, for self-check practice. Use\n    for \"give me 5 SAT vocab practice questions\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"tier":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"tier1 | tier2 | tier3","title":"Tier"},"count":{"default":5,"maximum":10,"minimum":1,"title":"Count","type":"integer"}},"title":"practice_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/synonym_challenge":{"post":{"operationId":"synonym_challenge","summary":"A 'which word means the same as ___' multiple-choice question. Use for \"which word means","description":"A 'which word means the same as ___' multiple-choice question. Use for \"which word means\n    the same as perfunctory\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"word":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A specific word to build the question around; omit to pick one at random.","title":"Word"},"tier":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"tier1 | tier2 | tier3, when word is omitted.","title":"Tier"}},"title":"synonym_challengeArguments","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/word_roots":{"post":{"operationId":"word_roots","summary":"Common Latin/Greek roots and which word-bank words are built on them. Use for \"what SAT","description":"Common Latin/Greek roots and which word-bank words are built on them. Use for \"what SAT\n    words come from the root 'loqu'\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"root":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A Latin/Greek root to look up, e.g. 'loqu'. Omit to list them all.","title":"Root"}},"title":"word_rootsArguments","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/tier_list":{"post":{"operationId":"tier_list","summary":"What the three difficulty tiers mean and how many words are in each. Use for \"how are","description":"What the three difficulty tiers mean and how many words are in each. Use for \"how are\n    SATWords difficulty tiers organized\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"tier_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}}}}