Skip to main content
Glama

Bettyapp lecture moments

Server Details

Find the moments in university and school lectures that explain a topic, with links to play them.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.9/5.0

Scored across 6 tools

Disambiguation3/5

Most tools have distinct roles, but search and search_moments overlap heavily: both find moments by topic/question, with search_moments described as a richer variant. fetch also appears to handle both moment IDs and lecture IDs/pages, which partially overlaps get_lecture.

Naming Consistency4/5

The set mostly follows a readable verb_noun pattern: get_lecture, get_topic, list_subjects, search_moments. The bare verbs fetch and search are minor deviations, though search vs search_moments introduces some naming ambiguity.

Tool Count5/5

Six tools is well within the appropriate range for a focused read-only lecture/moment lookup server. The surface is compact and purpose-specific, even if one search tool may be redundant.

Completeness4/5

Core workflows are covered: search for moments, fetch a moment, get a lecture, get topic explanations, and list subjects. Minor gaps remain, such as no clearly described subject/level-filtered search despite list_subjects implying those values are used for search_moments, and no teacher/course browsing.

Available Tools

6 tools
fetchOne lecture moment in fullA
Read-onlyIdempotent
Inspect

One result of search by its id ("@"), 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.

NameRequiredDescriptionDefault
idYesA search result's id, a lecture's id, or a Bettyapp lecture address.

Output Schema

NameRequiredDescription
idYes
urlYesThe lecture page, playing from the moment.
textYesThe moment (or the lecture and its moments) in words, with the credit line.
titleYes
metadataNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so safety is covered. The description contributes some behavioral context by naming what portion of a lecture is returned (only words 'at its start', not the full transcript), but says nothing about cost, permissions, or what happens with a malformed id. With annotations carrying the safety profile, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single sentence with no filler, but it is syntactically tangled — a colon-introduced list of return fields embedded in a disjunction about id types. The most decision-relevant fact (a moment id is '<lecture id>@<second>') is buried mid-sentence rather than front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With one required parameter, full schema coverage, complete annotations, and an output schema to describe return values, the description covers what the agent still needs: which id forms are accepted and roughly what a moment record contains. Nothing required to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single id parameter, so the baseline is 3. The description earns an extra point by revealing the concrete moment-id format '<lecture id>@<second>', which the schema does not spell out, and by restating that a page address is also acceptable.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description makes clear this returns a single lecture moment (or a whole lecture) with its title, summary, answered questions, opening transcript, lecture/credit line, and playback URL. That is a specific resource with an enumerated payload, well beyond the generic name 'fetch'. It stops short of a 5 because it never distinguishes itself from the sibling get_lecture, even though it explicitly accepts a lecture id as input.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: 'One result of search by its id' hints that this is the follow-up to a search call, but no sentence says when to prefer this over search_moments, get_lecture, or get_topic. There are no exclusions or prerequisites stated, leaving the agent to infer the routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_lectureA lecture and all its momentsA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
urlNoOr the lecture page's address (https://bettyapp.org/lectures/...).
lecture_idNoThe lecture's id.

Output Schema

NameRequiredDescription
termsYesThe terms of use.
lectureYes
momentsYesIts moments in order (without lecture: it is the one above).
attributionYesHow to credit Bettyapp and the lecture's creator. Follow it.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, non-destructive, closed-world behavior. The description adds that lookup can be by lecture id or page URL and that moments are returned in order with play_url, though it omits auth, error, and pagination behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, with the core retrieval purpose front-loaded and the return contents and use cases following efficiently. The density is justified by the amount of useful information conveyed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The output schema exists, parameters are fully documented, and annotations cover the safety profile. The description adds retrieval contexts and ordering semantics, leaving no major ambiguity for an agent calling this read-only tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is already high. The description adds useful meaning by tying lecture_id to lecture.id in a moment and confirming url is the lecture page address.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific retrieval action for a lecture, identifiable by id or page URL, and enumerates the returned fields and ordered moments. It is clear against generic siblings, though it does not explicitly name alternatives such as fetch or search_moments.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives two concrete use cases: giving a student more of the lecture a moment came from, or reading a lecture link the student sent. It lacks explicit when-not guidance or named alternatives, so it stops short of full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_topicThe best moment at each Level for a topicA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
topicYesThe topic, in plain words.

