Reach120 MCP Server
OfficialMCP-сервер Reach120
Сервер MCP, который предоставляет ИИ-агенту управляемый доступ к API практики TOEFL iBT от Reach120: получение практических заданий по письму и оценка письменного ответа учащегося.
Reach120 — независимая платформа для практики. Она не аффилирована с ETS, не одобрена и не управляется ETS. TOEFL® — зарегистрированный товарный знак ETS. Reach120 не аффилирована с ETS, не одобрена и не утверждена ETS.
Инструменты
Инструмент | Что делает | Стоимость |
| Список практических заданий по письму, с идентификатором, используемым для оценки по одному из них | Читает сохранённые строки, не запускает модель |
| Получение одного задания с полным сценарием или контекстом обсуждения | Читает сохранённую строку, не запускает модель |
| Оценка письменного ответа, возвращающая автоматическую практическую оценку и краткое обоснование | Запускает оценщик; тарифицируется по вашему ключу |
Related MCP server: agent-validator-mcp-server
Ключ предоставляете вы
Этот сервер не содержит учётных данных. Он передаёт ключ, который вы помещаете в REACH120_API_KEY, и возвращает ответ API без изменений.
Это осознанное проектное решение, а не упущение. Все значимые ограничения находятся на стороне сервера API и проверяются при каждом вызове — окно запросов на ключ, суточная квота на оценку на ключ и общий лимит расходов на сервис. Клиент, который применял бы собственные ограничения, применял бы их только к тем, кто решил продолжать использовать клиент, поэтому этот клиент не применяет никаких ограничений и не может быть способом обойти их. Удалите этот пакет и вызывайте конечную точку напрямую — вы получите идентичные отказы.
Не существует пути оценки без аутентификации. Агент без ключа получает отказ с указанием, откуда берётся ключ, и ничего не отправляется.
Запросите ключ и прочитайте полную политику ограничений, кодов ошибок и версий на https://www.reach120.com/developers.
Установка
Этот пакет не опубликован на npm. Путь установки — этот репозиторий, и он единственный — @reach120/mcp-server не разрешается в публичном реестре npm, и никакое другое имя пакета его не заменяет.
npx -y github:reach120/reach120-mcpnpm компилирует TypeScript во время этой установки через скрипт prepare, поэтому отдельного шага сборки нет.
Или клонируйте репозиторий и запускайте из исходного кода:
git clone https://github.com/reach120/reach120-mcp.git
cd reach120-mcp
npm install
npm run build
node dist/index.jsНастройка
Claude Desktop (claude_desktop_config.json), Claude Code или любой MCP-клиент, поддерживающий stdio:
{
"mcpServers": {
"reach120": {
"command": "npx",
"args": ["-y", "github:reach120/reach120-mcp"],
"env": {
"REACH120_API_KEY": "r120_live_your_key_here"
}
}
}
}Переменная | Обязательная | По умолчанию | Значение |
| да | — | Ваш ключ API Reach120. Инструменты отказывают без него. |
| нет |
| Укажите другое развёртывание. |
| нет | см. | Тайм-аут запроса в миллисекундах. |
Как выглядит отказ
Ограничения отказывают с машиночитаемым кодом, а не деградируют. Вызов, который достигает суточной квоты ключа, не тихо оценивается на более дешёвом движке и не возвращается так, как будто это тот движок, который вы запросили — код называет, что произошло, а таблица ошибок на /developers объясняет, что означает каждый из них.
Проверка локально
npm install
npm run build
npm run verifynpm run verify запускает собранный сервер через stdio, выполняет реальное рукопожатие MCP с SDK-клиентом, выводит заявленные инструменты и вызывает один инструмент без ключа, чтобы показать путь отказа.
Оценки — это практическая обратная связь
score_writing_response возвращает автоматическую практическую обратную связь, созданную Reach120.
Это не оценка ETS и не сообщается по официальной шкале. Этот README намеренно не называет шкалу, по которой находится число: этот факт публикуется рядом с обязательным ограничением, требуемым реестром заявлений, которое страница пакета не может отобразить. Форма ответа документирована на https://www.reach120.com/developers.
TOEFL® — зарегистрированный товарный знак ETS. Reach120 не аффилирована с ETS, не одобрена и не утверждена ETS.
Лицензия
MIT. См. LICENSE.
Available Tools
3 toolsget_practice_promptFetch one TOEFL Writing practice promptARead-only
Fetch a single Writing practice prompt by its id, including the full scenario or discussion context a learner is asked to respond to. Reads a stored row and runs no model. TOEFL® is a registered trademark of ETS. Reach120 is not affiliated with, endorsed by, or approved by ETS.
| Name | Required | Description | Default |
|---|---|---|---|
| item_id | Yes | The prompt id returned by list_practice_prompts. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, but the description adds that the tool 'Reads a stored row and runs no model,' which clarifies that no AI generation happens and the result is deterministic. This is useful context beyond the annotations, and it does not contradict them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The functional description is just two sentences, front-loading the main action and expected result. The trademark disclaimer is extra but legally necessary and does not bloat the description. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter fetch tool with no output schema, the description adequately conveys what the caller gets (the full scenario/discussion context) and that it is a read-only database lookup. Nothing vital is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully documents item_id, including its meaning ('The prompt id returned by list_practice_prompts') and constraints (minLength 1). The description adds no further parameter information, so the baseline 3 applies given the 100% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Fetch a single Writing practice prompt by its id') and the resource, and specifies it includes the full scenario or discussion context. The use of 'single' and 'by its id' distinguishes it from sibling list_practice_prompts, and 'runs no model' contrasts with score_writing_response.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: the caller needs an id to fetch a specific prompt, which is a clear precondition. However, it does not explicitly point to list_practice_prompts for obtaining the id, nor does it state when to prefer this over alternatives. The parameter description in the schema partially compensates, so this is not a complete miss.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_practice_promptsList TOEFL Writing practice promptsARead-only
List Writing practice prompts from the Reach120 bank — the Write an Email task and the Writing for an Academic Discussion task. Returns each prompt with the id you pass to score_writing_response. Reads stored rows and runs no model, so it spends nothing against your daily scoring allowance, but it does count against your per-minute request window. TOEFL® is a registered trademark of ETS. Reach120 is not affiliated with, endorsed by, or approved by ETS.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many prompts to return. | |
| offset | No | How many prompts to skip, for paging. | |
| task_type | No | Restrict to one Writing task type. Omit to receive both. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds beyond that: it runs no model, spends nothing against the daily scoring allowance, and counts against the per-minute request window. This gives the agent information about side effects and rate-limit behavior not captured in annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately sized and information-dense. The core purpose is front-loaded, followed by cost and rate-limit details, and then a legal disclaimer. The legal section is less functional but not excessive; the structure is logical and every sentence carries relevant information except the trademark boilerplate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given three well-documented parameters, no output schema, and straightforward behavior, the description provides all needed context: what is returned (prompts with ids), which task types, cost implications, and rate-limit behavior. An agent can invoke this tool correctly without ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters are documented with meaning in the schema. The description does not add extra semantics for the parameters beyond what the schema already provides, only reiterates the task_type omission behavior which is already in the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List') and resource ('Writing practice prompts from the Reach120 bank'), and enumerates the two task types covered. It also hints at the primary use case by mentioning the id that is passed to score_writing_response, which distinguishes it from siblings. Purpose is unambiguous and differentiates from get_practice_prompt and score_writing_response.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context for when to use: it returns prompts with the id needed for scoring, and it explains cost implications (no scoring allowance usage, but counts against request window). However, it does not explicitly state when NOT to use it or mention alternatives by name, though the sibling list exists. The guidance is sufficient for an agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
score_writing_responseScore a TOEFL Writing responseA
Score a learner's written response to a TOEFL iBT Writing task and return an automated practice score with a short rationale. The response shape, the limits and the error codes are documented at https://www.reach120.com/developers. Supply either item_id from the prompt tools, or task_type plus the prompt inline for your own coursework. This call runs an AI scorer and is metered: it draws on the daily spend ceiling attached to your API key, and refuses with a machine-readable code rather than quietly scoring on a cheaper engine when a limit is reached. Reach120 is an independent practice platform. It is not affiliated with, endorsed by, or administered by ETS. TOEFL® is a registered trademark of ETS. Reach120 is not affiliated with, endorsed by, or approved by ETS.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | No | The prompt, inline. Ignored when item_id is supplied. | |
| item_id | No | A prompt id from the prompt tools. Supply this or task_type + prompt. | |
| response | Yes | The learner's written response. At most 6000 characters. | |
| task_type | No | Required when you supply the prompt inline instead of an item_id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses that the call is a metered AI scorer drawing on the daily spend ceiling and that it refuses with a machine-readable code rather than silently falling back to a cheaper engine. It also includes the ETS non-affiliation disclaimer, all of which is useful behavioral context not present in the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and usage, then adds behavioral and legal context. It is slightly longer than necessary due to repeated ETS disclaimer phrasing, but every major section earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description still covers the return value, the metering behavior, the spend limit refusal, the parameter selection rule, and where to find response shapes and error codes. For a tool of this complexity, it is complete enough for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents each parameter. The description adds meaningful selection semantics by explaining the either/or relationship between item_id and task_type plus prompt, and clarifies that prompt is only for inline coursework. This goes beyond the schema baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: score a learner's written response to a TOEFL iBT Writing task and return an automated practice score with a rationale. This clearly differentiates it from the sibling prompt-list and prompt-retrieval tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly tells the agent how to choose between item_id and task_type plus inline prompt, and references the prompt tools as the source of item_id. This gives a clear selection rule without leaving the agent to infer the param relationship.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v0.1.0- First observed
get_practice_prompt - First observed
list_practice_prompts - First observed
score_writing_response
TDQS
Scored across 3 tools
Each tool has a clear, distinct role: listing prompts, fetching a single prompt by id, and scoring a written response. The list/get pair follows a standard convention without meaningful overlap, and scoring is wholly separate.
All tool names follow a consistent verb_noun snake_case pattern: list_practice_prompts, get_practice_prompt, score_writing_response. The naming clearly communicates both the action and the target resource.
Three tools is well-scoped for this server's narrow purpose: browsing a fixed prompt bank and scoring responses. Each tool serves a distinct step in the workflow without redundancy.
The tool surface covers the full intended workflow: discover prompts, retrieve full prompt details, and score a response using either a bank item or inline task type. Since the prompt bank is read-only, no create/update/delete tools are necessary.
Maintenance
Related MCP Connectors
Turn any task into the right API calls: discover, evaluate, and integrate public APIs.
Score academic and professional writing against published criteria with three reference models.
Discover, compare, route, and execute machine-accessible capabilities for AI agents.
660+ data tools for agents: TikTok, Douyin, Instagram, YouTube, X, weather, GitHub. Pay per call.
Related MCP Servers
AlicenseNot gradedqualityDmaintenanceEnables LLMs to convert documents to Google Forms, edit questions, list and publish forms, and run AI form assistant tools through the Formswrite API.MIT- AlicenseAqualityDmaintenanceEnables testing and validation of APIs for AI agent compatibility, providing scores, grades, and actionable recommendations.343 PyPIMIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to discover, search, and call any REST API described by an OpenAPI or Swagger document. Supports multiple API endpoints with authentication and parameter handling.10 npmMIT
- AlicenseAqualityDmaintenanceEnables AI agents to create and edit Google Docs and draft Gmail emails through natural language.7ISC