IYT Test MCP
A public, read-only MCP server that allows AI assistants to quiz users on sailing certification levels, check answers, run mock exams, and access theory articles in English and Russian.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://iyt.rycrentals.com/api/mcpWhat its tools do
13 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Quiz user on IALA buoyage for Bareboat Skipper
- Run and grade a Yachtmaster Coastal mock exam
- Explain cardinal marks and test knowledge
- Ask the question of the day in Russian
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- iyt-test 1.0.1
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 13 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": false
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
13 advertised
list_levels — List levels
The levels with a question bank (IYT courses, the Racing Rules of Sailing, the charter check-in): topics, number of questions, mock-exam settings and which topics have a theory article.
{
"type": "object",
"required": [],
"properties": {
"lang": {
"enum": [
"en",
"ru"
],
"type": "string",
"description": "Language of the text: en (default) or ru. What is not translated yet comes in English."
}
},
"additionalProperties": false
}{
"title": "List levels",
"readOnlyHint": true,
"openWorldHint": false
}get_questions — Get practice questions
Random practice questions of a level, of one topic or difficulty when given, without the answers.
{
"type": "object",
"required": [
"level"
],
"properties": {
"lang": {
"enum": [
"en",
"ru"
],
"type": "string",
"description": "Language of the text: en (default) or ru. What is not translated yet comes in English."
},
"count": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "How many (default 5)."
},
"level": {
"type": "string",
"description": "Level id, e.g. bareboat-skipper."
},
"topic": {
"type": "string",
"description": "Topic id, to practise one topic."
},
"exclude": {
"type": "array",
"items": {
"type": "string"
},
"description": "Question ids the student has already had in this conversation, so they are not repeated."
},
"text_only": {
"type": "boolean",
"description": "Only questions without a drawing, for when images cannot be shown."
},
"difficulty": {
"enum": [
1,
2,
3
],
"type": "integer",
"description": "1 easy, 2 medium, 3 hard."
}
},
"additionalProperties": false
}{
"title": "Get practice questions",
"readOnlyHint": true,
"openWorldHint": false
}check_answer — Check an answer
Whether an option of a question is right: the right option, the one-line note that names the rule, and the theory section that explains it.
{
"type": "object",
"required": [
"question_id",
"option"
],
"properties": {
"lang": {
"enum": [
"en",
"ru"
],
"type": "string",
"description": "Language of the text: en (default) or ru. What is not translated yet comes in English."
},
"option": {
"enum": [
"A",
"B",
"C",
"D"
],
"type": "string",
"description": "The option chosen: A, B, C or D."
},
"question_id": {
"type": "string",
"description": "Question id, e.g. bs-001."
}
},
"additionalProperties": false
}{
"title": "Check an answer",
"readOnlyHint": true,
"openWorldHint": false
}search_questions — Search questions
Questions whose text, options, rule reference or topic have the words (e.g. "cardinal mark", "MAYDAY"), without the answers.
{
"type": "object",
"required": [
"query"
],
"properties": {
"lang": {
"enum": [
"en",
"ru"
],
"type": "string",
"description": "Language of the text: en (default) or ru. What is not translated yet comes in English."
},
"count": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "How many (default 10)."
},
"level": {
"type": "string",
"description": "Level id, e.g. bareboat-skipper."
},
"query": {
"type": "string",
"description": "Words to look for; all of them must be there."
}
},
"additionalProperties": false
}{
"title": "Search questions",
"readOnlyHint": true,
"openWorldHint": false
}start_mock_exam — Start a mock exam
A mock exam of a level: the exam's number of questions spread evenly over all topics, with the time allowed and the pass mark, without the answers.
{
"type": "object",
"required": [
"level"
],
"properties": {
"lang": {
"enum": [
"en",
"ru"
],
"type": "string",
"description": "Language of the text: en (default) or ru. What is not translated yet comes in English."
},
"level": {
"type": "string",
"description": "Level id, e.g. bareboat-skipper."
}
},
"additionalProperties": false
}{
"title": "Start a mock exam",
"readOnlyHint": true,
"openWorldHint": false
}grade_exam — Grade a mock exam
The marks of a finished mock exam: the score, pass or fail, the result per topic, every mistake with the right answer and its note, and the theory sections to read. A question with option null was not answered and counts as wrong.
{
"type": "object",
"required": [
"answers"
],
"properties": {
"lang": {
"enum": [
"en",
"ru"
],
"type": "string",
"description": "Language of the text: en (default) or ru. What is not translated yet comes in English."
},
"answers": {
"type": "array",
"items": {
"type": "object",
"required": [
"question_id"
],
"properties": {
"option": {
"enum": [
"A",
"B",
"C",
"D",
null
],
"type": [
"string",
"null"
],
"description": "A, B, C, D, or null when not answered."
},
"question_id": {
"type": "string",
"description": "Question id, e.g. bs-001."
}
},
"additionalProperties": false
},
"maxItems": 100,
"minItems": 1,
"description": "One item per question of the exam."
}
},
"additionalProperties": false
}{
"title": "Grade a mock exam",
"readOnlyHint": true,
"openWorldHint": false
}question_of_the_day — Question of the day
Today's question, the same one the Telegram bot @iyt_test_bot sends: one text question per day (UTC), for one level when a level is given, without the answer.
{
"type": "object",
"required": [],
"properties": {
"lang": {
"enum": [
"en",
"ru"
],
"type": "string",
"description": "Language of the text: en (default) or ru. What is not translated yet comes in English."
},
"level": {
"type": "string",
"description": "Level id, e.g. bareboat-skipper."
}
},
"additionalProperties": false
}{
"title": "Question of the day",
"readOnlyHint": true,
"openWorldHint": false
}list_theory — List theory articles
The theory articles: one per topic, each in sections. With a level, the sections of its articles; without, which topics of every level have an article. Some topics have no article yet.
{
"type": "object",
"required": [],
"properties": {
"lang": {
"enum": [
"en",
"ru"
],
"type": "string",
"description": "Language of the text: en (default) or ru. What is not translated yet comes in English."
},
"level": {
"type": "string",
"description": "Level id, e.g. bareboat-skipper."
}
},
"additionalProperties": false
}{
"title": "List theory articles",
"readOnlyHint": true,
"openWorldHint": false
}get_theory — Read a theory article
A theory article, or one section of it, as text: the rule, the reason, tables and links to the drawings. Study notes close to the syllabus, not official IYT text.
{
"type": "object",
"required": [
"level",
"topic"
],
"properties": {
"lang": {
"enum": [
"en",
"ru"
],
"type": "string",
"description": "Language of the text: en (default) or ru. What is not translated yet comes in English."
},
"level": {
"type": "string",
"description": "Level id, e.g. bareboat-skipper."
},
"topic": {
"type": "string",
"description": "Topic id, e.g. buoyage."
},
"section": {
"type": "string",
"description": "Section id, to read one section only."
}
},
"additionalProperties": false
}{
"title": "Read a theory article",
"readOnlyHint": true,
"openWorldHint": false
}search_theory — Search theory
The sections of the theory articles that have the words (e.g. "scope", "cardinal marks"), with an excerpt of each.
{
"type": "object",
"required": [
"query"
],
"properties": {
"lang": {
"enum": [
"en",
"ru"
],
"type": "string",
"description": "Language of the text: en (default) or ru. What is not translated yet comes in English."
},
"count": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "How many (default 8)."
},
"level": {
"type": "string",
"description": "Level id, e.g. bareboat-skipper."
},
"query": {
"type": "string",
"description": "Words to look for; all of them must be there."
}
},
"additionalProperties": false
}{
"title": "Search theory",
"readOnlyHint": true,
"openWorldHint": false
}explain_question — Explain a question
A question with its answer, the note that names the rule and the full text of the theory section that explains it.
{
"type": "object",
"required": [
"question_id"
],
"properties": {
"lang": {
"enum": [
"en",
"ru"
],
"type": "string",
"description": "Language of the text: en (default) or ru. What is not translated yet comes in English."
},
"question_id": {
"type": "string",
"description": "Question id, e.g. bs-001."
}
},
"additionalProperties": false
}{
"title": "Explain a question",
"readOnlyHint": true,
"openWorldHint": false
}practice_section — Practise a theory section
The questions on what a theory section explains, at random, without the answers.
{
"type": "object",
"required": [
"level",
"topic",
"section"
],
"properties": {
"lang": {
"enum": [
"en",
"ru"
],
"type": "string",
"description": "Language of the text: en (default) or ru. What is not translated yet comes in English."
},
"count": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "How many (default 5)."
},
"level": {
"type": "string",
"description": "Level id, e.g. bareboat-skipper."
},
"topic": {
"type": "string",
"description": "Topic id, e.g. buoyage."
},
"exclude": {
"type": "array",
"items": {
"type": "string"
},
"description": "Question ids the student has already had in this conversation, so they are not repeated."
},
"section": {
"type": "string",
"description": "Section id, e.g. cardinal."
}
},
"additionalProperties": false
}{
"title": "Practise a theory section",
"readOnlyHint": true,
"openWorldHint": false
}get_figure — Get a drawing
The drawing of a question or of a theory section as SVG markup.
{
"type": "object",
"required": [
"figure"
],
"properties": {
"lang": {
"enum": [
"en",
"ru"
],
"type": "string",
"description": "Language of the text: en (default) or ru. What is not translated yet comes in English."
},
"figure": {
"type": "string",
"description": "A question id (bs-001), or a theory drawing as level/topic/section/number (bareboat-skipper/buoyage/lateral/1)."
}
},
"additionalProperties": false
}{
"title": "Get a drawing",
"readOnlyHint": true,
"openWorldHint": false
}Prompts
Not advertised
Resources
Not advertised
90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-07: 1 of 1 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 575 ms
- 95th percentile latency
- 575 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 575 ms · metadata changed · 13 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http iyt-test-mcp https://iyt.rycrentals.com/api/mcpCodex
codex mcp add iyt-test-mcp --url https://iyt.rycrentals.com/api/mcpCursor
{
"mcpServers": {
"iyt-test-mcp": {
"url": "https://iyt.rycrentals.com/api/mcp"
}
}
}Cline
{
"mcpServers": {
"iyt-test-mcp": {
"type": "streamableHttp",
"url": "https://iyt.rycrentals.com/api/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"iyt-test-mcp": {
"type": "http",
"url": "https://iyt.rycrentals.com/api/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http iyt-test-mcp https://iyt.rycrentals.com/api/mcpClaude Desktop
https://iyt.rycrentals.com/api/mcpWindsurf
{
"mcpServers": {
"iyt-test-mcp": {
"serverUrl": "https://iyt.rycrentals.com/api/mcp"
}
}
}Let your agent find its tools
Find servers like IYT Test MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.