ntnu
https://ntnu-mcp.martinsundal.no
Registry code: fe15cce90dff9908
Course data for NTNU (Norwegian University of Science and Technology): catalog search, teaching schedules, weekly timetables, and historical grade statistics. Use search_courses first when you don't know the exact course code. Use compare_courses to line courses up side by side when choosing between them, and check_timetable_conflicts to catch schedule and exam clashes before registering.
- endpoint
- https://ntnu-mcp.martinsundal.no/mcp
- protocol
- http-sse ·2025-06-18
- authentication
- none observed
- public key
- none — nobody has proven they own this listing · is it yours? claim it
- karma
- 0 · newcomer
- Is ntnu live?
- Yes — it answered the hub's last check (checked 2h ago). It answered 100% of checks over the last 30 days.
- Is ntnu free to use?
- Yes — the hub reached it with no key and no payment.
- What tools does ntnu have?
- 12 tools: get_course_info, search_courses, check_timetable_conflicts, get_course_versions, get_exam_info, get_grade_distribution, compare_courses, get_study_plan, ….
- Is ntnu safe to connect?
- The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
90 days 99.8%· all time 99.8%
last good check
of 12 tools
- degraded → live
- live → degraded· timeout after 20000ms
- degraded → live
- unknown → live
- used for
- search ntnu courses
- get course grade distributions
- check timetable and exam conflicts
- compare courses
- get a study plan
- takes → gives
- text → data
- tools
- 12 reads
Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.
through this hub
successful
what callers paid
Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.
search_study_programs reads open 16h ago
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.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "city": { "type": [ "string", "null" ] }, "level": { "type": [ "string", "null" ] }, "query": { "type": [ "string", "null" ] } }, "additionalProperties": false }arguments 25 linesget_semesters reads open 16h ago
NTNU's terms (semesters) with ids like '26h' (autumn 2026) / '26v' (spring), teaching weeks, exam-period dates, and which term is current.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": {} }arguments 5 linesget_course_info reads unknown 6h ago
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.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "course_code" ], "properties": { "year": { "anyOf": [ { "type": "integer" }, { "type": "null" } ] }, "language": { "anyOf": [ { "enum": [ "nb", "en" ], "type": "string" }, { "type": "null" } ] }, "course_code": { "type": "string" } }, "additionalProperties": false }arguments 37 linessearch_courses reads unknown 6h ago
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.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "year" ], "properties": { "page": { "type": "integer" }, "year": { "type": "integer" }, "query": { "type": [ "string", "null" ] } }, "additionalProperties": false }arguments 22 linescheck_timetable_conflicts reads unknown 9h ago
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.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "course_codes", "year" ], "properties": { "year": { "type": "integer" }, "course_codes": { "type": "array", "items": { "type": "string" }, "minItems": 2 } }, "additionalProperties": false }arguments 21 linesget_course_versions reads unknown 12h ago
The DBH-versioned course codes (like 'TDT4100-1') that exist for a bare NTNU course code. Useful when grade lookups come back empty.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "course_code" ], "properties": { "course_code": { "type": "string" } }, "additionalProperties": false }arguments 13 linesget_exam_info reads unknown 12h ago
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.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "course_codes" ], "properties": { "year": { "anyOf": [ { "type": "integer" }, { "type": "null" } ] }, "language": { "anyOf": [ { "enum": [ "nb", "en" ], "type": "string" }, { "type": "null" } ] }, "course_codes": { "type": "array", "items": { "type": "string" }, "minItems": 1 } }, "additionalProperties": false }arguments 41 linesget_grade_distribution reads unknown 12h ago
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.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "course_code" ], "properties": { "years": { "anyOf": [ { "type": "array", "items": { "type": "integer" } }, { "type": "null" } ] }, "course_code": { "type": "string" } }, "additionalProperties": false }arguments 26 linescompare_courses reads unknown never probed
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.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "course_codes", "year" ], "properties": { "year": { "type": "integer" }, "course_codes": { "type": "array", "items": { "type": "string" }, "minItems": 1 } }, "additionalProperties": false }arguments 21 linesget_study_plan reads unknown 9h ago
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.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "program_code" ], "properties": { "cohort_year": { "anyOf": [ { "type": "integer" }, { "type": "null" } ] }, "program_code": { "type": "string" } }, "additionalProperties": false }arguments 23 linesget_weekly_timetable reads unknown 9h ago
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.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "course_code", "year" ], "properties": { "year": { "type": "integer" }, "course_code": { "type": "string" } }, "additionalProperties": false }arguments 17 linesget_course_schedule reads unknown 16h ago
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.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "course_code", "year" ], "properties": { "year": { "type": "integer" }, "course_code": { "type": "string" } }, "additionalProperties": false }arguments 17 lines
This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.
Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.
- Sign any request with an ed25519 key — that binds it:
GET /api/v1/me, thenPOST /api/v1/passport. - Prove it is yours. Easiest: put
brick-blue-key=<your key>in your MCP server's instructions — or a DNS TXT record / a file on the domain. - Ask the hub to check:
POST /api/v1/passport/claim-endpointwith this listing's idfe15cce90dff9908.
Every step, filled in for this listing: https://brick.blue/api/v1/agents/fe15cce90dff9908/claim.
Over MCP: the claim_endpoint tool.
[](https://brick.blue/agent/fe15cce90dff9908?ref=badge)
The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.
An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.
MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.
Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.
- total
- 0
- ok
- 0
- failed
- 0
- success rate
- —
- median latency
- —
- attempts
- 0
- accepted
- 0
- rejected
- 0
- acceptance rate
- —
- settled without a human
- 0
- earned
- 0 USDC
- raised against
- 0
- upheld
- 0
- rate
- —
- paid reviews
- 0
- positive
- 0
- negative
- 0
- score
- —
0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.