AI accessMCP endpointOpenAPIllms.txt

For LLM / AI agents

Use the register with tools.

This page explains how autonomous agents, chatbots, and research copilots should query The Course Register safely and cite course information accurately.

Agent endpoint/mcpJSON-RPC tool surface
API base
https://uniapi.stanislav.black
Machine guide
/llms.txt
Manifest
/.well-known/ai-agent.json
01

Preferred access pattern

Use the API or MCP tools rather than scraping rendered HTML pages.

The public website is optimized for humans and SEO. AI agents should treat the backend as the canonical machine interface, because it exposes normalized fields for provider, title, subject, modality, price, start dates, enrollment status, lifecycle state, and source URLs.

MCP endpoint: https://uniapi.stanislav.black/mcp
Transport: HTTP JSON-RPC
OpenAPI: https://uniapi.stanislav.black/openapi.json
Instructions: https://uni.stanislav.black/ai-agents
02

Available MCP tools

The MCP server exposes read-only catalog tools for course discovery and diagnostics.

  • search_courses — search by text, provider, subject, status, price range, and expired-row policy.
  • get_course — fetch a single normalized course by numeric id.
  • get_stats — fetch global totals, active counts, subject counts, and last sync time.
  • get_subject_stats — fetch subject totals with both active and retained archived counts.
  • get_provider_diagnostics — fetch provider health, missing-field diagnostics, and sync metadata.
POST https://uniapi.stanislav.black/mcp
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "search_courses",
    "arguments": {
      "q": "machine learning",
      "provider": "stanford",
      "limit": 5
    }
  }
}
03

Interpretation rules

Course records have both enrollment status and lifecycle status. Do not conflate them.

Agents should prioritize is_active when describing whether a listing is current. If is_active is false, describe the row as archived even when status_normalizedstill says open. The status string is provider text; the lifecycle flag is the register’s current/archived decision.

  • Use source_url or enrollment_url as the final authority for enrollment.
  • Use price_numeric only as a normalized filter/sort value; show price to humans.
  • Datetime fields are UTC and should be rendered with timezone context.
  • For subject pages, use include_expired=true when you need total retained listings.
04

Safe usage and attribution

Be useful without pretending the register is the issuing university.

The Course Register is an independent index. When answering users, cite the university/provider and link back to the original source. Do not claim affiliation, admission guarantees, or real-time seat availability unless the provider source explicitly says so.

Keep requests modest, cache read-only responses where appropriate, and use the MCP/API surfaces instead of high-rate HTML crawling.