SchoolBusTrack MCP by usefulapi
Read pupils, routes, bus positions, trips, boarding lists and incidents in SchoolBusTrack.
Should I use this
Quality & Safety
Findings (3)
- LOWin schoolbustrack_list_bus_locations
- LOWin schoolbustrack_get_bus_location
- LOWin schoolbustrack_get_trip_manifest
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"schoolbustrack": {
"url": "https://schoolbustrack.usefulapi.io/mcp"
}
}
}Remote endpoints
https://schoolbustrack.usefulapi.io/mcpstreamable-httpWhat it can do
Tool inventory
Tools (12)
🟢schoolbustrack_ping
Show which school this key acts for, its name, its scopes and its rate limit. Good first call. SchoolBusTrack API: GET /v1/ping.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢schoolbustrack_list_students(limit, cursor, updatedSince, campusId, classId, ...)
List pupils with their class, campus, route assignment and active flag. Guardian and emergency contact details are never returned. Needs students:read. SchoolBusTrack API: GET /v1/students.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Page size, 1–200 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 200
},
"cursor": {
"description": "The nextCursor from the previous page.",
"type": "string"
},
"updatedSince": {
"description": "ISO 8601 instant. Returns records changed at or after it, oldest change first (for syncs).",
"type": "string"
},
"campusId": {
"description": "Only records of this campus id.",
"type": "string"
},
"classId": {
"description": "Only pupils in this class id.",
"type": "string"
},
"routeId": {
"description": "Only pupils assigned to this route id.",
"type": "string"
},
"enrollmentNumber": {
"description": "Only the pupil with this enrollment number.",
"type": "string"
},
"includeInactive": {
"description": "Include inactive records (default false).",
"type": "boolean"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢schoolbustrack_get_student(studentId)
Get one pupil by id: class, campus, route assignment and status. Guardian and emergency contact details are never returned. Needs students:read. SchoolBusTrack API: GET /v1/students/{id}.
Input Schema
{
"type": "object",
"properties": {
"studentId": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "The pupil id (from schoolbustrack_list_students)."
}
},
"required": [
"studentId"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢schoolbustrack_list_routes(limit, cursor, updatedSince, campusId, type, ...)
List bus routes with their type, schedule, stop count, bus and driver. Needs routes:read. SchoolBusTrack API: GET /v1/routes.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Page size, 1–200 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 200
},
"cursor": {
"description": "The nextCursor from the previous page.",
"type": "string"
},
"updatedSince": {
"description": "ISO 8601 instant. Returns records changed at or after it, oldest change first (for syncs).",
"type": "string"
},
"campusId": {
"description": "Only records of this campus id.",
"type": "string"
},
"type": {
"description": "Only routes of this type.",
"type": "string",
"enum": [
"pickup",
"dropoff",
"bidirectional"
]
},
"code": {
"description": "Only the route with this code.",
"type": "string"
},
"includeInactive": {
"description": "Include inactive records (default false).",
"type": "boolean"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢schoolbustrack_get_route(routeId)
Get one route by id, with its ordered stops. Needs routes:read. SchoolBusTrack API: GET /v1/routes/{id}.
Input Schema
{
"type": "object",
"properties": {
"routeId": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "The route id (from schoolbustrack_list_routes)."
}
},
"required": [
"routeId"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢schoolbustrack_list_buses(limit, cursor, updatedSince, campusId, status, ...)
List buses with registration, seats, status, tracker state and last known location. Needs buses:read. SchoolBusTrack API: GET /v1/buses.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Page size, 1–200 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 200
},
"cursor": {
"description": "The nextCursor from the previous page.",
"type": "string"
},
"updatedSince": {
"description": "ISO 8601 instant. Returns records changed at or after it, oldest change first (for syncs).",
"type": "string"
},
"campusId": {
"description": "Only records of this campus id.",
"type": "string"
},
"status": {
"description": "Only buses with this status.",
"type": "string",
"enum": [
"active",
"maintenance",
"inactive"
]
},
"registrationNumber": {
"description": "Only the bus with this registration number.",
"type": "string"
},
"includeInactive": {
"description": "Include inactive records (default false).",
"type": "boolean"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢schoolbustrack_list_bus_locations
Get the latest position of every bus, with speed, heading and whether the fix is stale. Needs locations:read. SchoolBusTrack API: GET /v1/buses/locations.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢schoolbustrack_get_bus_location(busId)
Get the latest position of one bus by id. Needs locations:read. SchoolBusTrack API: GET /v1/buses/{id}/location.
Input Schema
{
"type": "object",
"properties": {
"busId": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "The bus id (from schoolbustrack_list_buses)."
}
},
"required": [
"busId"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢schoolbustrack_list_trips(limit, cursor, updatedSince, date, from, ...)
List scheduled, running and completed trips. Filter by school day or time range, status, route, bus, driver or campus. Needs trips:read. SchoolBusTrack API: GET /v1/trips.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Page size, 1–200 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 200
},
"cursor": {
"description": "The nextCursor from the previous page.",
"type": "string"
},
"updatedSince": {
"description": "ISO 8601 instant. Returns records changed at or after it, oldest change first (for syncs).",
"type": "string"
},
"date": {
"description": "A school-local day: yyyy-mm-dd or today.",
"type": "string",
"pattern": "^(today|\\d{4}-\\d{2}-\\d{2})$"
},
"from": {
"description": "ISO 8601 instant, UTC with Z.",
"type": "string"
},
"to": {
"description": "ISO 8601 instant, UTC with Z.",
"type": "string"
},
"status": {
"description": "Only trips with this status.",
"type": "string",
"enum": [
"scheduled",
"in_progress",
"completed",
"cancelled"
]
},
"routeId": {
"description": "Only trips on this route id.",
"type": "string"
},
"busId": {
"description": "Only trips of this bus id.",
"type": "string"
},
"driverId": {
"description": "Only trips of this driver id.",
"type": "string"
},
"campusId": {
"description": "Only records of this campus id.",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢schoolbustrack_get_trip(tripId)
Get one trip by id: status, times, distance, duration, its stops and student count. Needs trips:read. SchoolBusTrack API: GET /v1/trips/{id}.
Input Schema
{
"type": "object",
"properties": {
"tripId": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "The trip id (from schoolbustrack_list_trips)."
}
},
"required": [
"tripId"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢schoolbustrack_get_trip_manifest(tripId)
Get the boarding list of one trip: each pupil with status and last event, grouped by stop, plus unlisted pupils and counts. Needs trips:read. SchoolBusTrack API: GET /v1/trips/{id}/manifest.
Input Schema
{
"type": "object",
"properties": {
"tripId": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "The trip id (from schoolbustrack_list_trips)."
}
},
"required": [
"tripId"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢schoolbustrack_list_incidents(limit, cursor, updatedSince, status, severity, ...)
List incidents and SOS alerts, newest first, with status, severity, bus, trip and driver. Needs incidents:read. SchoolBusTrack API: GET /v1/incidents.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Page size, 1–200 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 200
},
"cursor": {
"description": "The nextCursor from the previous page.",
"type": "string"
},
"updatedSince": {
"description": "ISO 8601 instant. Returns records changed at or after it, oldest change first (for syncs).",
"type": "string"
},
"status": {
"description": "Only incidents with this status.",
"type": "string"
},
"severity": {
"description": "Only incidents with this severity.",
"type": "string"
},
"type": {
"description": "Only incidents of this type.",
"type": "string"
},
"isSos": {
"description": "true for SOS alerts only, false for the rest.",
"type": "boolean"
},
"busId": {
"description": "Only incidents on this bus id.",
"type": "string"
},
"tripId": {
"description": "Only incidents on this trip id.",
"type": "string"
},
"driverId": {
"description": "Only incidents of this driver id.",
"type": "string"
},
"from": {
"description": "ISO 8601 instant, UTC with Z.",
"type": "string"
},
"to": {
"description": "ISO 8601 instant, UTC with Z.",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Evidence