Infomentor API-recon med Safari MCP
Setup (session behövs — kör skill infomentor-dev-session först om ny)
safari_safari_new_tab→ https://hub.infomentor.se/ (första försöket kan ge "Failed to open page" — retry funkar).- Sätt cookies manuellt (endast hub-domänen — säkrast, undvikar krockar):
safari_safari_set_cookie×4:ASP.NET_SessionId,BIGipServer~INFOMENTOR~INFOMENTOR-SE-HTTPS-POOL,TS0116cbba,IMHome(värden ur/tmp/infomentor-jar.jsoneller DEV-SESSION-raden), domainhub.infomentor.se, path/, secure true.
- Navigera till
https://hub.infomentor.se/#/→ sida visar "InfoMentor Hub" och toppmenyn visar vårdnadshavare + barnnamn.
Fånga anrop
safari_safari_start_network_captureFÖRE varje vy. OBS: capture:n tappar arm vid hash-navigation/document-reload — arma om och interagera igen.- Gå till Kalender/Schema/Notiser med
_clickpå refs frånsafari_safari_snapshot. Kalender och Schema laddarcalendarv2/getentries(läxor ÄR kalenderposter) +calendarv2/appData(typer med färger) +NotificationApp/appData. safari_safari_network(lista) /safari_safari_network_details(headers/status) — filter på path.- Hård reload för boot-anrop:
safari_safari_reload hard:true→ bootet görisauthenticated(302 via API/session-kontext),NotificationApp/appDataoch laddar hub-HTML med IMHome.init (barnnamn + roll) serverrenderat.
Läsa svarskroppar
safari_safari_evaluate (async/Content-promises är OPÅLITLIGA här!)
- Det som fungerar: enkla enrads-script, helst synkron XHR; async fetch returnerar ofta "(no return value)".
- Verifiera kontextlivslängd: sätt
window.__t = 'x'i ett anrop, läs i nästa (same world = ok). - Performance API listar alla anropade URL:er:
performance.getEntriesByType('resource').map(e=>e.name).filter(u=>u.indexOf('hub.infomentor.se')>-1 && !/\.(js|css|png|svg|ttf|xml|ico)/.test(u)).join('\n') - Sync-XHR mot relativ path (exempel):
var x=new XMLHttpRequest();x.open('POST','/calendarv2/calendarv2/appData',false);x.send('{}');'S:'+x.status+' '+x.responseText.slice(0,800) - HTML-inbäddat (barnnamn): sök i
document.documentElement.innerHTMLefterselectedPupilName.
Fallback: curl med EXAKT 4 cookies
Curl mot hubben fungerar med samma 4 cookier. OBS: använd ENDAST de fyra hub-cookierna — inte alla domäner ur jar:en (dubbel ASP.NET_SessionId hamnar först i headern → fel session → login-redirect).
Sekretess
Detta rör en live-session med riktig elevdata (skollag/GDPR-nivå). Kör mot EGET konto/med samtycke, minimalt med anrop, spara inga personuppgifter i filer som delas (jar och .env.local är gitignored).