Output Schema

NameRequiredDescription
moreYesMore moments that explain it.
termsYesThe terms of use.
topicYes
levelsYesThe best moment at each Level, lowest Level first.
attributionYesHow to credit Bettyapp and the lecture's creator. Follow it.
related_topicsNoTopics related to it.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly, idempotent, non-destructive and closed-world, so the safety bar is low; the description still adds real value by disclosing the return shape (one best moment per Level, plus extras and related topics) and the empty-result behavior that triggers the fallback. It doesn't discuss coverage depth or what 'Level' means precisely, which keeps it below a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose is front-loaded, but the middle sentence is garbled ('from school to university, then a few more and related topics') and costs the reader a re-read. The fallback hint is well placed at the end; overall it's usable but not tight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With one required parameter, a 100% covered schema, an output schema, and rich annotations, the description only needs to explain intent and return shape — both of which it does, plus the not-found path. The ambiguity around what a 'Level' is and what 'a few more' means is the only remaining gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already says 'The topic, in plain words,' so the baseline would be 3. The description earns an extra point by supplying example topics (photosynthesis, chain rule, supply and demand) that clarify the expected granularity and the school-to-university breadth of acceptable input for this free-text parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource (a topic) and states what comes back: the best moment at each Level plus related topics, with concrete topic examples. It is recognizable against siblings, and explicitly points to search_moments as the fallback, though it never contrasts with get_lecture or search, so the distinction from those remains implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear use case ('give a student an explanation at their level, or an easier or a harder one') and an explicit negative condition with an alternative ('If Bettyapp has no page for the topic, try search_moments'). It stops short of a full 5 because it doesn't say when to prefer get_lecture or plain search over this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_subjectsThe Subjects and LevelsA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
termsYesThe terms of use.
levelsYes
subjectsYes
attributionYesHow to credit Bettyapp and the lecture's creator. Follow it.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint=false, so the safety profile is covered. The description adds genuine content context by describing exactly what the response contains (subjects, their levels, lecture counts, level ladder) and that it is a static reference listing; it does not mention result size or pagination, but with an output schema present that is a minor gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with what is returned and followed by when to use it. The first sentence is somewhat dense and stacks multiple payload elements, but nothing is redundant or wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters, strong annotations, and an output schema covering return shape, the description supplies everything else an agent needs: what the listing contains, why it exists, and which sibling consumes its values. Nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4 and there is nothing for the description to clarify. The description correctly implies a no-argument, full-catalog call rather than a filtered query.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb-and-resource: it enumerates every Subject with lectures on Bettyapp, each with its Levels and lecture counts, plus the Elementary-to-Graduate level ladder. An agent can immediately distinguish this catalog/listing tool from siblings like get_lecture, get_topic, and search_moments.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names two concrete use cases: sourcing subject/level values for search_moments, and answering 'what does Bettyapp cover'. That gives clear routing context, though it stops short of stating when not to use it or naming any other alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_momentsFind lecture moments that explain a topic or questionA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
levelNoOnly lectures at this Level: a code from list_subjects' levels (high_school, university_year1 ...) or its name. Leave it out for every Level.
limitNoHow many moments, 1 to 10.
queryYesThe topic or the student's question, in plain words, for example "why does ice float" or "integration by parts".
subjectNoOnly lectures in this Subject: a name from list_subjects (for example Chemistry). Leave it out to search every Subject.

Output Schema

