NTNU Courses (unofficial)
Server Details
Unofficial NTNU course data: search, timetables, grades, course info, and exam logistics.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- MartinSA04/ntnu-mcp
- GitHub Stars
- 1
- Server Listing
- ntnu-mcp
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.1/5 across 12 of 12 tools scored. Lowest: 3.2/5.
Each tool targets a distinct aspect of NTNU course data: scheduling, exams, grades, comparisons, search, etc. Overlaps like get_course_schedule and get_weekly_timetable are clearly differentiated by granularity, with descriptions guiding usage.
All tools follow a verb_noun pattern in snake_case, using simple verbs like 'get', 'search', 'check', and 'compare'. The naming is uniform and predictable across all 12 tools.
12 tools is well-scoped for an informational server covering courses, schedules, exams, grades, study plans, and search. Each tool serves a clear purpose without unnecessary redundancy.
The tool set covers core CRUD-like operations for course data, including search, info retrieval, scheduling, exams, grades, and study plans. Minor gaps exist, such as no dedicated tool for study program details or room information, but overall the surface is comprehensive for the domain.
Available Tools
12 toolscheck_timetable_conflictsAInspect
Checks a set of NTNU courses for the same year for clashing lecture/lab times and colliding exam dates — a clash check to run before registering for courses. Accepts bare course codes. Each side of a conflict carries its activity 'kind': a lecture-vs-lecture clash is unavoidable, while one involving an exercise or lab often has alternative groups. Exam dates come from the catalog, which does not mark deferred (utsatt/kont) sittings.
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | ||
| course_codes | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses behavioral traits such as accepting bare course codes, interpreting activity kinds, and noting that exam dates from the catalog do not mark deferred sittings. This adds useful context beyond a simple 'check conflicts' statement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is reasonably concise, covering purpose, usage hints, and behavioral notes in a single paragraph. It is front-loaded with the main action and adds specific details without unnecessary fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of checking conflicts with activity kinds and exam dates, and the absence of an output schema, the description should explain what the tool returns (e.g., a list of conflicts). Without that, an agent may not know how to process the output. Additional completeness is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, meaning no parameter descriptions in the schema. The description adds minimal parameter info: 'Accepts bare course codes' implies format but doesn't explain the 'year' parameter or the exact expected string format for course codes. More detail is needed to compensate for the low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks for clashing lecture/lab times and colliding exam dates for a set of NTNU courses. It specifies the scope (same year) and distinguishes itself from sibling tools by focusing on conflict detection rather than general information retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool ('a clash check to run before registering for courses') and explains how to interpret conflict kinds. It does not explicitly exclude other scenarios or mention alternatives, but the guidance is sufficient for basic usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_coursesAInspect
Side-by-side comparison of NTNU courses for a given year — campus, exam dates, weekly teaching hours, and latest grade distribution — to help choose between courses. Accepts bare course codes.
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | ||
| course_codes | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It mentions 'accepts bare course codes' (a specific format requirement) and lists compared attributes, but does not disclose behavior like data freshness, error handling for invalid codes, or whether results are sorted. This is adequate but incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the key action ('side-by-side comparison') and specific attributes. Every word adds value; no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description lists the compared attributes (campus, exam dates, etc.), giving a clear idea of the return content. However, it omits details like the maximum number of courses that can be compared, result ordering, or pagination. This is mostly complete for the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds context for course_codes ('bare course codes') and implies year is for a specific year. However, it does not explain the format of course codes (e.g., 'TDT4100') or any constraints on year (e.g., integer range). It provides some value but falls short of fully documenting the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs a 'side-by-side comparison' of NTNU courses, listing specific attributes (campus, exam dates, weekly teaching hours, grade distribution) and the goal to 'help choose between courses'. This distinguishes it from sibling tools like get_course_info (single course) or get_grade_distribution (single attribute).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for comparing courses to make a choice, but it does not explicitly state when not to use or mention alternatives among sibling tools. For example, it does not say 'use get_course_info for detailed info on one course' or 'use get_grade_distribution for just grades'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_course_infoAInspect
Everything about an NTNU course except exam logistics: credits, level, campus, language of instruction, prerequisites, mandatory activities, course content / learning outcomes, credit reductions ('studiepoengreduksjon'), which study programs the teaching is planned for, contacts, and any alert notices (e.g. 'no longer taught'). English text by default; pass language 'nb' for Norwegian. Omit year for the current study year. For exam dates, times, aid codes, and rooms use get_exam_info.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | ||
| language | No | ||
| course_code | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries full burden. It discloses default language behavior, the effect of omitting year, and the scope of returned data. It does not mention permissions or side effects, which are minimal for a read operation, but still provides strong transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise yet comprehensive—two substantive sentences plus a clear pointer to sibling. Key information is front-loaded, and every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich data returned and no output schema, the description is impressively complete, listing many field categories and edge cases (alert notices). It could mention course_code format, but the current detail is still high.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates fully: it explains language as English by default with 'nb' option, year as current if omitted, and course_code as required. This adds essential meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifically lists all fields returned (credits, level, campus, etc.) and explicitly states what is excluded (exam logistics). It distinguishes itself from sibling tool get_exam_info, making the purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear when-to-use (getting course details) and when-to-use-alternative (exam info → get_exam_info). It also gives practical tips on language and year parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_course_scheduleBInspect
Every dated teaching activity (lectures, labs) for a course in a year, with Oslo-local times and rooms. Long output for large courses — prefer get_weekly_timetable for a compact recurring-week overview.
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | ||
| course_code | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description warns about long output for large courses but does not disclose whether it is read-only, requires auth, or any other behavioral traits. Lacks full transparency expected without annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two succinct sentences, front-loaded with core purpose, followed by a helpful usage hint. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and incomplete parameter info, the description lacks details on output structure, pagination, time zone handling, or date formats. The hint about long output is useful but overall incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description adds no information about the parameters (course_code, year) beyond their names. No mention of format, range, or examples, leaving the agent with insufficient guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description explicitly states the tool retrieves all dated teaching activities (lectures, labs) for a course in a year with Oslo-local times and rooms. It clearly distinguishes from sibling get_weekly_timetable by noting the long output and suggesting the alternative for compact overview.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context: use for detailed schedule, prefere get_weekly_timetable for compact recurring-week overview. However, no explicit when-not or prerequisites beyond this single alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_course_versionsBInspect
The DBH-versioned course codes (like 'TDT4100-1') that exist for a bare NTNU course code. Useful when grade lookups come back empty.
| Name | Required | Description | Default |
|---|---|---|---|
| course_code | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided. The description implies a read-only operation by retrieving codes, but it does not disclose what happens if the course_code is invalid, whether there are any side effects, or how results are structured. The behavioral disclosure is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise—two sentences that convey the core purpose and a use case without any unnecessary words. It is front-loaded and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no output schema and no annotations, the description is somewhat lacking. It explains the purpose and provides a use case, but it does not describe the return format or handle edge cases. For a simple lookup tool, it is minimally adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% (no descriptions for parameters). The description adds meaning by specifying that course_code is a 'bare' NTNU course code (without version suffix) and gives an example. This compensates for the lack of schema descriptions, though it could be more detailed about format or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves DBH-versioned course codes for a bare NTNU course code, with an example. It distinguishes from siblings like get_course_info by focusing on version codes, though it does not explicitly contrast with all siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description suggests using the tool when grade lookups come back empty, providing one use case. However, it does not specify when not to use it or mention alternative tools for other scenarios, leaving the agent without clear guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_exam_infoAInspect
Exam logistics for one or more NTNU courses in a single call: every exam occasion (ordinary / re-sit) with date, start time, duration, permitted-aids code ('hjelpemiddelkode') with its meaning, exam system, and assigned rooms. The way to answer 'when and where are my exams and what can I bring' for a whole semester at once. Rooms are only published days before the exam; unpublished fields are null. Omit year for the current study year.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | ||
| language | No | ||
| course_codes | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that rooms may be null when not yet published, and implies a read-only operation. It does not cover authentication needs or rate limits, but the behavioral traits relevant to invocation are adequately described.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences: one detailing the tool's output, one summarizing the use case, and one covering edge cases (room publication date, year omission). Every sentence adds essential information with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema, the description effectively enumerates return fields (date, start time, duration, aids code, system, rooms) and notes null behavior for rooms. It is complete enough for the tool's complexity, though it does not address error handling or input validation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It clarifies that 'course_codes' are for NTNU courses (array of strings) and that 'year' can be omitted for the current year. However, the 'language' parameter is not mentioned, leaving its intent undocumented. The description adds moderate value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves exam logistics for one or more NTNU courses, listing specific fields (date, start time, duration, aids code, rooms). It distinguishes itself from sibling tools like get_course_info by focusing exclusively on exam details and answering a specific user question ('when and where are my exams and what can I bring').
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides practical usage guidance: it can handle multiple courses in a single call, advises omitting year for the current study year, and explains that rooms are only published days before (unpublished fields are null). However, it does not explicitly contrast with sibling tools or state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_grade_distributionAInspect
Historical grade distribution for an NTNU course (per year and semester, with counts and percentages; grades A-F, or pass/fail codes). Accepts bare codes like 'TDT4100'. Omit years to get all recorded years. Small counts may be privacy-masked. Data comes from Norway's official DBH statistics.
| Name | Required | Description | Default |
|---|---|---|---|
| years | No | ||
| course_code | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full disclosure burden. It reveals behavioral traits: small counts may be privacy-masked, the data source (DBH statistics), and the default behavior of returning all years if omitted. This is comprehensive transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with three sentences that front-load the main purpose and add important details. Every sentence earns its place without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description covers core functionality, data source, and privacy masking. It lacks explicit details about the return format (e.g., JSON structure), but the tool is simple enough that an agent can infer the output from the description. Minor completeness gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 0% schema coverage, the description adds meaning by explaining the 'course_code' format (bare codes like 'TDT4100') and the 'years' parameter behavior (omit for all years). It could be improved by explicitly stating that years are integer values (e.g., 2023), but overall it compensates for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves historical grade distributions for an NTNU course, specifying data granularity (per year/semester), grade categories, and acceptance of bare course codes. It differentiates from sibling tools like get_course_info and get_exam_info by focusing specifically on grade distribution.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides usage guidance by explaining how to format course codes and the effect of omitting the 'years' parameter. While it does not explicitly state when to use this tool versus alternatives, the context makes it clear; the lack of explicit exclusions is acceptable given the clear purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_semestersAInspect
NTNU's terms (semesters) with ids like '26h' (autumn 2026) / '26v' (spring), teaching weeks, exam-period dates, and which term is current.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It clearly states the tool returns various semester-related data without side effects. However, it does not mention that the tool has no parameters or that it's a read-only operation, which would be helpful but is implicitly understood.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence that is front-loaded with the key purpose and details. Every word adds value; no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and no output schema, the description adequately explains the return content. It could specify the format (e.g., array of objects) but the details given are sufficient for a simple data retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so the description cannot add parameter-specific meaning. Per guidelines, baseline for zero parameters is 4, and the description does not detract from this.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('get') and resource ('semesters'), and explicitly lists the data returned (IDs, teaching weeks, exam-period dates, current term). It clearly distinguishes itself from sibling tools that deal with courses or schedules.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. While it's implied for retrieving semester information, there is no mention of contexts where it should not be used or any comparison with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_study_planAInspect
The official study plan for an NTNU program and cohort intake year: which courses (codes, credits, mandatory/elective) belong to each semester, and the specialization choice points with their course groups. The bridge from 'I study X' to concrete course codes — feed them to get_weekly_timetable, check_timetable_conflicts, or get_exam_info. cohort_year is the year the student STARTED (defaults to the current cohort); students in their Nth year started N-1 years ago.
| Name | Required | Description | Default |
|---|---|---|---|
| cohort_year | No | ||
| program_code | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It explains the return structure (courses per semester, specialization points) and the cohort_year default. While it doesn't mention auth or rate limits, for a read-only query tool this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, each adding value. It is front-loaded with the main purpose and includes essential details without redundancy. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, the description thoroughly explains what is returned (courses, codes, credits, mandatory/elective, semesters, specialization groups) and how to use the output. It even notes the cohort_year default. No output schema exists, but the description compensates fully.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It explains cohort_year in detail, including its default and how to compute it. Program_code is implied by context. Both parameters are effectively described.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns the official study plan for an NTNU program and cohort, detailing courses per semester and specialization choices. It uses specific verbs and nouns and distinguishes itself from siblings by explaining how the output can be fed to other tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use the tool (as a bridge from program to course codes) and explains the cohort_year parameter's meaning and default. It suggests downstream tools, but does not explicitly state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_weekly_timetableAInspect
The recurring weekly timetable grid for a course in a year: weekday, times, ISO-week ranges, rooms, and a classified 'kind' per slot (lecture / exercise / lab / seminar / unknown). The compact way to answer 'when are the lectures for X' — filter on kind == 'lecture', since NTNU's own activity titles are free-form Norwegian text.
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | ||
| course_code | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the output structure and the fact that activity titles are free-form text, which is important for proper use. While it doesn't discuss side effects or errors, the tool is a simple read operation and the description adequately covers expected behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long with no fluff: the first sentence defines the output, and the second provides a specific usage tip. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval tool with two parameters, the description covers output fields, a filtering strategy, and a warning about free-form text. It lacks explicit year formatting but is otherwise complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage and no parameter descriptions, the description only implies course_code and year by saying 'for a course in a year.' It does not explain year format or any constraints, leaving the agent to infer meaning from context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool returns the recurring weekly timetable grid with specific fields (weekday, times, ISO-week ranges, rooms, kind). It distinguishes from siblings like get_course_schedule by emphasizing the compact grid format and the classified 'kind' field.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear use case: answering 'when are the lectures for X' by filtering on kind=='lecture'. It also warns about free-form Norwegian text in activity titles. However, it does not explicitly exclude other use cases or mention when not to use this tool over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_coursesAInspect
Search NTNU's course catalog for a given year (server-side free-text search over course names and codes; Norwegian terms often match best, e.g. 'maskinlæring' rather than 'machine learning'). Call this first when you don't know the exact course code. Returns course codes, Norwegian names, campus, and exam dates.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| year | Yes | ||
| query | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes the search as server-side free-text and mentions return fields, which is useful. However, it lacks details about pagination behavior despite the page parameter, and does not address potential errors or rate limits. With no annotations, the description could be more comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences that are front-loaded with the primary action. No unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (simple search with 3 parameters, no output schema), the description provides adequate context about what is returned. It could be slightly improved by mentioning pagination and the default page size, but overall it is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description partially explains the 'year' and 'query' parameters but does not mention the 'page' parameter at all. With 0% schema description coverage, the description should cover all parameters to help the agent use the tool correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool searches NTNU's course catalog for a given year using free-text search over course names and codes. Distinguishes itself from sibling tools by being the initial search entry point for unknown course codes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises to call this first when the exact course code is unknown. Provides a practical tip about Norwegian terms matching best, which helps the agent choose this tool over alternatives like get_course_info that require a course code.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_study_programsAInspect
Search NTNU's study-program catalog (~400 programs) by free text (name, code, keywords), study level (e.g. 'bachelor', 'master', 'ph.d'), and/or city (Trondheim, Gjøvik, Ålesund). Returns program codes like 'MTDT' — the input for get_study_plan. Call this first when you only know a program's name.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | ||
| level | No | ||
| query | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description covers search capabilities and output codes but omits details like result limits, pagination, or error handling. Adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences front-loading purpose and usage, no fluff. Efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 3 optional parameters, no output schema, and no annotations, the description covers main use and parameters adequately. Could mention result count or pagination, but generally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but description explains query as free text, level with examples (bachelor, master, ph.d), and city with examples (Trondheim, Gjøvik, Ålesund), adding meaning beyond bare types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches NTNU's study-program catalog by free text, study level, and city, distinguishing it from siblings like search_courses and get_study_plan.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description advises to call this first when only a program name is known and notes that returned codes feed into get_study_plan, giving clear context. It lacks explicit when-not-to-use guidance but is still good.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Servers
- Alicense-qualityAmaintenanceMCP server exposing NTNU course data (search, schedules, grades, semesters) as tools for LLM agents.17MIT
- AlicenseAqualityCmaintenanceEnables searching and retrieving course details, schedules, prerequisites, and instructor information from the CMU course catalog via the ScottyLabs API.92MIT
- AlicenseAqualityBmaintenanceEnables searching and retrieving course listings, departments, and syllabi from National Chengchi University's public course API using natural language.3MIT
Your Connectors
Sign in to create a connector for this server.