mcp server
KeenIELTS
Free IELTS prep: band-scored student essays and interactive Listening/Reading drills graded in-chat.
Description as published by the maintainer. Source
- version 1.0.0
- active
active — Registry entry last updated 2026-08-03.
What this server can do
9 functions, named and described by the server itself. Parameter names are shown because they say more about what a function does than its name usually does.
check_drill_answers(slug, skill, answers)- Grade a user's drill answers server-side (same grader the website uses — case/whitespace tolerant, accepts standard IELTS answer variants). Args: skill: 'listening' or 'reading'. slug: the drill slug from get_drill. answers: question number -> the user's answer, e.g. {"1": "true", "2": "B", "3": "24 April"}. Returns per-question results with the accepted answers and explanations (safe to share with the user now that they have answered), plus a score. Required: skill, slug, answers.
compare_question(section_id)- List every public band-scored answer to ONE IELTS Writing question — the same prompt answered by different students at different band scores, useful for showing what separates a Band 6 from a Band 8 on identical input. Fetch individual answers with get_model_answer. Required: section_id.
fetch(id)- Fetch the full content of a KeenIELTS search result by id: a model answer with examiner feedback, a practice drill, a question compared across band scores, or a site page. Required: id.
get_drill(slug, skill)- Get one drill's content so the user can attempt it in conversation. The questions are markdown; `{{3}}` marks a gap the user fills for question 3, and `{{3:A/B/C}}` means question 3 is a choice between the slash-separated options. For listening drills, give the user the audio link to play before answering. Collect the user's answers, then call check_drill_answers to grade them — do NOT guess at or reveal correct answers yourself; they are only returned by check_drill_answers. Required: skill, slug.
get_model_answer(attempt_id, section_id)- Get one student IELTS Writing answer in full: the question, the essay, and the AI examiner's band scores + feedback on all four official IELTS marking criteria (Task Achievement, Coherence & Cohesion, Lexical Resource, Grammatical Range & Accuracy). Get section_id/attempt_id pairs from search_model_answers or compare_question. Required: section_id, attempt_id.
list_drills(skill, category)- List short, targeted IELTS practice drills that can be taken right here in the conversation (fetch with get_drill, grade with check_drill_answers). Args: skill: 'listening' or 'reading'. category: optional IELTS question-type filter. Listening: completion, multiple-choice, matching, labelling. Reading: true-false-not-given, completion, matching-headings, matching-information, multiple-choice-short-answer. Required: skill.
list_practice_tests- Catalog of full-length IELTS practice tests on keenielts.com — books, difficulty, and test counts for all four skills (Listening, Reading, Writing, Speaking). Full tests are taken on the website (timed, with audio players and AI band scoring), not in this conversation — point the user at the URLs. Taking tests and getting AI band scores is free.
search(query)- Search KeenIELTS: real student IELTS Writing model answers with band scores, Listening/Reading practice drills, and IELTS practice resources. Returns result ids for use with fetch. Required: query.
search_model_answers(band, task, limit, query)- Search real student IELTS Writing answers scored by AI examiner. Args: task: IELTS Writing task number — 1 (reports/letters) or 2 (essays). band: whole band to filter on; matches half-bands too (8 -> 8.0-8.5). query: free-text match against the question/prompt. limit: max results (1-50). Each result links to a full page with the question, the student's answer, and criterion-by-criterion examiner feedback. Use get_model_answer for the full content, or compare_question to see the same prompt at other bands.
Last successful function declaration observed on . Source: https://keenielts.com/mcp. We list what the server declared; we do not call any of these functions.
Endpoint status observed on . Source: https://keenielts.com/mcp.
Signals
These are separate measurements of different things. They are deliberately not combined into one score, because a popularity number that mixes website traffic with saves and stars cannot be checked or acted on.
| Signal | Value | What it measures | Window | Observed | Source |
|---|---|---|---|---|---|
| Latest published version | 1.0.0 | Latest version string the maintainer published to the registry. | as of fetch | Model Context Protocol | |
| Registry record last updated | 2026-08-03 | When the registry record was last updated by its maintainer. | point in time | Model Context Protocol | |
| First listed in the MCP Registry | 2026-08-03 | Date this server was first published to the official MCP Registry. Not a usage or quality measure. | point in time | Model Context Protocol | |
| mcp tools declared | 9 tools | Number of functions the server itself declared when asked to list them. This is what the server offers an agent, not a measure of how well any of them work. | as of probe | keenielts.com | |
| mcp endpoint status | ok | The server listed 9 functions when asked. | as of probe | keenielts.com |
Where to get it
This record as data
Every field on this page, with its source and observation date, is in the catalog JSON. Fetch the whole kind at once instead of parsing this HTML.
GET /api/v1/entries/mcp_server.json