Skip to main content
Glama

Bettyapp lecture moments

Find lecture moments, practice and the textbook section for a problem

find_for_problem
Read-onlyIdempotent

Finds what helps a student with one problem from an assignment, an exam or a textbook page: the moments in Bettyapp's lectures that explain it (each with its play_url, lecture title, teacher and credit line), a similar practice question and the open textbook's section. Useful when a student shares a problem, in a photo, a scan or typed. One call covers one question. A problem's symbols match lectures poorly, so topic is what finds the right moments. Bettyapp gives no answer or solution, and the practice question comes without its answer. Typical requests it serves: "can you help with question 3 on my calculus homework", "I'm stuck on this physics problem" with a photo. Example: problem "Evaluate the integral of x e^x dx" with topic "integration by parts" returns MIT 18.01's "Lecture 30: Integration by Parts, Reduction Formulae" from 20:03 and a practice question from an MIT 18.01SC exam.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "problem": "<problem>",
      "age_group": "<age_group>"
    },
    "name": "find_for_problem"
  }
}

Input Schema

NameRequiredDescriptionDefault
levelNoOnly lectures at this Level: a Level's code (elementary, middle_school, high_school, university_year1, university_upper, graduate) or its name. Strict: a lecture is listed only at the Levels it was made for, so a search with a Level can come back empty where the same search without it finds moments. Without it, every Level.
limitNoHow many moments, 1 to 10.
topicNoThe topic's name and the idea the problem asks about, as a teacher says it in a lecture: for example "product rule for derivatives", "balancing chemical equations" or "Newton's second law". Bettyapp searches for it, and finds the practice question and the textbook section by it.
problemYesThe problem's text, as read from the student's photo or page: one question, with its numbers and symbols (plain text or LaTeX), at most 4000 characters. Bettyapp keeps no copy of it.
subjectNoOnly lectures in this Subject, by its name, for example Calculus. Without it, every Subject.
age_groupYesThe age of the student the answer is for: child (under 13), teen (13 to 17) or adult (18 and over). Bettyapp shows lectures that suit the age.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • changedInput schema / properties / age_group / description
      Previous value: -"The age of the student the answer is for: child (under 13), teen (13 to 17) or adult (18 and over). Bettyapp shows lectures that suit the age. If you do not know it, ask the student once (\"How old are you? Bettyapp shows lectures that suit your age.\") and send it with every call."New value: +"The age of the student the answer is for: child (under 13), teen (13 to 17) or adult (18 and over). Bettyapp shows lectures that suit the age."
    • changedInput schema / properties / level / description
      Previous value: -"Only lectures at this Level: a code from list_subjects' levels (high_school, university_year1 ...) or its name. Level is strict: if nothing comes back, try again without it."New value: +"Only lectures at this Level: a Level's code (elementary, middle_school, high_school, university_year1, university_upper, graduate) or its name. Strict: a lecture is listed only at the Levels it was made for, so a search with a Level can come back empty where the same search without it finds moments. Without it, every Level."
    • changedInput schema / properties / problem / description
      Previous value: -"The problem's text, as you read it from the student's photo or page: one question, with its numbers and symbols (plain text or LaTeX), at most 4000 characters. Bettyapp does not keep it."New value: +"The problem's text, as read from the student's photo or page: one question, with its numbers and symbols (plain text or LaTeX), at most 4000 characters. Bettyapp keeps no copy of it."
    • changedInput schema / properties / subject / description
      Previous value: -"Only lectures in this Subject: a name from list_subjects (for example Calculus). Send it when the problem makes the Subject plain."New value: +"Only lectures in this Subject, by its name, for example Calculus. Without it, every Subject."
    • changedInput schema / properties / topic / description
      Previous value: -"The topic's name and the idea the problem asks about, as a teacher says it in a lecture: for example \"product rule for derivatives\", \"balancing chemical equations\" or \"Newton's second law\". Send it every time you can name it: Bettyapp searches for it, and finds the practice question and the textbook section by it."New value: +"The topic's name and the idea the problem asks about, as a teacher says it in a lecture: for example \"product rule for derivatives\", \"balancing chemical equations\" or \"Newton's second law\". Bettyapp searches for it, and finds the practice question and the textbook section by it."
  2. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -{
      -  "properties": {
      -    "attribution": {
      -      "description": "How to credit Bettyapp and the lecture's creator. Follow it.",
      -      "type": [
      -        "string",
      -        "null"
      -      ]
      -    },
      -    "found_by": {
      -      "description": "How the topic was found: topic (yours), reading (Bettyapp read the problem, without solving it), topic_in_text (a topic Bettyapp knows is named in it), text (the problem's own words).",
      -      "enum": [
      -        "topic",
      -        "reading",
      -        "topic_in_text",
      -        "text"
      -      ],
      -      "type": [
      -        "string",
      -        "null"
      -      ]
      -    },
      -    "hint": {
      -      "description": "Said when no topic came and the problem is mostly symbols: send the topic for better moments.",
      -      "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 no lecture that explains 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"
      -                ]
      -              },
      -              "plays_from": {
      -                "description": "Whose server the lecture plays from, where it plays from its provider's own copy instead of YouTube (for example Khan Academy's own server).",
      -                "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 (the publisher, or YouTube where it plays in YouTube's player).",
      -                "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"
      -    },
      -    "practice": {
      -      "description": "A similar question from Bettyapp's problem bank, for practice: the question only, never its answer or solution. Null when there is none.",
      -      "properties": {
      -        "id": {
      -          "description": "The question's id.",
      -          "type": [
      -            "integer",
      -            "null"
      -          ]
      -        },
      -        "source": {
      -          "description": "Where it comes from.",
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        },
      -        "text": {
      -          "description": "The question, with its parts and choices.",
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        }
      -      },
      -      "required": [
      -        "id",
      -        "text",
      -        "source"
      -      ],
      -      "type": [
      -        "object",
      -        "null"
      -      ]
      -    },
      -    "query": {
      -      "description": "The words searched for.",
      -      "type": [
      -        "string",
      -        "null"
      -      ]
      -    },
      -    "related": {
      -      "description": "Only when no topic was named: moments close in meaning to the problem as worded, where that search is on. Related, not always the same topic.",
      -      "properties": {
      -        "found_by": {
      -          "enum": [
      -            "meaning"
      -          ],
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        },
      -        "moments": {
      -          "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"
      -                    ]
      -                  },
      -                  "plays_from": {
      -                    "description": "Whose server the lecture plays from, where it plays from its provider's own copy instead of YouTube (for example Khan Academy's own server).",
      -                    "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 (the publisher, or YouTube where it plays in YouTube's player).",
      -                    "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"
      -        },
      -        "note": {
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        }
      -      },
      -      "required": [
      -        "found_by",
      -        "note",
      -        "moments"
      -      ],
      -      "type": "object"
      -    },
      -    "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"
      -      ]
      -    },
      -    "textbook": {
      -      "description": "The open textbook's section on the topic. Null when none matches.",
      -      "properties": {
      -        "section": {
      -          "description": "The section's number and title.",
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        },
      -        "title": {
      -          "description": "The book.",
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        },
      -        "url": {
      -          "description": "The section online.",
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        }
      -      },
      -      "required": [
      -        "title",
      -        "section",
      -        "url"
      -      ],
      -      "type": [
      -        "object",
      -        "null"
      -      ]
      -    },
      -    "topic": {
      -      "description": "The topic searched for: as you sent it, as Bettyapp read the problem, or a topic named in it. Null when only the problem's words were searched.",
      -      "type": [
      -        "string",
      -        "null"
      -      ]
      -    }
      -  },
      -  "required": [
      -    "attribution",
      -    "terms",
      -    "topic",
      -    "found_by",
      -    "query",
      -    "moments",
      -    "practice",
      -    "textbook"
      -  ],
      -  "type": "object"
      -}New value: +null
  3. Changed4 schema fields changed
    • addedOutput schema / properties / moments / items / properties / credit / properties / plays_from
      Added value: +{
      +  "description": "Whose server the lecture plays from, where it plays from its provider's own copy instead of YouTube (for example Khan Academy's own server).",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / moments / items / properties / credit / properties / watch_at_source / description
      Previous value: -"The lecture at its own source (YouTube, the publisher)."New value: +"The lecture at its own source (the publisher, or YouTube where it plays in YouTube's player)."
    • addedOutput schema / properties / related / properties / moments / items / properties / credit / properties / plays_from
      Added value: +{
      +  "description": "Whose server the lecture plays from, where it plays from its provider's own copy instead of YouTube (for example Khan Academy's own server).",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / related / properties / moments / items / properties / credit / properties / watch_at_source / description
      Previous value: -"The lecture at its own source (YouTube, the publisher)."New value: +"The lecture at its own source (the publisher, or YouTube where it plays in YouTube's player)."
  4. Added

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world); the description adds real substance on top: Bettyapp returns no answer or solution, the practice question has no answer key, and no copy of the problem is retained. What it does not cover is what an empty result looks like or pagination behavior, which limits it to a 4.

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?

Purpose is front-loaded in the first clause and the returned fields are enumerated immediately. The added example and list of typical requests are useful but make it longer than strictly necessary; still, no sentence is dead weight.

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 six parameters, no output schema, and a non-obvious return shape, the description is complete enough to call correctly: it enumerates returned fields, disclaims the absence of answers, and gives a worked example of a valid problem/topic pair.

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 3; the description earns an extra point by explaining the interaction between the parameters — problem symbols match lectures poorly, so topic is the retrieval key. That is decision-relevant guidance the schema does not supply.

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 ('Finds') and a precisely bounded resource: lecture moments with play_url/title/teacher, a similar practice question, and the textbook section, scoped to one problem. The scope ('One call covers one question') distinguishes it from a general lecture search without needing to name siblings.

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 clear triggering conditions ('when a student shares a problem, in a photo, a scan or typed') plus concrete example requests. It also advises that topic, not the problem text, drives moment matching. It never states when not to use it or names an alternative tool, so it falls short of a 5.

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