{"openapi":"3.1.0","info":{"title":"Words in Context","version":"1.0.0","summary":"Practise the vocabulary questions the way the test actually asks them.","description":"A bank of words-in-context practice questions: a real sentence, four plausible options, and an explanation of why the right answer fits and why each distractor does not. Built for the current digital SAT format, which tests inference from context rather than memorised definitions. Optionally generate extra questions from your own reading or your own missed words.\n\n**Not for:** Not affiliated with or endorsed by the College Board, and not a source of official practice tests. Does not track scores across devices or hold an account — progress stays in your own browser.\n\nFree tier: 250 calls per UTC day per caller. Past that, endpoints return 402 with x402 payment requirements. An MCP server exposing the same capabilities is available at https://words-in-context.gumballtools.com/api/mcp.","contact":{"url":"https://github.com/bwalvoord/gumball"}},"servers":[{"url":"https://words-in-context.gumballtools.com","description":"Production"}],"externalDocs":{"url":"https://words-in-context.gumballtools.com/llms-full.txt","description":"Full documentation for agents"},"paths":{"/api/v1/draw":{"get":{"operationId":"drawItems","summary":"Practise the vocabulary questions the way the test actually asks them.","description":"Draws practice items. The response never contains the answer or the explanations — use /api/v1/check for those.","parameters":[{"name":"count","in":"query","required":false,"description":"How many items to draw, 1-20. Also accepts difficulty, theme, and seed.","schema":{"type":"integer","minimum":1,"maximum":20,"default":5}}],"responses":{"200":{"description":"The result.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input. The body names the field and how to fix it.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","fix_hint","docs"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"},"fix_hint":{"type":"string","description":"What to change before retrying."},"field":{"type":"string"},"token":{"type":"string"},"examples":{"type":"array","items":{"type":"string"}},"docs":{"type":"string","format":"uri"}}}}}}}},"402":{"description":"Free quota of 250 calls per UTC day exhausted. Body is an x402 v1 payment requirement ($0.001 per call). While settlement is disabled the body carries payment_enabled: false and the call cannot be unblocked by paying — wait for quota.resetsAt.","content":{"application/json":{"schema":{"type":"object"}}}}}}}}}