NameRequiredDescription
levelNoThe Level searched at.
queryYesThe words searched for, as sent.
termsYesThe terms of use.
messageNoSaid when there are no moments.
momentsYesThe moments, best first. Empty: Bettyapp has nothing on it.
subjectNoThe Subject searched in.
attributionYesHow to credit Bettyapp and the lecture's creator. Follow it.
searched_forNoThe words searched for when a misspelt word was corrected.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, and the description adds behavior the annotations cannot: results are ordered best-first, each moment carries a play_url that deep-links into the lecture, and an empty response specifically means Bettyapp has no lecture on the topic rather than the topic not existing. That is real operational context for interpreting output.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Five tight sentences with no filler: purpose first, then the usage trigger, then output handling, then ordering, then empty-result semantics. Every sentence carries actionable information for the calling agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present the description need not document return fields, yet it still surfaces the critical ones (play_url, lecture title, teacher, credit line) and the ordering guarantee. Combined with full schema coverage and clear annotations, nothing needed to call this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so `level`, `subject`, `limit` and `query` are all documented in the schema itself. The description adds only an implicit hint about limit ('give the student the best one or two') and nothing about level/subject values, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — finding moments within Bettyapp's university and school lectures that explain a topic or answer a question — and scopes it to real lecture excerpts, which separates it from the generic `search` and from `get_lecture`/`get_topic` that return whole objects. An agent knows exactly what kind of artifact comes back.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear trigger: '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.' It also covers the negative case (empty results mean no lecture exists). It stops short of naming when to prefer the sibling `search` or `get_topic` instead, so it is clear but not fully routing.

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.

  1. 6 tool updates
    • Addedfetch
    • Changedget_lecture1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "attribution": {
        +      "description": "How to credit Bettyapp and the lecture's creator. Follow it.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "lecture": {
        +      "allOf": [
        +        {
        +          "properties": {
        +            "course": {
        +              "properties": {
        +                "id": {
        +                  "type": [
        +                    "integer",
        +                    "null"
        +                  ]
        +                },
        +                "name": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "url": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                }
        +              },
        +              "required": [
        +                "id",
        +                "name",
        +                "url"
        +              ],
        +              "type": "object"
        +            },
        +            "id": {
        +              "description": "The lecture's id.",
        +              "type": [
        +                "integer",
        +                "null"
        +              ]
        +            },
        +            "length_seconds": {
        +              "description": "How long it is.",
        +              "type": [
        +                "integer",
        +                "null"
        +              ]
        +            },
        +            "number": {
        +              "description": "Its place in its course.",
        +              "type": [
        +                "integer",
        +                "null"
        +              ]
        +            },
        +            "of": {
        +              "description": "Lectures in its course with pages.",
        +              "type": [
        +                "integer",
        +                "null"
        +              ]
        +            },
        +            "subjects": {
        +              "description": "Its Subjects, each with its Levels.",
        +              "items": {
        +                "properties": {
        +                  "levels": {
        +                    "items": {
        +                      "type": [
        +                        "string",
        +                        "null"
        +                      ]
        +                    },
        +                    "type": "array"
        +                  },
        +                  "subject": {
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  }
        +                },
        +                "required": [
        +                  "subject",
        +                  "levels"
        +                ],
        +                "type": "object"
        +              },
        +              "type": "array"
        +            },
        +            "teacher": {
        +              "description": "The course's teacher or publisher.",
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "title": {
        +              "description": "Its title.",
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "url": {
        +              "description": "Its page on Bettyapp.",
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "title",
        +            "url",
        +            "course",
        +            "teacher",
        +            "subjects"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "properties": {
        +            "credit": {
        +              "description": "Who made the lecture and its licence. Show line wherever the moment is linked.",
        +              "properties": {
        +                "creator": {
        +                  "description": "Who made the lecture.",
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "creator_url": {
        +                  "description": "The creator's own site.",
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "licence": {
        +                  "description": "The licence, for example CC BY-NC-SA 4.0.",
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "licence_url": {
        +                  "description": "The licence's text.",
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "line": {
        +                  "description": "The credit line, as the lecture page shows it.",
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "transcript": {
        +                  "description": "Whether the lecture page may show the whole transcript, or only short excerpts.",
        +                  "enum": [
        +                    "full",
        +                    "short excerpts only"
        +                  ],
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "watch_at_source": {
        +                  "description": "The lecture at its own source (YouTube, the publisher).",
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                }
        +              },
        +              "required": [
        +                "line",
        +                "creator",
        +                "licence",
        +                "transcript"
        +              ],
        +              "type": [
        +                "object",
        +                "null"
        +              ]
        +            }
        +          },
        +          "type": "object"
        +        }
        +      ]
        +    },
        +    "moments": {
        +      "description": "Its moments in order (without lecture: it is the one above).",
        +      "items": {
        +        "description": "A moment of a lecture: where it starts and ends, what it explains, and where to play it.",
        +        "properties": {
        +          "also_called": {
        +            "description": "Other names for its topic.",
        +            "items": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "type": "array"
        +          },
        +          "credit": {
        +            "description": "Who made the lecture and its licence. Show line wherever the moment is linked.",
        +            "properties": {
        +              "creator": {
        +                "description": "Who made the lecture.",
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "creator_url": {
        +                "description": "The creator's own site.",
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "licence": {
        +                "description": "The licence, for example CC BY-NC-SA 4.0.",
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "licence_url": {
        +                "description": "The licence's text.",
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "line": {
        +                "description": "The credit line, as the lecture page shows it.",
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "transcript": {
        +                "description": "Whether the lecture page may show the whole transcript, or only short excerpts.",
        +                "enum": [
        +                  "full",
        +                  "short excerpts only"
        +                ],
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "watch_at_source": {
        +                "description": "The lecture at its own source (YouTube, the publisher).",
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "line",
        +              "creator",
        +              "licence",
        +              "transcript"
        +            ],
        +            "type": [
        +              "object",
        +              "null"
        +            ]
        +          },
        +          "end_seconds": {
        +            "description": "Where its part of the lecture ends.",
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "excerpt": {
        +            "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).",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "lecture": {
        +            "properties": {
        +              "course": {
        +                "properties": {
        +                  "id": {
        +                    "type": [
        +                      "integer",
        +                      "null"
        +                    ]
        +                  },
        +                  "name": {
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  },
        +                  "url": {
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  }
        +                },
        +                "required": [
        +                  "id",
        +                  "name",
        +                  "url"
        +                ],
        +                "type": "object"
        +              },
        +              "id": {
        +                "description": "The lecture's id.",
        +                "type": [
        +                  "integer",
        +                  "null"
        +                ]
        +              },
        +              "length_seconds": {
        +                "description": "How long it is.",
        +                "type": [
        +                  "integer",
        +                  "null"
        +                ]
        +              },
        +              "number": {
        +                "description": "Its place in its course.",
        +                "type": [
        +                  "integer",
        +                  "null"
        +                ]
        +              },
        +              "of": {
        +                "description": "Lectures in its course with pages.",
        +                "type": [
        +                  "integer",
        +                  "null"
        +                ]
        +              },
        +              "subjects": {
        +                "description": "Its Subjects, each with its Levels.",
        +                "items": {
        +                  "properties": {
        +                    "levels": {
        +                      "items": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "type": "array"
        +                    },
        +                    "subject": {
        +                      "type": [
        +                        "string",
        +                        "null"
        +                      ]
        +                    }
        +                  },
        +                  "required": [
        +                    "subject",
        +                    "levels"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "teacher": {
        +                "description": "The course's teacher or publisher.",
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "title": {
        +                "description": "Its title.",
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "url": {
        +                "description": "Its page on Bettyapp.",
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "id",
        +              "title",
        +              "url",
        +              "course",
        +              "teacher",
        +              "subjects"
        +            ],
        +            "type": "object"
        +          },
        +          "play_url": {
        +            "description": "The lecture page, playing from this moment. Send the student here.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "questions": {
        +            "description": "Questions a student might ask that it answers (as title).",
        +            "items": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "type": "array"
        +          },
        +          "start_seconds": {
        +            "description": "Where it starts, in seconds from the lecture's start.",
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "summary": {
        +            "description": "One or two sentences on what it explains (as title).",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "thumbnail_url": {
        +            "description": "A picture of the lecture at about this moment.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "time": {
        +            "description": "start_seconds as a clock (4:33).",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "title": {
        +            "description": "What it explains, in a few words (written with the help of an AI model and checked against the lecture).",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "topics": {
        +            "description": "The topics explained there, most mentioned first.",
        +            "items": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "start_seconds",
        +          "end_seconds",
        +          "time",
        +          "title",
        +          "summary",
        +          "questions",
        +          "topics",
        +          "excerpt",
        +          "play_url",
        +          "thumbnail_url",
        +          "credit"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "terms": {
        +      "description": "The terms of use.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "attribution",
        +    "terms",
        +    "lecture",
        +    "moments"
        +  ],
        +  "type": "object"
        +}
    • Changedget_topic1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "attribution": {
        +      "description": "How to credit Bettyapp and the lecture's creator. Follow it.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "levels": {
        +      "description": "The best moment at each Level, lowest Level first.",
        +      "items": {
        +        "properties": {
        +          "level": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "moment": {
        +            "description": "A moment of a lecture: where it starts and ends, what it explains, and where to play it.",
        +            "properties": {
        +              "also_called": {
        +                "description": "Other names for its topic.",
        +                "items": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "type": "array"
        +              },
        +              "credit": {
        +                "description": "Who made the lecture and its licence. Show line wherever the moment is linked.",
        +                "properties": {
        +                  "creator": {
        +                    "description": "Who made the lecture.",
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  },
        +                  "creator_url": {
        +                    "description": "The creator's own site.",
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  },
        +                  "licence": {
        +                    "description": "The licence, for example CC BY-NC-SA 4.0.",
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  },
        +                  "licence_url": {
        +                    "description": "The licence's text.",
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  },
        +                  "line": {
        +                    "description": "The credit line, as the lecture page shows it.",
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  },
        +                  "transcript": {
        +                    "description": "Whether the lecture page may show the whole transcript, or only short excerpts.",
        +                    "enum": [
        +                      "full",
        +                      "short excerpts only"
        +                    ],
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  },
        +                  "watch_at_source": {
        +                    "description": "The lecture at its own source (YouTube, the publisher).",
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  }
        +                },
        +                "required": [
        +                  "line",
        +                  "creator",
        +                  "licence",
        +                  "transcript"
        +                ],
        +                "type": [
        +                  "object",
        +                  "null"
        +                ]
        +              },
        +              "end_seconds": {
        +                "description": "Where its part of the lecture ends.",
        +                "type": [
        +                  "integer",
        +                  "null"
        +                ]
        +              },
        +              "excerpt": {
        +                "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).",
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "lecture": {
        +                "properties": {
        +                  "course": {
        +                    "properties": {
        +                      "id": {
        +                        "type": [
        +                          "integer",
        +                          "null"
        +                        ]
        +                      },
        +                      "name": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "url": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      }
        +                    },
        +                    "required": [
        +                      "id",
        +                      "name",
        +                      "url"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "id": {
        +                    "description": "The lecture's id.",
        +                    "type": [
        +                      "integer",
        +                      "null"
        +                    ]
        +                  },
        +                  "length_seconds": {
        +                    "description": "How long it is.",
        +                    "type": [
        +                      "integer",
        +                      "null"
        +                    ]
        +                  },
        +                  "number": {
        +                    "description": "Its place in its course.",
        +                    "type": [
        +                      "integer",
        +                      "null"
        +                    ]
        +                  },
        +                  "of": {
        +                    "description": "Lectures in its course with pages.",
        +                    "type": [
        +                      "integer",
        +                      "null"
        +                    ]
        +                  },
        +                  "subjects": {
        +                    "description": "Its Subjects, each with its Levels.",
        +                    "items": {
        +                      "properties": {
        +                        "levels": {
        +                          "items": {
        +                            "type": [
        +                              "string",
        +                              "null"
        +                            ]
        +                          },
        +                          "type": "array"
        +                        },
        +                        "subject": {
        +                          "type": [
        +                            "string",
        +                            "null"
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "subject",
        +                        "levels"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "teacher": {
        +                    "description": "The course's teacher or publisher.",
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  },
        +                  "title": {
        +                    "description": "Its title.",
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  },
        +                  "url": {
        +                    "description": "Its page on Bettyapp.",
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  }
        +                },
        +                "required": [
        +                  "id",
        +                  "title",
        +                  "url",
        +                  "course",
        +                  "teacher",
        +                  "subjects"
        +                ],
        +                "type": "object"
        +              },
        +              "play_url": {
        +                "description": "The lecture page, playing from this moment. Send the student here.",
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "questions": {
        +                "description": "Questions a student might ask that it answers (as title).",
        +                "items": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "type": "array"
        +              },
        +              "start_seconds": {
        +                "description": "Where it starts, in seconds from the lecture's start.",
        +                "type": [
        +                  "integer",
        +                  "null"
        +                ]
        +              },
        +              "summary": {
        +                "description": "One or two sentences on what it explains (as title).",
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "thumbnail_url": {
        +                "description": "A picture of the lecture at about this moment.",
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "time": {
        +                "description": "start_seconds as a clock (4:33).",
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "title": {
        +                "description": "What it explains, in a few words (written with the help of an AI model and checked against the lecture).",
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "topics": {
        +                "description": "The topics explained there, most mentioned first.",
        +                "items": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "start_seconds",
        +              "end_seconds",
        +              "time",
        +              "title",
        +              "summary",
        +              "questions",
        +              "topics",
        +              "excerpt",
        +              "play_url",
        +              "thumbnail_url",
        +              "credit"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "level",
        +          "moment"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "more": {
        +      "description": "More moments that explain it.",
        +      "items": {
        +        "description": "A moment of a lecture: where it starts and ends, what it explains, and where to play it.",
        +        "properties": {
        +          "also_called": {
        +            "description": "Other names for its topic.",
        +            "items": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "type": "array"
        +          },
        +          "credit": {
        +            "description": "Who made the lecture and its licence. Show line wherever the moment is linked.",
        +            "properties": {
        +              "creator": {
        +                "description": "Who made the lecture.",
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "creator_url": {
        +                "description": "The creator's own site.",
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "licence": {
        +                "description": "The licence, for example CC BY-NC-SA 4.0.",
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "licence_url": {
        +                "description": "The licence's text.",
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "line": {
        +                "description": "The credit line, as the lecture page shows it.",
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "transcript": {
        +                "description": "Whether the lecture page may show the whole transcript, or only short excerpts.",
        +                "enum": [
        +                  "full",
        +                  "short excerpts only"
        +                ],
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "watch_at_source": {
        +                "description": "The lecture at its own source (YouTube, the publisher).",
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "line",
        +              "creator",
        +              "licence",
        +              "transcript"
        +            ],
        +            "type": [
        +              "object",
        +              "null"
        +            ]
        +          },
        +          "end_seconds": {
        +            "description": "Where its part of the lecture ends.",
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "excerpt": {
        +            "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).",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "lecture": {
        +            "properties": {
        +              "course": {
        +                "properties": {
        +                  "id": {
        +                    "type": [
        +                      "integer",
        +                      "null"
        +                    ]
        +                  },
        +                  "name": {
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  },
        +                  "url": {
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  }
        +                },
        +                "required": [
        +                  "id",
        +                  "name",
        +                  "url"
        +                ],
        +                "type": "object"
        +              },
        +              "id": {
        +                "description": "The lecture's id.",
        +                "type": [
        +                  "integer",
        +                  "null"
        +                ]
        +              },
        +              "length_seconds": {
        +                "description": "How long it is.",
        +                "type": [
        +                  "integer",
        +                  "null"
        +                ]
        +              },
        +              "number": {
        +                "description": "Its place in its course.",
        +                "type": [
        +                  "integer",
        +                  "null"
        +                ]
        +              },
        +              "of": {
        +                "description": "Lectures in its course with pages.",
        +                "type": [
        +                  "integer",
        +                  "null"
        +                ]
        +              },
        +              "subjects": {
        +                "description": "Its Subjects, each with its Levels.",
        +                "items": {
        +                  "properties": {
        +                    "levels": {
        +                      "items": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "type": "array"
        +                    },
        +                    "subject": {
        +                      "type": [
        +                        "string",
        +                        "null"
        +                      ]
        +                    }
        +                  },
        +                  "required": [
        +                    "subject",
        +                    "levels"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "teacher": {
        +                "description": "The course's teacher or publisher.",
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "title": {
        +                "description": "Its title.",
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "url": {
        +                "description": "Its page on Bettyapp.",
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "id",
        +              "title",
        +              "url",
        +              "course",
        +              "teacher",
        +              "subjects"
        +            ],
        +            "type": "object"
        +          },
        +          "play_url": {
        +            "description": "The lecture page, playing from this moment. Send the student here.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "questions": {
        +            "description": "Questions a student might ask that it answers (as title).",
        +            "items": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "type": "array"
        +          },
        +          "start_seconds": {
        +            "description": "Where it starts, in seconds from the lecture's start.",
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "summary": {
        +            "description": "One or two sentences on what it explains (as title).",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "thumbnail_url": {
        +            "description": "A picture of the lecture at about this moment.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "time": {
        +            "description": "start_seconds as a clock (4:33).",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "title": {
        +            "description": "What it explains, in a few words (written with the help of an AI model and checked against the lecture).",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "topics": {
        +            "description": "The topics explained there, most mentioned first.",
        +            "items": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "start_seconds",
        +          "end_seconds",
        +          "time",
        +          "title",
        +          "summary",
        +          "questions",
        +          "topics",
        +          "excerpt",
        +          "play_url",
        +          "thumbnail_url",
        +          "credit"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "related_topics": {
        +      "description": "Topics related to it.",
        +      "items": {
        +        "properties": {
        +          "name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "url": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "url"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "terms": {
        +      "description": "The terms of use.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "topic": {
        +      "properties": {
        +        "name": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "url": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        }
        +      },
        +      "required": [
        +        "name",
        +        "url"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "attribution",
        +    "terms",
        +    "topic",
        +    "levels",
        +    "more"
        +  ],
        +  "type": "object"
        +}
    • Changedlist_subjects1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "attribution": {
        +      "description": "How to credit Bettyapp and the lecture's creator. Follow it.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "levels": {
        +      "items": {
        +        "properties": {
        +          "code": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "lectures": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "slug": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "name",
        +          "lectures"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "subjects": {
        +      "items": {
        +        "properties": {
        +          "courses": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "lectures": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "levels": {
        +            "items": {
        +              "properties": {
        +                "code": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "lectures": {
        +                  "type": [
        +                    "integer",
        +                    "null"
        +                  ]
        +                },
        +                "name": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "url": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                }
        +              },
        +              "required": [
        +                "name",
        +                "code",
        +                "lectures"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "slug": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "url": {
        +            "description": "The Subject's page, where it has one.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "slug",
        +          "lectures",
        +          "levels"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "terms": {
        +      "description": "The terms of use.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "attribution",
        +    "terms",
        +    "subjects",
        +    "levels"
        +  ],
        +  "type": "object"
        +}
    • Addedsearch
    • Changedsearch_moments1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "attribution": {
        +      "description": "How to credit Bettyapp and the lecture's creator. Follow it.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "level": {
        +      "description": "The Level searched at.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "message": {
        +      "description": "Said when there are no moments.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "moments": {
        +      "description": "The moments, best first. Empty: Bettyapp has nothing on it.",
        +      "items": {
        +        "description": "A moment of a lecture: where it starts and ends, what it explains, and where to play it.",
        +        "properties": {
        +          "also_called": {
        +            "description": "Other names for its topic.",
        +            "items": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "type": "array"
        +          },
        +          "credit": {
        +            "description": "Who made the lecture and its licence. Show line wherever the moment is linked.",
        +            "properties": {
        +              "creator": {
        +                "description": "Who made the lecture.",
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "creator_url": {
        +                "description": "The creator's own site.",
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "licence": {
        +                "description": "The licence, for example CC BY-NC-SA 4.0.",
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "licence_url": {
        +                "description": "The licence's text.",
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "line": {
        +                "description": "The credit line, as the lecture page shows it.",
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "transcript": {
        +                "description": "Whether the lecture page may show the whole transcript, or only short excerpts.",
        +                "enum": [
        +                  "full",
        +                  "short excerpts only"
        +                ],
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "watch_at_source": {
        +                "description": "The lecture at its own source (YouTube, the publisher).",
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "line",
        +              "creator",
        +              "licence",
        +              "transcript"
        +            ],
        +            "type": [
        +              "object",
        +              "null"
        +            ]
        +          },
        +          "end_seconds": {
        +            "description": "Where its part of the lecture ends.",
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "excerpt": {
        +            "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).",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "lecture": {
        +            "properties": {
        +              "course": {
        +                "properties": {
        +                  "id": {
        +                    "type": [
        +                      "integer",
        +                      "null"
        +                    ]
        +                  },
        +                  "name": {
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  },
        +                  "url": {
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  }
        +                },
        +                "required": [
        +                  "id",
        +                  "name",
        +                  "url"
        +                ],
        +                "type": "object"
        +              },
        +              "id": {
        +                "description": "The lecture's id.",
        +                "type": [
        +                  "integer",
        +                  "null"
        +                ]
        +              },
        +              "length_seconds": {
        +                "description": "How long it is.",
        +                "type": [
        +                  "integer",
        +                  "null"
        +                ]
        +              },
        +              "number": {
        +                "description": "Its place in its course.",
        +                "type": [
        +                  "integer",
        +                  "null"
        +                ]
        +              },
        +              "of": {
        +                "description": "Lectures in its course with pages.",
        +                "type": [
        +                  "integer",
        +                  "null"
        +                ]
        +              },
        +              "subjects": {
        +                "description": "Its Subjects, each with its Levels.",
        +                "items": {
        +                  "properties": {
        +                    "levels": {
        +                      "items": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "type": "array"
        +                    },
        +                    "subject": {
        +                      "type": [
        +                        "string",
        +                        "null"
        +                      ]
        +                    }
        +                  },
        +                  "required": [
        +                    "subject",
        +                    "levels"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "teacher": {
        +                "description": "The course's teacher or publisher.",
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "title": {
        +                "description": "Its title.",
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "url": {
        +                "description": "Its page on Bettyapp.",
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "id",
        +              "title",
        +              "url",
        +              "course",
        +              "teacher",
        +              "subjects"
        +            ],
        +            "type": "object"
        +          },
        +          "play_url": {
        +            "description": "The lecture page, playing from this moment. Send the student here.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "questions": {
        +            "description": "Questions a student might ask that it answers (as title).",
        +            "items": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "type": "array"
        +          },
        +          "start_seconds": {
        +            "description": "Where it starts, in seconds from the lecture's start.",
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "summary": {
        +            "description": "One or two sentences on what it explains (as title).",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "thumbnail_url": {
        +            "description": "A picture of the lecture at about this moment.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "time": {
        +            "description": "start_seconds as a clock (4:33).",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "title": {
        +            "description": "What it explains, in a few words (written with the help of an AI model and checked against the lecture).",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "topics": {
        +            "description": "The topics explained there, most mentioned first.",
        +            "items": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "start_seconds",
        +          "end_seconds",
        +          "time",
        +          "title",
        +          "summary",
        +          "questions",
        +          "topics",
        +          "excerpt",
        +          "play_url",
        +          "thumbnail_url",
        +          "credit"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "query": {
        +      "description": "The words searched for, as sent.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "searched_for": {
        +      "description": "The words searched for when a misspelt word was corrected.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "subject": {
        +      "description": "The Subject searched in.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "terms": {
        +      "description": "The terms of use.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "attribution",
        +    "terms",
        +    "query",
        +    "moments"
        +  ],
        +  "type": "object"
        +}
  2. 4 tool updates
    • First observedget_lecture
    • First observedget_topic
    • First observedlist_subjects
    • First observedsearch_moments

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables semantic search over transcribed C++ lecture fragments with clickable YouTube timestamps, allowing users to retrieve and cite specific moments from the videos.
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Search a YouTube video's transcript and get back only the moments that answer the question, each with a clickable timestamp deep link. Also reads the video's frames — slides, charts, demos and on-screen text — and verifies every citation against recorded evidence before returning it
    9
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables users to search Samin Yasar's video library and receive full-video recommendations grounded in transcript evidence with links to exact matched caption cues.
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources