Skip to main content
Glama

ntulearn_get_course_contents

Read-onlyIdempotent

Retrieve a course's content tree: list top-level folders, documents, links, and assignments, or pass a parent ID to drill into children with pagination.

Instructions

Walk a course's content tree. Omit parent_id to get the top-level items (folders, documents, links, assignments); pass parent_id of a folder/lesson where hasChildren=true to drill into its children. Supports pagination.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoMax items to return per call (1–200, default 50). Use small values to keep results within the LLM's context.
offsetNoNumber of items to skip for pagination. Use the nextOffset value returned by a previous call to walk pages.
course_idYesBlackboard course ID (e.g. _12345_1)
parent_idNoOptional content item ID of a folder/lesson to list children of. Omit to list the course's top-level items.
response_formatNo'json' returns a structured payload (default, recommended for agents). 'markdown' returns a human-readable summary.json

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
countYes
itemsYes
limitYes
totalYes
offsetYes
hasMoreYes
nextOffsetNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.2.0

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly/openWorld/idempotent/non-destructive, so the safety profile is covered. The description adds genuinely useful behavior beyond that: the recursive tree-walk model, the hasChildren drill-down signal, and pagination support. It stops short of stating rate limits or page-size guidance.

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?

Three tight sentences, front-loaded with the core action, then the two-mode rule, then pagination. No filler or restated boilerplate.

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 read-only traversal tool with an output schema (which carries return-shape detail) and full annotation coverage, the description supplies everything an agent needs: how to start at the root, how to descend, and that results are paginated.

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, but the description adds real meaning: it explains the omit-vs-pass semantics of parent_id and the hasChildren precondition for valid drill-downs, which the schema alone only weakly conveys. It also reinforces the pagination intent of limit/offset.

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: 'Walk a course's content tree'. It immediately frames the tool as hierarchical traversal, which distinguishes it from siblings like ntulearn_search_course_content (search) and ntulearn_get_assignments (flat listing).

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 explicit conditions for the two modes: omit parent_id for top-level items, pass parent_id where hasChildren=true to drill in. However it never names an alternative tool (e.g. search_course_content) for when the agent already knows what it's looking for, so no exclusions are stated.

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