Server definition
- Hash
- sha256:94e2531729a021c36e2a20fd54f2ba462561ce25b16e8a5d1ea6717e133ba9de
- What it is
- What a remote MCP server returned when asked what it offers: 9 tools
The blob, as servednamed by its sha256
{
"instructions": "Free IELTS preparation platform: real student Writing model answers with AI examiner band scores, and interactive Listening/Reading drills that can be taken and graded in-conversation. Use search_model_answers to find band-scored essays, get_drill + check_drill_answers to run a practice drill with the user (never reveal answers before grading), and list_practice_tests for the full-length test catalog on keenielts.com.",
"tools": [
{
"description": "Grade a user's drill answers server-side (same grader the website\n uses — case/whitespace tolerant, accepts standard IELTS answer variants).\n\n Args:\n skill: 'listening' or 'reading'.\n slug: the drill slug from get_drill.\n answers: question number -> the user's answer,\n e.g. {\"1\": \"true\", \"2\": \"B\", \"3\": \"24 April\"}.\n\n Returns per-question results with the accepted answers and explanations\n (safe to share with the user now that they have answered), plus a score.\n ",
"inputSchema": {
"properties": {
"answers": {
"additionalProperties": {
"type": "string"
},
"title": "Answers",
"type": "object"
},
"skill": {
"title": "Skill",
"type": "string"
},
"slug": {
"title": "Slug",
"type": "string"
}
},
"required": [
"skill",
"slug",
"answers"
],
"title": "check_drill_answersArguments",
"type": "object"
},
"name": "check_drill_answers",
"outputSchema": null
},
{
"description": "List every public band-scored answer to ONE IELTS Writing question —\n the same prompt answered by different students at different band scores,\n useful for showing what separates a Band 6 from a Band 8 on identical\n input. Fetch individual answers with get_model_answer.\n ",
"inputSchema": {
"properties": {
"section_id": {
"title": "Section Id",
"type": "integer"
}
},
"required": [
"section_id"
],
"title": "compare_questionArguments",
"type": "object"
},
"name": "compare_question",
"outputSchema": null
},
{
"description": "Fetch the full content of a KeenIELTS search result by id: a model\n answer with examiner feedback, a practice drill, a question compared\n across band scores, or a site page.\n ",
"inputSchema": {
"properties": {
"id": {
"title": "Id",
"type": "string"
}
},
"required": [
"id"
],
"title": "fetchArguments",
"type": "object"
},
"name": "fetch",
"outputSchema": null
},
{
"description": "Get one drill's content so the user can attempt it in conversation.\n\n The questions are markdown; `{{3}}` marks a gap the user fills for\n question 3, and `{{3:A/B/C}}` means question 3 is a choice between the\n slash-separated options. For listening drills, give the user the audio\n link to play before answering. Collect the user's answers, then call\n check_drill_answers to grade them — do NOT guess at or reveal correct\n answers yourself; they are only returned by check_drill_answers.\n ",
"inputSchema": {
"properties": {
"skill": {
"title": "Skill",
"type": "string"
},
"slug": {
"title": "Slug",
"type": "string"
}
},
"required": [
"skill",
"slug"
],
"title": "get_drillArguments",
"type": "object"
},
"name": "get_drill",
"outputSchema": null
},
{
"description": "Get one student IELTS Writing answer in full: the question, the essay,\n and the AI examiner's band scores + feedback on all four official IELTS\n marking criteria (Task Achievement, Coherence & Cohesion, Lexical\n Resource, Grammatical Range & Accuracy).\n\n Get section_id/attempt_id pairs from search_model_answers or\n compare_question.\n ",
"inputSchema": {
"properties": {
"attempt_id": {
"title": "Attempt Id",
"type": "integer"
},
"section_id": {
"title": "Section Id",
"type": "integer"
}
},
"required": [
"section_id",
"attempt_id"
],
"title": "get_model_answerArguments",
"type": "object"
},
"name": "get_model_answer",
"outputSchema": null
},
{
"description": "List short, targeted IELTS practice drills that can be taken right here\n in the conversation (fetch with get_drill, grade with check_drill_answers).\n\n Args:\n skill: 'listening' or 'reading'.\n category: optional IELTS question-type filter. Listening: completion,\n multiple-choice, matching, labelling. Reading: true-false-not-given,\n completion, matching-headings, matching-information,\n multiple-choice-short-answer.\n ",
"inputSchema": {
"properties": {
"category": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Category"
},
"skill": {
"title": "Skill",
"type": "string"
}
},
"required": [
"skill"
],
"title": "list_drillsArguments",
"type": "object"
},
"name": "list_drills",
"outputSchema": null
},
{
"description": "Catalog of full-length IELTS practice tests on keenielts.com — books,\n difficulty, and test counts for all four skills (Listening, Reading,\n Writing, Speaking). Full tests are taken on the website (timed, with audio\n players and AI band scoring), not in this conversation — point the user at\n the URLs. Taking tests and getting AI band scores is free.\n ",
"inputSchema": {
"properties": {},
"title": "list_practice_testsArguments",
"type": "object"
},
"name": "list_practice_tests",
"outputSchema": null
},
{
"description": "Search KeenIELTS: real student IELTS Writing model answers with band\n scores, Listening/Reading practice drills, and IELTS practice resources.\n Returns result ids for use with fetch.\n ",
"inputSchema": {
"properties": {
"query": {
"title": "Query",
"type": "string"
}
},
"required": [
"query"
],
"title": "searchArguments",
"type": "object"
},
"name": "search",
"outputSchema": null
},
{
"description": "Search real student IELTS Writing answers scored by AI examiner.\n\n Args:\n task: IELTS Writing task number — 1 (reports/letters) or 2 (essays).\n band: whole band to filter on; matches half-bands too (8 -> 8.0-8.5).\n query: free-text match against the question/prompt.\n limit: max results (1-50).\n\n Each result links to a full page with the question, the student's answer,\n and criterion-by-criterion examiner feedback. Use get_model_answer for the\n full content, or compare_question to see the same prompt at other bands.\n ",
"inputSchema": {
"properties": {
"band": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Band"
},
"limit": {
"default": 20,
"title": "Limit",
"type": "integer"
},
"query": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Query"
},
"task": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Task"
}
},
"title": "search_model_answersArguments",
"type": "object"
},
"name": "search_model_answers",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:94e2531729a021c36e2a20fd54f2ba462561ce25b16e8a5d1ea6717e133ba9de | sha256sum