Enable the PowerSchool Changed Records feature in the plugin configuration; it tracks inserts, updates, and deletes per table using an internal change sequence number.
On first run, call GET /ws/v1/plugin/changedrecords/table/<tablename>?sinceVersion=0 to retrieve all existing records and note the returned maxVersion in the response envelope.
On subsequent runs, use sinceVersion=<maxVersion> from the prior response to receive only changed records; PowerSchool returns the changed rows with a changeType field ('INSERT', 'UPDATE', 'DELETE').
Map changed PowerSchool rows to Ed-Fi resource payloads using your field mapping configuration; for DELETE records, issue DELETE requests to the corresponding Ed-Fi endpoint using the stored natural key.
Persist the maxVersion cursor durably after each successful batch to survive restarts; if the pipeline crashes mid-batch, replay from the last committed cursor.
Implement a reconciliation check weekly: compare PowerSchool record counts against Ed-Fi counts per school to catch any records missed due to replication gaps or API errors.
Known gotchas
Changed Records tracks changes at the database table level, not at the API resource level; a single Ed-Fi StudentSchoolAssociation may map to changes across multiple PowerSchool tables requiring you to correlate changes before submitting.
PowerSchool purges change records after a configurable retention period (often 30 days); if your pipeline is down longer than the retention window, fall back to a full re-sync.
The sinceVersion parameter is a sequence number, not a timestamp; do not substitute a date-based filter — the sequence is specific to the PowerSchool instance and is not portable.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp