NTLSN is a static, public commons — no backend, no logins. But every dataset behind it is openly readable: query it, embed it, pipe it into a spreadsheet, or wire it straight into an AI assistant. One open source of truth for Australian higher-ed teaching & learning.
All endpoints return JSON over HTTPS with Access-Control-Allow-Origin: *, so they work from any site or script. Curation licensed CC BY-NC-SA 4.0; linked third-party works belong to their authors. NTLSN claims no endorsement by the universities or bodies it catalogues.
Base URL https://www.ntlsn.com/data/. Everything is a plain static JSON file — fast, cacheable, and impossible to take down with traffic.
No setup. From a browser, a Node script, a notebook — anywhere:
// the next five sector events, anywhere fetch('https://www.ntlsn.com/data/events.json') .then(r => r.json()) .then(events => { const soon = events .filter(e => e.date >= new Date().toISOString().slice(0,10)) .sort((a,b) => a.date.localeCompare(b.date)); console.log(soon.slice(0,5)); });
One line. A self-contained, shadow-DOM widget that never clashes with your CSS — sector-wide, or filtered to one university. ~5 KB, no dependencies.
<script src="https://www.ntlsn.com/widget.js" data-limit="5" data-uni="usq"></script>
data-limit = how many to show (default 5). data-uni = optional university id (e.g. usq, unimelb, curtin) — omit for sector-wide. It reads /data/events.json and links back here.
This is the part that turns NTLSN into infrastructure: a small Model Context Protocol server wraps these open endpoints into tools any AI assistant (Claude, etc.) can call — "what teaching conferences are coming up in WA?", "search the archive for work on academic integrity." MCP is the USB-C standard for AI ↔ data; NTLSN is the sector's plug.
https://ntlsn.com/.netlify/functions/mcp (MCP over HTTP, JSON-RPC 2.0 — tools: upcoming_events, search_archive, universities). No Python, no install, no key. See it live → · or run your own copy below for offline/custom tools.pip install "mcp[cli]" httpx → save the file below as ntlsn_mcp.py → register it in your client (claude mcp add ntlsn -- python /path/to/ntlsn_mcp.py). No NTLSN credentials needed — it only reads the public open data.# ntlsn_mcp.py — expose NTLSN's open sector data to any AI assistant via MCP. # pip install "mcp[cli]" httpx import httpx from mcp.server.fastmcp import FastMCP BASE = "https://www.ntlsn.com/data" mcp = FastMCP("ntlsn") @mcp.tool() def upcoming_events(uni: str = "", limit: int = 10) -> list: """Upcoming Australian higher-ed teaching & learning events. Optional uni id, e.g. usq.""" data = httpx.get(f"{BASE}/events.json", timeout=15).json() today = __import__("datetime").date.today().isoformat() data = [e for e in data if e.get("date","") >= today] if uni: data = [e for e in data if e.get("uni") == uni.lower()] return sorted(data, key=lambda e: e["date"])[:limit] @mcp.tool() def search_archive(query: str, limit: int = 15) -> list: """Search the 1,431-work ALTC/OLT teaching-scholarship archive (1994-2025).""" q = query.lower() data = httpx.get(f"{BASE}/ltr.json", timeout=30).json() hits = [w for w in data if q in (w.get("t","") + " " + w.get("a","")).lower()] return hits[:limit] @mcp.tool() def universities() -> list: """All 42 Australian universities: L&T team pages, alliance group, Traditional Country.""" return httpx.get(f"{BASE}/universities.json", timeout=15).json() if __name__ == "__main__": mcp.run()
That's three tools over open data, no backend required. Fork it, add best_practices or recognition_framework, and you've given any AI the sector's teaching & learning memory. llms.txt describes the commons for AI crawlers too.
verified flag is true.