Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion contracts/supported-universities.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,6 @@
"uottawa": { "defaultCampus": "uottawa", "campuses": ["uottawa"] },
"brock": { "defaultCampus": "brock", "campuses": ["brock"] },
"ubc": { "defaultCampus": "ubc-vancouver", "campuses": ["ubc-vancouver"] },
"waterloo": { "defaultCampus": "waterloo-main", "campuses": ["waterloo-main"] }
"waterloo": { "defaultCampus": "waterloo-main", "campuses": ["waterloo-main"] },
"mcgill": { "defaultCampus": "mcgill-downtown", "campuses": ["mcgill-downtown"] }
}
2 changes: 1 addition & 1 deletion docs/CURRENT_LIMITATIONS.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Current integration limitations

- The MCP surface includes 17 stateless public campus-intelligence tools (10 canonical multi-university tools supporting discovery, building search, places, routing, and gap planning across 13 universities, plus 7 deprecated UTM compatibility aliases) alongside the permissioned private student-context tools. Public tools do not authenticate a Gapwise account and must not be treated as access to a student's private timetable, friends, location, or sync state.
- The MCP surface includes 17 stateless public campus-intelligence tools (10 canonical multi-university tools supporting discovery, building search, places, routing, and gap planning across 14 universities, plus 7 deprecated UTM compatibility aliases) alongside the permissioned private student-context tools. Public tools do not authenticate a Gapwise account and must not be treated as access to a student's private timetable, friends, location, or sync state.
- MCP write actions are applied by Gapwise through the queued-action channel; they do not remotely rewrite the primary encrypted private payload.
- Broad ChatGPT/Claude support is still a release-validation target rather than a universal support claim. Real OAuth/read/write/revoke behavior depends on the current client/product capabilities and must pass the repository's compatibility matrix before a client is represented as supported.
2 changes: 1 addition & 1 deletion docs/TOOL_CONTRACT.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ MCP text `content` is intentionally compact. Exact recurrence, exclusions, rich

## Public campus tools

These tools use public deterministic Gapwise campus data across all 13 supported universities and 15 campus models. They do not authenticate a Gapwise account and do not read a student's private timetable, friends, precise location, or private sync state.
These tools use public deterministic Gapwise campus data across all 14 supported universities and 16 campus models. They do not authenticate a Gapwise account and do not read a student's private timetable, friends, precise location, or private sync state.

### `list_supported_universities`
Lists all supported universities and campus editions across the Gapwise platform with capabilities and status.
Expand Down
11 changes: 6 additions & 5 deletions tests/public-campus.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -163,9 +163,10 @@ describe("public campus intelligence adapter", () => {
expect(() => validateUniversityAndCampus("harvard")).toThrow(
'Unsupported university "harvard"',
);
expect(() => validateUniversityAndCampus("mcgill")).toThrow(
'Unsupported university "mcgill"',
);
expect(validateUniversityAndCampus("mcgill")).toEqual({
university: "mcgill",
campus: "mcgill-downtown",
});
});

it("rejects unsupported campuses for a given university", () => {
Expand Down Expand Up @@ -210,8 +211,8 @@ describe("public campus intelligence adapter", () => {
});

describe("canonical multi-university programmatic matrix", () => {
it("covers all 13 supported universities in the canonical registry", () => {
expect(CANONICAL_UNIVERSITIES).toHaveLength(13);
it("covers all 14 supported universities in the canonical registry", () => {
expect(CANONICAL_UNIVERSITIES).toHaveLength(14);
for (const u of CANONICAL_UNIVERSITIES) {
const config = CANONICAL_UNIVERSITY_CAMPUSES[u];
expect(config).toBeDefined();
Expand Down
Loading