Skip to main content
Glama

Bettyapp lecture moments

The best moment at each Level for a topic

get_topic
Read-onlyIdempotent

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.

Input Schema

NameRequiredDescriptionDefault
topicYesThe topic, in plain words.

Output Schema

NameRequiredDescriptionDefault
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.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema 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"
      +}
  2. First observed

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.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources