Bettyapp MCP
An official read-only MCP server that allows AI tutors to find specific moments in university and school lectures where a topic is explained, providing play addresses and metadata to direct students to the exact part of a video.
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://bettyapp.org/mcpWhat you can do with it
- Find lecture moments explaining a specific topic
- Retrieve full lecture details and moments by ID
- List available subjects and educational levels
- Get the best moment for a topic at each level
Source and maintenance
Protocol and capabilities
- Server
- bettyapp 1.1.0
- MCP protocol
- 2025-06-18
- Tools
- 6 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
6 advertised
search_moments — Find lecture moments that explain a topic or question
Find the moments in Bettyapp's university and school lectures that explain a topic or answer a student's question. Use it when a student asks about a topic, or is stuck on a question, and a short part of a real lecture would help. Each moment has a play_url that opens the lecture at that moment: give the student the best one or two, with the lecture title, teacher and credit line. The moments come best first. If none come back, Bettyapp has no lecture on it: do not say that it has.
{
"type": "object",
"required": [
"query"
],
"properties": {
"level": {
"type": "string",
"description": "Only lectures at this Level: a code from list_subjects' levels (high_school, university_year1 ...) or its name. Leave it out for every Level."
},
"limit": {
"type": "integer",
"default": 5,
"maximum": 10,
"minimum": 1,
"description": "How many moments, 1 to 10."
},
"query": {
"type": "string",
"maxLength": 300,
"minLength": 1,
"description": "The topic or the student's question, in plain words, for example \"why does ice float\" or \"integration by parts\"."
},
"subject": {
"type": "string",
"description": "Only lectures in this Subject: a name from list_subjects (for example Chemistry). Leave it out to search every Subject."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"attribution",
"terms",
"query",
"moments"
],
"properties": {
"level": {
"type": [
"string",
"null"
],
"description": "The Level searched at."
},
"query": {
"type": [
"string",
"null"
],
"description": "The words searched for, as sent."
},
"terms": {
"type": [
"string",
"null"
],
"description": "The terms of use."
},
"message": {
"type": [
"string",
"null"
],
"description": "Said when there are no moments."
},
"moments": {
"type": "array",
"items": {
"type": "object",
"required": [
"start_seconds",
"end_seconds",
"time",
"title",
"summary",
"questions",
"topics",
"excerpt",
"play_url",
"thumbnail_url",
"credit"
],
"properties": {
"time": {
"type": [
"string",
"null"
],
"description": "start_seconds as a clock (4:33)."
},
"title": {
"type": [
"string",
"null"
],
"description": "What it explains, in a few words (written with the help of an AI model and checked against the lecture)."
},
"credit": {
"type": [
"object",
"null"
],
"required": [
"line",
"creator",
"licence",
"transcript"
],
"properties": {
"line": {
"type": [
"string",
"null"
],
"description": "The credit line, as the lecture page shows it."
},
"creator": {
"type": [
"string",
"null"
],
"description": "Who made the lecture."
},
"licence": {
"type": [
"string",
"null"
],
"description": "The licence, for example CC BY-NC-SA 4.0."
},
"transcript": {
"enum": [
"full",
"short excerpts only"
],
"type": [
"string",
"null"
],
"description": "Whether the lecture page may show the whole transcript, or only short excerpts."
},
"creator_url": {
"type": [
"string",
"null"
],
"description": "The creator's own site."
},
"licence_url": {
"type": [
"string",
"null"
],
"description": "The licence's text."
},
"watch_at_source": {
"type": [
"string",
"null"
],
"description": "The lecture at its own source (YouTube, the publisher)."
}
},
"description": "Who made the lecture and its licence. Show line wherever the moment is linked."
},
"topics": {
"type": "array",
"items": {
"type": [
"string",
"null"
]
},
"description": "The topics explained there, most mentioned first."
},
"excerpt": {
"type": [
"string",
"null"
],
"description": "The teacher's words at its start: at most 300 characters, and as short as the lecture's licence asks (at most 40 words for lectures whose licence allows only short excerpts)."
},
"lecture": {
"type": "object",
"required": [
"id",
"title",
"url",
"course",
"teacher",
"subjects"
],
"properties": {
"id": {
"type": [
"integer",
"null"
],
"description": "The lecture's id."
},
"of": {
"type": [
"integer",
"null"
],
"description": "Lectures in its course with pages."
},
"url": {
"type": [
"string",
"null"
],
"description": "Its page on Bettyapp."
},
"title": {
"type": [
"string",
"null"
],
"description": "Its title."
},
"course": {
"type": "object",
"required": [
"id",
"name",
"url"
],
"properties": {
"id": {
"type": [
"integer",
"null"
]
},
"url": {
"type": [
"string",
"null"
]
},
"name": {
"type": [
"string",
"null"
]
}
}
},
"number": {
"type": [
"integer",
"null"
],
"description": "Its place in its course."
},
"teacher": {
"type": [
"string",
"null"
],
"description": "The course's teacher or publisher."
},
"subjects": {
"type": "array",
"items": {
"type": "object",
"required": [
"subject",
"levels"
],
"properties": {
"levels": {
"type": "array",
"items": {
"type": [
"string",
"null"
]
}
},
"subject": {
"type": [
"string",
"null"
]
}
}
},
"description": "Its Subjects, each with its Levels."
},
"length_seconds": {
"type": [
"integer",
"null"
],
"description": "How long it is."
}
}
},
"summary": {
"type": [
"string",
"null"
],
"description": "One or two sentences on what it explains (as title)."
},
"play_url": {
"type": [
"string",
"null"
],
"description": "The lecture page, playing from this moment. Send the student here."
},
"questions": {
"type": "array",
"items": {
"type": [
"string",
"null"
]
},
"description": "Questions a student might ask that it answers (as title)."
},
"also_called": {
"type": "array",
"items": {
"type": [
"string",
"null"
]
},
"description": "Other names for its topic."
},
"end_seconds": {
"type": [
"integer",
"null"
],
"description": "Where its part of the lecture ends."
},
"start_seconds": {
"type": [
"integer",
"null"
],
"description": "Where it starts, in seconds from the lecture's start."
},
"thumbnail_url": {
"type": [
"string",
"null"
],
"description": "A picture of the lecture at about this moment."
}
},
"description": "A moment of a lecture: where it starts and ends, what it explains, and where to play it."
},
"description": "The moments, best first. Empty: Bettyapp has nothing on it."
},
"subject": {
"type": [
"string",
"null"
],
"description": "The Subject searched in."
},
"attribution": {
"type": [
"string",
"null"
],
"description": "How to credit Bettyapp and the lecture's creator. Follow it."
},
"searched_for": {
"type": [
"string",
"null"
],
"description": "The words searched for when a misspelt word was corrected."
}
}
}{
"title": "Find lecture moments",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_lecture — A lecture and all its moments
One lecture on Bettyapp, by its id (lecture.id in a moment) or the address of its page: its course, teacher, Subjects and Levels, credit line, and every moment in it, in order, each with its play_url. Use it to give a student more of a lecture a moment came from, or to read a Bettyapp lecture link the student sent.
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Or the lecture page's address (https://bettyapp.org/lectures/...)."
},
"lecture_id": {
"type": "integer",
"minimum": 1,
"description": "The lecture's id."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"attribution",
"terms",
"lecture",
"moments"
],
"properties": {
"terms": {
"type": [
"string",
"null"
],
"description": "The terms of use."
},
"lecture": {
"allOf": [
{
"type": "object",
"required": [
"id",
"title",
"url",
"course",
"teacher",
"subjects"
],
"properties": {
"id": {
"type": [
"integer",
"null"
],
"description": "The lecture's id."
},
"of": {
"type": [
"integer",
"null"
],
"description": "Lectures in its course with pages."
},
"url": {
"type": [
"string",
"null"
],
"description": "Its page on Bettyapp."
},
"title": {
"type": [
"string",
"null"
],
"description": "Its title."
},
"course": {
"type": "object",
"required": [
"id",
"name",
"url"
],
"properties": {
"id": {
"type": [
"integer",
"null"
]
},
"url": {
"type": [
"string",
"null"
]
},
"name": {
"type": [
"string",
"null"
]
}
}
},
"number": {
"type": [
"integer",
"null"
],
"description": "Its place in its course."
},
"teacher": {
"type": [
"string",
"null"
],
"description": "The course's teacher or publisher."
},
"subjects": {
"type": "array",
"items": {
"type": "object",
"required": [
"subject",
"levels"
],
"properties": {
"levels": {
"type": "array",
"items": {
"type": [
"string",
"null"
]
}
},
"subject": {
"type": [
"string",
"null"
]
}
}
},
"description": "Its Subjects, each with its Levels."
},
"length_seconds": {
"type": [
"integer",
"null"
],
"description": "How long it is."
}
}
},
{
"type": "object",
"properties": {
"credit": {
"type": [
"object",
"null"
],
"required": [
"line",
"creator",
"licence",
"transcript"
],
"properties": {
"line": {
"type": [
"string",
"null"
],
"description": "The credit line, as the lecture page shows it."
},
"creator": {
"type": [
"string",
"null"
],
"description": "Who made the lecture."
},
"licence": {
"type": [
"string",
"null"
],
"description": "The licence, for example CC BY-NC-SA 4.0."
},
"transcript": {
"enum": [
"full",
"short excerpts only"
],
"type": [
"string",
"null"
],
"description": "Whether the lecture page may show the whole transcript, or only short excerpts."
},
"creator_url": {
"type": [
"string",
"null"
],
"description": "The creator's own site."
},
"licence_url": {
"type": [
"string",
"null"
],
"description": "The licence's text."
},
"watch_at_source": {
"type": [
"string",
"null"
],
"description": "The lecture at its own source (YouTube, the publisher)."
}
},
"description": "Who made the lecture and its licence. Show line wherever the moment is linked."
}
}
}
]
},
"moments": {
"type": "array",
"items": {
"type": "object",
"required": [
"start_seconds",
"end_seconds",
"time",
"title",
"summary",
"questions",
"topics",
"excerpt",
"play_url",
"thumbnail_url",
"credit"
],
"properties": {
"time": {
"type": [
"string",
"null"
],
"description": "start_seconds as a clock (4:33)."
},
"title": {
"type": [
"string",
"null"
],
"description": "What it explains, in a few words (written with the help of an AI model and checked against the lecture)."
},
"credit": {
"type": [
"object",
"null"
],
"required": [
"line",
"creator",
"licence",
"transcript"
],
"properties": {
"line": {
"type": [
"string",
"null"
],
"description": "The credit line, as the lecture page shows it."
},
"creator": {
"type": [
"string",
"null"
],
"description": "Who made the lecture."
},
"licence": {
"type": [
"string",
"null"
],
"description": "The licence, for example CC BY-NC-SA 4.0."
},
"transcript": {
"enum": [
"full",
"short excerpts only"
],
"type": [
"string",
"null"
],
"description": "Whether the lecture page may show the whole transcript, or only short excerpts."
},
"creator_url": {
"type": [
"string",
"null"
],
"description": "The creator's own site."
},
"licence_url": {
"type": [
"string",
"null"
],
"description": "The licence's text."
},
"watch_at_source": {
"type": [
"string",
"null"
],
"description": "The lecture at its own source (YouTube, the publisher)."
}
},
"description": "Who made the lecture and its licence. Show line wherever the moment is linked."
},
"topics": {
"type": "array",
"items": {
"type": [
"string",
"null"
]
},
"description": "The topics explained there, most mentioned first."
},
"excerpt": {
"type": [
"string",
"null"
],
"description": "The teacher's words at its start: at most 300 characters, and as short as the lecture's licence asks (at most 40 words for lectures whose licence allows only short excerpts)."
},
"lecture": {
"type": "object",
"required": [
"id",
"title",
"url",
"course",
"teacher",
"subjects"
],
"properties": {
"id": {
"type": [
"integer",
"null"
],
"description": "The lecture's id."
},
"of": {
"type": [
"integer",
"null"
],
"description": "Lectures in its course with pages."
},
"url": {
"type": [
"string",
"null"
],
"description": "Its page on Bettyapp."
},
"title": {
"type": [
"string",
"null"
],
"description": "Its title."
},
"course": {
"type": "object",
"required": [
"id",
"name",
"url"
],
"properties": {
"id": {
"type": [
"integer",
"null"
]
},
"url": {
"type": [
"string",
"null"
]
},
"name": {
"type": [
"string",
"null"
]
}
}
},
"number": {
"type": [
"integer",
"null"
],
"description": "Its place in its course."
},
"teacher": {
"type": [
"string",
"null"
],
"description": "The course's teacher or publisher."
},
"subjects": {
"type": "array",
"items": {
"type": "object",
"required": [
"subject",
"levels"
],
"properties": {
"levels": {
"type": "array",
"items": {
"type": [
"string",
"null"
]
}
},
"subject": {
"type": [
"string",
"null"
]
}
}
},
"description": "Its Subjects, each with its Levels."
},
"length_seconds": {
"type": [
"integer",
"null"
],
"description": "How long it is."
}
}
},
"summary": {
"type": [
"string",
"null"
],
"description": "One or two sentences on what it explains (as title)."
},
"play_url": {
"type": [
"string",
"null"
],
"description": "The lecture page, playing from this moment. Send the student here."
},
"questions": {
"type": "array",
"items": {
"type": [
"string",
"null"
]
},
"description": "Questions a student might ask that it answers (as title)."
},
"also_called": {
"type": "array",
"items": {
"type": [
"string",
"null"
]
},
"description": "Other names for its topic."
},
"end_seconds": {
"type": [
"integer",
"null"
],
"description": "Where its part of the lecture ends."
},
"start_seconds": {
"type": [
"integer",
"null"
],
"description": "Where it starts, in seconds from the lecture's start."
},
"thumbnail_url": {
"type": [
"string",
"null"
],
"description": "A picture of the lecture at about this moment."
}
},
"description": "A moment of a lecture: where it starts and ends, what it explains, and where to play it."
},
"description": "Its moments in order (without lecture: it is the one above)."
},
"attribution": {
"type": [
"string",
"null"
],
"description": "How to credit Bettyapp and the lecture's creator. Follow it."
}
}
}{
"title": "Get a lecture",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_topic — The best moment at each Level for a topic
A topic (photosynthesis, chain rule, supply and demand): the best moment on Bettyapp that explains it at each Level, from school to university, then a few more and related topics. Use it to give a student an explanation at their level, or an easier or a harder one. If Bettyapp has no page for the topic, try search_moments.
{
"type": "object",
"required": [
"topic"
],
"properties": {
"topic": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "The topic, in plain words."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"attribution",
"terms",
"topic",
"levels",
"more"
],
"properties": {
"more": {
"type": "array",
"items": {
"type": "object",
"required": [
"start_seconds",
"end_seconds",
"time",
"title",
"summary",
"questions",
"topics",
"excerpt",
"play_url",
"thumbnail_url",
"credit"
],
"properties": {
"time": {
"type": [
"string",
"null"
],
"description": "start_seconds as a clock (4:33)."
},
"title": {
"type": [
"string",
"null"
],
"description": "What it explains, in a few words (written with the help of an AI model and checked against the lecture)."
},
"credit": {
"type": [
"object",
"null"
],
"required": [
"line",
"creator",
"licence",
"transcript"
],
"properties": {
"line": {
"type": [
"string",
"null"
],
"description": "The credit line, as the lecture page shows it."
},
"creator": {
"type": [
"string",
"null"
],
"description": "Who made the lecture."
},
"licence": {
"type": [
"string",
"null"
],
"description": "The licence, for example CC BY-NC-SA 4.0."
},
"transcript": {
"enum": [
"full",
"short excerpts only"
],
"type": [
"string",
"null"
],
"description": "Whether the lecture page may show the whole transcript, or only short excerpts."
},
"creator_url": {
"type": [
"string",
"null"
],
"description": "The creator's own site."
},
"licence_url": {
"type": [
"string",
"null"
],
"description": "The licence's text."
},
"watch_at_source": {
"type": [
"string",
"null"
],
"description": "The lecture at its own source (YouTube, the publisher)."
}
},
"description": "Who made the lecture and its licence. Show line wherever the moment is linked."
},
"topics": {
"type": "array",
"items": {
"type": [
"string",
"null"
]
},
"description": "The topics explained there, most mentioned first."
},
"excerpt": {
"type": [
"string",
"null"
],
"description": "The teacher's words at its start: at most 300 characters, and as short as the lecture's licence asks (at most 40 words for lectures whose licence allows only short excerpts)."
},
"lecture": {
"type": "object",
"required": [
"id",
"title",
"url",
"course",
"teacher",
"subjects"
],
"properties": {
"id": {
"type": [
"integer",
"null"
],
"description": "The lecture's id."
},
"of": {
"type": [
"integer",
"null"
],
"description": "Lectures in its course with pages."
},
"url": {
"type": [
"string",
"null"
],
"description": "Its page on Bettyapp."
},
"title": {
"type": [
"string",
"null"
],
"description": "Its title."
},
"course": {
"type": "object",
"required": [
"id",
"name",
"url"
],
"properties": {
"id": {
"type": [
"integer",
"null"
]
},
"url": {
"type": [
"string",
"null"
]
},
"name": {
"type": [
"string",
"null"
]
}
}
},
"number": {
"type": [
"integer",
"null"
],
"description": "Its place in its course."
},
"teacher": {
"type": [
"string",
"null"
],
"description": "The course's teacher or publisher."
},
"subjects": {
"type": "array",
"items": {
"type": "object",
"required": [
"subject",
"levels"
],
"properties": {
"levels": {
"type": "array",
"items": {
"type": [
"string",
"null"
]
}
},
"subject": {
"type": [
"string",
"null"
]
}
}
},
"description": "Its Subjects, each with its Levels."
},
"length_seconds": {
"type": [
"integer",
"null"
],
"description": "How long it is."
}
}
},
"summary": {
"type": [
"string",
"null"
],
"description": "One or two sentences on what it explains (as title)."
},
"play_url": {
"type": [
"string",
"null"
],
"description": "The lecture page, playing from this moment. Send the student here."
},
"questions": {
"type": "array",
"items": {
"type": [
"string",
"null"
]
},
"description": "Questions a student might ask that it answers (as title)."
},
"also_called": {
"type": "array",
"items": {
"type": [
"string",
"null"
]
},
"description": "Other names for its topic."
},
"end_seconds": {
"type": [
"integer",
"null"
],
"description": "Where its part of the lecture ends."
},
"start_seconds": {
"type": [
"integer",
"null"
],
"description": "Where it starts, in seconds from the lecture's start."
},
"thumbnail_url": {
"type": [
"string",
"null"
],
"description": "A picture of the lecture at about this moment."
}
},
"description": "A moment of a lecture: where it starts and ends, what it explains, and where to play it."
},
"description": "More moments that explain it."
},
"terms": {
"type": [
"string",
"null"
],
"description": "The terms of use."
},
"topic": {
"type": "object",
"required": [
"name",
"url"
],
"properties": {
"url": {
"type": [
"string",
"null"
]
},
"name": {
"type": [
"string",
"null"
]
}
}
},
"levels": {
"type": "array",
"items": {
"type": "object",
"required": [
"level",
"moment"
],
"properties": {
"level": {
"type": [
"string",
"null"
]
},
"moment": {
"type": "object",
"required": [
"start_seconds",
"end_seconds",
"time",
"title",
"summary",
"questions",
"topics",
"excerpt",
"play_url",
"thumbnail_url",
"credit"
],
"properties": {
"time": {
"type": [
"string",
"null"
],
"description": "start_seconds as a clock (4:33)."
},
"title": {
"type": [
"string",
"null"
],
"description": "What it explains, in a few words (written with the help of an AI model and checked against the lecture)."
},
"credit": {
"type": [
"object",
"null"
],
"required": [
"line",
"creator",
"licence",
"transcript"
],
"properties": {
"line": {
"type": [
"string",
"null"
],
"description": "The credit line, as the lecture page shows it."
},
"creator": {
"type": [
"string",
"null"
],
"description": "Who made the lecture."
},
"licence": {
"type": [
"string",
"null"
],
"description": "The licence, for example CC BY-NC-SA 4.0."
},
"transcript": {
"enum": [
"full",
"short excerpts only"
],
"type": [
"string",
"null"
],
"description": "Whether the lecture page may show the whole transcript, or only short excerpts."
},
"creator_url": {
"type": [
"string",
"null"
],
"description": "The creator's own site."
},
"licence_url": {
"type": [
"string",
"null"
],
"description": "The licence's text."
},
"watch_at_source": {
"type": [
"string",
"null"
],
"description": "The lecture at its own source (YouTube, the publisher)."
}
},
"description": "Who made the lecture and its licence. Show line wherever the moment is linked."
},
"topics": {
"type": "array",
"items": {
"type": [
"string",
"null"
]
},
"description": "The topics explained there, most mentioned first."
},
"excerpt": {
"type": [
"string",
"null"
],
"description": "The teacher's words at its start: at most 300 characters, and as short as the lecture's licence asks (at most 40 words for lectures whose licence allows only short excerpts)."
},
"lecture": {
"type": "object",
"required": [
"id",
"title",
"url",
"course",
"teacher",
"subjects"
],
"properties": {
"id": {
"type": [
"integer",
"null"
],
"description": "The lecture's id."
},
"of": {
"type": [
"integer",
"null"
],
"description": "Lectures in its course with pages."
},
"url": {
"type": [
"string",
"null"
],
"description": "Its page on Bettyapp."
},
"title": {
"type": [
"string",
"null"
],
"description": "Its title."
},
"course": {
"type": "object",
"required": [
"id",
"name",
"url"
],
"properties": {
"id": {
"type": [
"integer",
"null"
]
},
"url": {
"type": [
"string",
"null"
]
},
"name": {
"type": [
"string",
"null"
]
}
}
},
"number": {
"type": [
"integer",
"null"
],
"description": "Its place in its course."
},
"teacher": {
"type": [
"string",
"null"
],
"description": "The course's teacher or publisher."
},
"subjects": {
"type": "array",
"items": {
"type": "object",
"required": [
"subject",
"levels"
],
"properties": {
"levels": {
"type": "array",
"items": {
"type": [
"string",
"null"
]
}
},
"subject": {
"type": [
"string",
"null"
]
}
}
},
"description": "Its Subjects, each with its Levels."
},
"length_seconds": {
"type": [
"integer",
"null"
],
"description": "How long it is."
}
}
},
"summary": {
"type": [
"string",
"null"
],
"description": "One or two sentences on what it explains (as title)."
},
"play_url": {
"type": [
"string",
"null"
],
"description": "The lecture page, playing from this moment. Send the student here."
},
"questions": {
"type": "array",
"items": {
"type": [
"string",
"null"
]
},
"description": "Questions a student might ask that it answers (as title)."
},
"also_called": {
"type": "array",
"items": {
"type": [
"string",
"null"
]
},
"description": "Other names for its topic."
},
"end_seconds": {
"type": [
"integer",
"null"
],
"description": "Where its part of the lecture ends."
},
"start_seconds": {
"type": [
"integer",
"null"
],
"description": "Where it starts, in seconds from the lecture's start."
},
"thumbnail_url": {
"type": [
"string",
"null"
],
"description": "A picture of the lecture at about this moment."
}
},
"description": "A moment of a lecture: where it starts and ends, what it explains, and where to play it."
}
}
},
"description": "The best moment at each Level, lowest Level first."
},
"attribution": {
"type": [
"string",
"null"
],
"description": "How to credit Bettyapp and the lecture's creator. Follow it."
},
"related_topics": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"url"
],
"properties": {
"url": {
"type": [
"string",
"null"
]
},
"name": {
"type": [
"string",
"null"
]
}
}
},
"description": "Topics related to it."
}
}
}{
"title": "Get a topic",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}list_subjects — The Subjects and Levels
Every Subject with lectures on Bettyapp, each with its Levels and how many lectures it has, and the Level ladder from Elementary to Graduate & Professional. Use it to find the subject and level values for search_moments, or to tell a student what Bettyapp covers.
{
"type": "object",
"properties": {},
"additionalProperties": false
}{
"type": "object",
"required": [
"attribution",
"terms",
"subjects",
"levels"
],
"properties": {
"terms": {
"type": [
"string",
"null"
],
"description": "The terms of use."
},
"levels": {
"type": "array",
"items": {
"type": "object",
"required": [
"code",
"name",
"lectures"
],
"properties": {
"code": {
"type": [
"string",
"null"
]
},
"name": {
"type": [
"string",
"null"
]
},
"slug": {
"type": [
"string",
"null"
]
},
"lectures": {
"type": [
"integer",
"null"
]
}
}
}
},
"subjects": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"slug",
"lectures",
"levels"
],
"properties": {
"url": {
"type": [
"string",
"null"
],
"description": "The Subject's page, where it has one."
},
"name": {
"type": [
"string",
"null"
]
},
"slug": {
"type": [
"string",
"null"
]
},
"levels": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"code",
"lectures"
],
"properties": {
"url": {
"type": [
"string",
"null"
]
},
"code": {
"type": [
"string",
"null"
]
},
"name": {
"type": [
"string",
"null"
]
},
"lectures": {
"type": [
"integer",
"null"
]
}
}
}
},
"courses": {
"type": [
"integer",
"null"
]
},
"lectures": {
"type": [
"integer",
"null"
]
}
}
}
},
"attribution": {
"type": [
"string",
"null"
],
"description": "How to credit Bettyapp and the lecture's creator. Follow it."
}
}
}{
"title": "List Subjects and Levels",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}search — Search Bettyapp's lecture moments
Search Bettyapp's university and school lectures for the moments that explain a topic or question. Returns results, best first, each with an id for fetch, a title and the url that opens the lecture at that moment. For a student, search_moments gives more (the summary, teacher and credit line). No results: Bettyapp has no lecture on it.
{
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"maxLength": 300,
"minLength": 1,
"description": "The topic or question, in plain words."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"results"
],
"properties": {
"results": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"title",
"url"
],
"properties": {
"id": {
"type": "string",
"description": "The moment, for fetch: \"<lecture id>@<second>\"."
},
"url": {
"type": "string",
"description": "The lecture page, playing from this moment."
},
"title": {
"type": "string",
"description": "What the moment explains, its lecture and where it starts."
}
}
},
"description": "The moments, best first. Empty: Bettyapp has no lecture on it."
}
}
}{
"title": "Search lecture moments",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}fetch — One lecture moment in full
One result of search by its id ("<lecture id>@<second>"), or a lecture by its id or the address of its page: the moment's title, summary, the questions it answers and the teacher's words at its start, its lecture and credit line, and the url that plays from it.
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"maxLength": 500,
"minLength": 1,
"description": "A search result's id, a lecture's id, or a Bettyapp lecture address."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"id",
"title",
"text",
"url"
],
"properties": {
"id": {
"type": "string"
},
"url": {
"type": "string",
"description": "The lecture page, playing from the moment."
},
"text": {
"type": "string",
"description": "The moment (or the lecture and its moments) in words, with the credit line."
},
"title": {
"type": "string"
},
"metadata": {
"type": "object",
"additionalProperties": {
"type": [
"string",
"null"
]
}
}
}
}{
"title": "Fetch a lecture moment",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
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
- 880 ms
- 95th percentile latency
- 880 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 880 ms · metadata changed · 6 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http bettyapp-mcp https://bettyapp.org/mcpCodex
codex mcp add bettyapp-mcp --url https://bettyapp.org/mcpCursor
{
"mcpServers": {
"bettyapp-mcp": {
"url": "https://bettyapp.org/mcp"
}
}
}Cline
{
"mcpServers": {
"bettyapp-mcp": {
"type": "streamableHttp",
"url": "https://bettyapp.org/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"bettyapp-mcp": {
"type": "http",
"url": "https://bettyapp.org/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http bettyapp-mcp https://bettyapp.org/mcpClaude Desktop
{
"mcpServers": {
"bettyapp-mcp": {
"url": "https://bettyapp.org/mcp"
}
}
}Windsurf
{
"mcpServers": {
"bettyapp-mcp": {
"serverUrl": "https://bettyapp.org/mcp"
}
}
}Let your agent find its tools
Find servers like Bettyapp MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other productivity and knowledge servers
Do you run Bettyapp MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.