Skip to main content
Glama

Search Course

search_course

Find specific course content, announcements, or discussion posts by keyword in one call, returning ranked matches instead of reading the whole content tree.

Instructions

Search a course's content (modules, topics, file names), announcements, and discussion forums/topics by keyword in a single call, instead of reading the whole content tree. Use this when the user wants to find something specific, e.g. 'find the midterm review slides' or 'did anyone post about office hours'. Results are ranked: a result matching every query term ranks above one matching only some, and within that, a match in the title ranks above one only in the body text. If one source (e.g. discussions) can't be read, it's skipped and named in note rather than failing the whole search. This fans out over the entire content tree, announcements, and every discussion forum, so it can be slower than calling a single tool like get_course_content directly.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results to return, highest scoring first.
queryYesKeyword(s) to search for, e.g. 'midterm review slides' or 'office hours'.
courseIdYesCourse ID to search within.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv3.9.7

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does so well: it discloses the ranking algorithm (all-terms match > partial, title > body), graceful degradation ('If one source... can't be read, it's skipped and named in `note`'), and the performance cost of fanning out. It omits auth/permission requirements and whether results are paginated beyond `limit`, keeping it from 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.

Conciseness4/5

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

Three sentences, each earning its place, and the core purpose and examples are front-loaded. The opening sentence is heavily parenthesized, which slightly slows scanning, but there is no filler.

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?

For a 3-param, no-output-schema tool, the definition covers purpose, trigger conditions, ranking semantics, partial-failure behavior and cost, which is everything an agent needs to choose and call it correctly. Return shape is inferable from the ranking/note discussion even without an output schema.

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 description coverage is 100%, so the schema already documents courseId, query and limit with its own examples. The description restates the keyword-style query but adds no new format, constraint, or syntax information beyond the schema, so the baseline of 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?

Opens with a specific verb+resource ('Search a course's content... announcements, and discussion forums/topics by keyword') and enumerates exactly what is searched. It also distinguishes itself from siblings by contrasting the fan-out search with 'reading the whole content tree' and with get_course_content.

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

Usage Guidelines5/5

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

Explicitly states when to use it ('when the user wants to find something specific') with two concrete user-utterance examples. It also names an alternative path ('slower than calling a single tool like get_course_content directly'), giving the agent a real routing decision.

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