Official documentation for Gapwise: multi-university web architecture, public campus API, SDKs, data provenance, security, native clients, and permissioned AI/MCP integration.
Astro · Starlight · TypeScript · Vercel
This repository is the canonical public developer-documentation surface for Gapwise, a free and open-source multi-university timetable and campus-intelligence platform created and engineered by Andrew Muratov.
Gapwise currently supports 14 universities across 16 campus models in Canada:
- University of Toronto (
gapwise.ca) — Mississauga, St. George, and Scarborough - Carleton University (
carleton.gapwise.ca) — Ottawa campus - Toronto Metropolitan University (
tmu.gapwise.ca) — Downtown Toronto campus - Queen's University (
queens.gapwise.ca) — Kingston campus - Wilfrid Laurier University (
laurier.gapwise.ca) — Waterloo campus - York University (
york.gapwise.ca) — Keele campus - McMaster University (
mcmaster.gapwise.ca) — Hamilton campus - Western University (
western.gapwise.ca) — London campus - University of Guelph (
guelph.gapwise.ca) — Guelph campus - University of Ottawa (
uottawa.gapwise.ca) — Downtown Ottawa campus - Brock University (
brock.gapwise.ca) — St. Catharines campus - University of British Columbia (
ubc.gapwise.ca) — Vancouver / Point Grey campus - University of Waterloo (
waterloo.gapwise.ca) — Main campus - McGill University (
mcgill.gapwise.ca) — Downtown Montreal campus
The documentation describes the multi-university architecture, public campus API, SDKs, data layers, and permissioned AI/MCP integration without presenting Gapwise as a single-institution product.
The ecosystem includes the core web/PWA, native Android and iOS clients, deterministic public API and published SDKs, canonical campus-data/provenance layer, permissioned OAuth/MCP AI integration, these developer docs, and an independent operational status service.
The docs follow released first-party contracts rather than inventing parallel behavior:
gapwiseowns canonical product semantics, public API/OpenAPI, and SDK source;androidowns the native Android implementation;iosowns the native iOS implementation;aiowns live MCP/OAuth delegation behavior;dataowns canonical public campus facts and provenance for supported universities;clidiscovers public campus data and scaffolds university integrations (guide);statusowns operational state and incident communication.
App https://gapwise.ca
API https://api.gapwise.ca/v1
OpenAPI https://api.gapwise.ca/openapi.json
Docs https://docs.gapwise.ca
Data https://data.gapwise.ca
AI / MCP https://ai.gapwise.ca/api/mcp
Status https://status.gapwise.ca
Published SDKs:
npm install @gapwise/sdk@0.1.2
# JSR: @gapwise/sdk@0.1.2
python -m pip install gapwise==0.1.1The JavaScript/TypeScript package is published on npm and JSR. The Python package is published on PyPI through Trusted Publishing. Registry and runtime claims remain evidence-based and must stay synchronized with actual releases.
| Area | Covers |
|---|---|
| Start | Platform overview, architecture, and quickstart |
| SDKs | JavaScript/TypeScript and Python clients |
| API | Buildings, places, routing, gap planning, errors, envelopes, and defensive rate-limit handling |
| Guides | Integration recipes and common workflows |
| Data | Dataset identity, provenance, uncertainty, attribution, and Gapwise Data |
| AI & MCP | OAuth/delegation, tools, permissions, privacy, mutation boundaries, and compatibility |
| Security | Trust boundaries, threat model, privacy architecture, evidence, and validation limits |
| Platform | Ecosystem ownership, versioning, provenance, uncertainty, and changelog |
| Operations | Independent Gapwise Status and incident communication |
The public API exposes campus intelligence only. It does not expose student timetables, accounts, friends, private sync state, credentials, AI delegation state, or precise live location. Private AI access exists behind a separate OAuth-protected, explicitly delegated boundary.
gapwise+ OpenAPI 3.1 are authoritative for public HTTP behavior and deterministic timetable/gap/routing/product semantics.androidconsumes those semantics for the native Android experience without creating a second product engine.iosconsumes those semantics for the native iOS experience without creating a second product engine.aiis authoritative for the live MCP/OAuth tool, permission, delegation, and bounded-mutation behavior.dataowns canonical public multi-university campus facts, geometry, provenance, evidence, schemas, and distribution.statusowns current operational monitoring and incident-communication state.docsdescribes released behavior and preserves uncertainty rather than turning unknown facts into confident claims.- University-wide timetable support must not be documented as equivalent university-wide campus-routing coverage.
- Named AI clients should not be described as verified until end-to-end production evidence exists.
- Public v1 must never imply private student-data access.
| Repository | Role | Primary surface |
|---|---|---|
gapwise |
Core web/PWA, canonical timetable/gap/routing semantics, public API, OpenAPI, and SDK source | gapwise.ca / api.gapwise.ca |
android |
Native Kotlin + Jetpack Compose Android client | Android app |
ios |
Native Swift + SwiftUI iOS client | iOS app |
ai |
OAuth/MCP layer for explicitly delegated student context and bounded actions | ai.gapwise.ca |
data |
Canonical public multi-university campus data, provenance, schemas, validation, and distribution | data.gapwise.ca |
docs |
Canonical public developer documentation | docs.gapwise.ca |
status |
Independent service-health monitoring and incident communication | status.gapwise.ca |
These first-party product repositories form one ecosystem with deliberate separation of concerns, consistent links, trust boundaries, and source-of-truth ownership. Organization-wide GitHub defaults live separately in .github.
Requires Node.js 22 or newer.
git clone https://github.com/GapwiseHQ/docs.git
cd docs
npm ci
npm run check
npm run build
npm run devmain is the production documentation branch and deploys to docs.gapwise.ca. The status service is deployed independently from status; documentation links to it rather than becoming a second status source.
Gapwise is an independent student software project created by Andrew Muratov. It is not affiliated with, endorsed by, or an official service of the University of Toronto, Carleton University, Toronto Metropolitan University, Queen's University, Wilfrid Laurier University, York University, or McMaster University.
Original documentation and site code are available under the MIT License.
One ecosystem. Explicit owners. Documentation that follows the evidence.
AI owns tool registration and the generated contracts/mcp-live-surface.json manifest.
With ai and docs checked out as siblings:
# In ai, after editing registrations:
npm run contract:generate
npm run contract:check
# In docs:
npm run mcp-contract:sync
npm run verify:mcp-contract
npm run mcp-contract:check
npm run check
npm run buildUpdate the tool and permission guides when verification identifies drift. CI checks the
vendored manifest against AI main; merge the AI producer PR before the Docs consumer PR.
Docs builds use the checked-in manifest and do not fetch AI at runtime. For another checkout
layout, pass -- --source=<path/to/mcp-live-surface.json> to the sync/check command.