Verktøy

14 verktøy, definert i src/lib/agent/tools.ts. Beskrivelsene under er ordrett det modellen ser — de er prompt, ikke dokumentasjon. Skjemaene er lest ut av zod, så tabellene kan ikke komme ut av takt med koden.

Verktøyene filtreres per steg. velgVerktoy i chat-ruta sender bare det steget faktisk skal ha, pluss oppslagsverktøyene som gjelder overalt. Modellen kan ikke kalle be_om_konklusjon fra steg 1, fordi den aldri får vite at verktøyet finnes. Grensa er teknisk, ikke bare en setning i prompten.

Turen stopper etter stepCountIs(3) steg. Artefakt- verktøyene avslutter turen med vilje, så budsjettet finnes for sok_kunnskapsbase, som faktisk gir data tilbake.

Artefaktverktøy · 12

Tegner et interaktivt kort og stopper turen. De endrer aldri vurdering.json selv — godkjenning er en ren tilstandsendring i klienten, så et klikk på «Godkjenn» er umiddelbart og deterministisk i stedet for et nytt modellkall som kan komme tilbake annerledes.

vis_grunnlagsstatus

Tegner statuskortet M1–M6 / B1–B7, med svarfelt på radene som mangler noe. Skriver kravstatus til vurdering.json ved godkjenning, og hopp-over med begrunnelse når saksbehandler sender inn.

steg 1 · Grunnlagartefakt: grunnlagsstatus

description — sendes til modellen

Vis statuslista over dokumentasjonskrav i saken (M1–M6, B1–B7). Kalles én gang når grunnlagssteget er gjennomgått. Ta med alle krav du har vurdert — også de som er oppfylt.

inputSchema · 8 felt

FeltTypeBeskrivelse
kravpåkrevdobjekt[]Alle vurderte krav, i rekkefølge M1–M6 så B1–B7
idpåkrevdstringKrav-id: M1–M6 eller B1–B7
navnpåkrevdstringKravets navn
statuspåkrevdenumfunnet = dokument dekker kravet klart. uklart = noe finnes, usikkert om det dekker. mangler = ingenting funnet. blokkerer = M1 eller M2 mangler.funnet · uklart · mangler · blokkerer
dokumentstringFilnavnet på dokumentet som dekker kravet, hvis funnet
datostringDokumentets dato
merknadpåkrevdstringÉn setning som begrunner statusen, på saksbehandlers språk
sporsmalstringBare når status ikke er "funnet". Det korte spørsmålet som tetter hullet — høyst 12 ord, ett spørsmålstegn. F.eks. "Hvilke tiltak er prøvd, og hvordan er de evaluert?". Ikke en feltetikett ("M4 Tiltak:"), og ikke en hel forklaring.

oppdater_krav

Oppdaterer enkeltrader i statuskortet uten å tegne det på nytt. Foldes inn i kortet som allerede står — se lib/fletting.ts.

steg 1 · Grunnlagartefakt: grunnlagsstatus

description — sendes til modellen

Oppdater status for de kravene som endret seg etter at saksbehandler sendte inn noe. Send kun kravene som faktisk er berørt — som regel ett. Ikke kall vis_grunnlagsstatus på nytt for å oppdatere ett krav: det leser hele saksmappa om igjen, og saksbehandleren sitter og venter foran kortet imens. Endret det hun sendte inn ingen status, merknad eller dokument på noe krav — for eksempel en beskjed om at hun venter, uten nytt innhold — skal du ikke kalle dette verktøyet i det hele tatt. Svar heller i chatten.

inputSchema · 8 felt

FeltTypeBeskrivelse
kravpåkrevdobjekt[]Kun kravene som endret status, merknad eller dokument
idpåkrevdstringKrav-id: M1–M6 eller B1–B7
navnpåkrevdstringKravets navn
statuspåkrevdenumfunnet = dokument dekker kravet klart. uklart = noe finnes, usikkert om det dekker. mangler = ingenting funnet. blokkerer = M1 eller M2 mangler.funnet · uklart · mangler · blokkerer
dokumentstringFilnavnet på dokumentet som dekker kravet, hvis funnet
datostringDokumentets dato
merknadpåkrevdstringÉn setning som begrunner statusen, på saksbehandlers språk
sporsmalstringBare når status ikke er "funnet". Det korte spørsmålet som tetter hullet — høyst 12 ord, ett spørsmålstegn. F.eks. "Hvilke tiltak er prøvd, og hvordan er de evaluert?". Ikke en feltetikett ("M4 Tiltak:"), og ikke en hel forklaring.

plan_utredning

Merker hver av de sju seksjonene med dekning. Endrer ingen tilstand, men er det skrivekøen i arbeidsflyt-context.tsx leser for å vite hva som skal skrives.

steg 2 · Utredningartefakt: tekstforslag

description — sendes til modellen

Legg dekningsplanen for utredningen: hvilke av de sju seksjonene saksmappa faktisk gir grunnlag for å skrive, og hvilke den ikke gjør. Kalles én gang når utredningssteget åpnes, før du foreslår tekst. Ingen tekst her — bare dekning og begrunnelse.

inputSchema · 4 felt

FeltTypeBeskrivelse
seksjonerpåkrevdobjekt[]Alle sju seksjonene, i malens rekkefølge
seksjonpåkrevdenumSeksjons-id fra dokumentmalenbakgrunn · informasjonsgrunnlag · elevens_syn · faglig_kognitiv · sosial_emosjonell · styrker · ordinaert_tilbud
dekningpåkrevdenumgod = saksmappa dekker seksjonen. tynn = noe finnes, men tynnere enn ideelt — skriv, og sett forbehold på utkastet. mangler = ikke grunnlag for å skrive noe i det hele tatt.god · tynn · mangler
begrunnelsepåkrevdstringÉn setning om hva i saksmappa som dekker — eller ikke dekker — denne seksjonen. Navngi dokumentet.

foresla_tekst

Tegner tekstforslag med kilder. Godkjenning skriver seksjonen til vurdering.json.

steg 2 · Utredningartefakt: tekstforslag

description — sendes til modellen

Foreslå tekst til én seksjon i den sakkyndige vurderingen, med kildebelegg. Bruk dette bare når grunnlaget faktisk holder. Er grunnlaget tynt, uklart eller motstridende: bruk be_om_avklaring i stedet.

inputSchema · 9 felt

FeltTypeBeskrivelse
seksjonpåkrevdenumSeksjons-id fra dokumentmalenbakgrunn · informasjonsgrunnlag · elevens_syn · faglig_kognitiv · sosial_emosjonell · styrker · ordinaert_tilbud
tekstpåkrevdstringUtkastet. Følg lengden i malen. Kilde og dato skal stå i selve teksten, ikke i fotnote. Merk faglige slutninger med "PPT vurderer at …".
kilderpåkrevdobjekt[]Én per dokument teksten bygger på. Alltid minst én.
filpåkrevdstringFilnavnet, nøyaktig slik det står i fil="…" på <dokument>. F.eks. "03_pedagogisk_rapport.md"
dokumentpåkrevdstringDokumentnavn slik saksbehandler kjenner det, med dato. F.eks. "Pedagogisk rapport, Lindeberg skole — 14.02.2026"
sitatpåkrevdstringOrdrett sitat fra dokumentet. Må kunne finnes igjen med søk i kildedokumentet. Aldri parafrasert.
dekkerstringDen nøyaktige setningen fra `tekst` som denne kilden dekker. Kopier ordrett, tegn for tegn — den skal kunne finnes igjen med søk i utkastet. Utelat feltet framfor å finne på en setning; en kilde som bærer hele avsnittet trenger den ikke.
brukt_tilpåkrevdstringÉn linje om hva du hentet fra denne kilden. F.eks. "beskrivelsen av lesehastighet"
forbeholdstringSett bare hvis grunnlaget er tynnere enn ideelt, men fortsatt holdbart. Vises som gul merknad.

be_om_avklaring

Tegner avklaringskortet i stedet for et tekstforslag. Endrer ingen tilstand.

steg 2 · Utredningartefakt: avklaring

description — sendes til modellen

Legg fram et problem med grunnlaget og be om saksbehandlers vurdering, i stedet for å foreslå tekst. Å bruke dette i stedet for foresla_tekst er riktig oppførsel når grunnlaget svikter — ikke en feil. Gjett deg aldri forbi en avklaring.

inputSchema · 10 felt

FeltTypeBeskrivelse
seksjonpåkrevdenumHvilken seksjon avklaringen gjelderbakgrunn · informasjonsgrunnlag · elevens_syn · faglig_kognitiv · sosial_emosjonell · styrker · ordinaert_tilbud
variantpåkrevdenummotstrid = to kilder sier ulike ting. tynt = én eller gammel kilde. manglende = ingen kilde dekker seksjonen.motstrid · tynt · manglende
problempåkrevdstringHva som er problemet, i to–tre setninger. Nøytralt. Ikke antyd hvem som har rett.
kilderpåkrevdobjekt[]Kildene saken gjelder. Ved motstrid: begge, side om side, med ordrette sitater.
filpåkrevdstringFilnavnet, nøyaktig slik det står i fil="…" på <dokument>. F.eks. "03_pedagogisk_rapport.md"
dokumentpåkrevdstringDokumentnavn slik saksbehandler kjenner det, med dato. F.eks. "Pedagogisk rapport, Lindeberg skole — 14.02.2026"
sitatpåkrevdstringOrdrett sitat fra dokumentet. Må kunne finnes igjen med søk i kildedokumentet. Aldri parafrasert.
dekkerstringDen nøyaktige setningen fra `tekst` som denne kilden dekker. Kopier ordrett, tegn for tegn — den skal kunne finnes igjen med søk i utkastet. Utelat feltet framfor å finne på en setning; en kilde som bærer hele avsnittet trenger den ikke.
brukt_tilpåkrevdstringÉn linje om hva du hentet fra denne kilden. F.eks. "beskrivelsen av lesehastighet"
valgpåkrevdstring[]Handlingsalternativer som korte pilletekster. Ved motstrid f.eks. ["Begge syn skal stå i teksten", "Legg mest vekt på skolens beskrivelse", "Legg mest vekt på foreldrenes beskrivelse", "Jeg innhenter mer"]. Ved manglende grunnlag: tom liste.

be_om_konklusjon

Tegner konklusjonsskjemaet. Ingen forhåndsvalgt verdi — saksbehandler velger.

steg 3 · Konklusjonartefakt: konklusjon

description — sendes til modellen

Be saksbehandler velge konklusjon og skrive begrunnelse. Du skal ALDRI antyde, rangere eller forhåndsvelge hvilket alternativ som er riktig. Ingen standardverdi.

inputSchema · 1 felt

FeltTypeBeskrivelse
paminnelsepåkrevdstringKort, nøytral påminnelse om hvilke kilder som finnes i saken, så saksbehandler slipper å bla. Ingen vekting, ingen antydning om retning.

vis_review

Tegner flaggene mot saksbehandlers begrunnelse. Blokkerer aldri.

steg 3 · Konklusjonartefakt: review

description — sendes til modellen

Vis resultatet av kontrollen av saksbehandlers begrunnelse. Kalles etter at begrunnelsen er skrevet. Du kontrollerer kun forankring — du vurderer ikke om konklusjonen er faglig riktig.

inputSchema · 6 felt

FeltTypeBeskrivelse
flaggpåkrevdobjekt[]Sorter med de alvorligste først. Tom liste hvis alt er forankret.
typepåkrevdenumuten_belegg = påstand uten dekning i dokumentene (alvorligst). svakt_belegg = bare én kilde. ikke_omtalt = dokumentert forhold mangler i begrunnelsen. motstrid = kilde sier noe annet.uten_belegg · svakt_belegg · ikke_omtalt · motstrid
utsagnpåkrevdstringDet konkrete utsagnet i begrunnelsen dette gjelder, sitert ordrett. La stå tom ved ikke_omtalt, der poenget er at noe mangler i begrunnelsen.
forklaringpåkrevdstringFormuler som i kunnskapsbasen: "Du skriver X. Jeg finner ikke dette i saksdokumentene."
kildestringRelevant kildedokument, hvis noe
oppsummeringpåkrevdstringÉn setning om helhetsinntrykket. Ved null flagg: en kort, positiv kvittering.

foresla_tiltak

Tegner tiltakskatalogen med anbefalinger. Avkryssing skriver til vurdering.json.

steg 4 · Tilrådingartefakt: tiltak

description — sendes til modellen

Foreslå tiltak fra katalogen for tilrådinga. Marker anbefalt kun der du har konkret dekning i saksdokumentene. Saksbehandler krysser av selv.

inputSchema · 4 felt

FeltTypeBeskrivelse
anbefaltepåkrevdobjekt[]Kun tiltak du har konkret dekning for
tiltak_idpåkrevdstringId fra tiltakskatalogen: intensiv_lesing, lydstotte, talesyntese, konkretiseringsmateriell, automatisering, liten_gruppe, en_til_en, stotte_i_klassen, visuell_struktur, korte_okter, oppstartsstotte, ask, digitale_hjelpemidler, statped, hjelpemiddelsentral, veiledning_skole
begrunnelsepåkrevdstringÉn linje med hvilken kilde i saken som støtter dette tiltaket
merknadpåkrevdstringKort tekst om hva tilrådinga ellers må inneholde for å være vedtaksklar

foresla_dokumentendring

Foreslår ny tekst for én blokk i dokumentet. Endrer ingenting før saksbehandler godtar; godkjenning skriver gjennom samme vei som manuell redigering.

steg 5 · Dokumentartefakt: dokumentendring

description — sendes til modellen

Foreslå ny tekst for én blokk i det ferdige dokumentet. Saksbehandler godtar eller avviser. Du skriver aldri direkte i dokumentet, og du foreslår aldri en konklusjon.

inputSchema · 3 felt

FeltTypeBeskrivelse
blokk_idpåkrevdstringId fra dokumentmalen: bakgrunn, informasjonsgrunnlag, elevens_og_foresattes_syn, faglig_kognitiv, sosial_emosjonell, styrker, ordinaert_tilbud, konklusjon, begrunnelse, mal, kompetanse, varighet
ny_tekstpåkrevdstringHele den nye teksten for blokka. Ren tekst: avsnitt skilles med blank linje, punkter begynner med «- ». Ikke fet, ikke kursiv, ingen overskrifter.
begrunnelsepåkrevdstringÉn til to setninger om hva du endret og hvorfor

vis_dokumentsjekk

Tegner kvalitetssjekken som et kort der hvert funn peker på blokka det gjelder. Endrer ingen tilstand og blokkerer aldri — saksbehandler kan skrive ut et dokument kortet mener har hull.

steg 5 · Dokumentartefakt: dokumentsjekk

description — sendes til modellen

Vis kvalitetssjekken av det ferdige dokumentet. Rapporter det du finner, også når du ikke finner noe. Du blokkerer aldri — saksbehandler kan skrive ut et dokument du mener har hull.

inputSchema · 8 felt

FeltTypeBeskrivelse
funnpåkrevdobjekt[]
blokk_idpåkrevdstringId fra dokumentmalen som funnet gjelder
alvorpåkrevdenummangler · svakt · merknad
hvapåkrevdstringÉn setning om hva som er galt
forslagpåkrevdstringHva som må hentes inn eller skrives
minstekravpåkrevdobjekt[]Minstekrav a–e etter § 11-8
kravpåkrevdenuma · b · c · d · e
dekketpåkrevdboolean

meld_grense

Tegner grensekortet med alternativer. Endrer ingen tilstand. Umappet i VERKTOY_STEG med vilje: grensa er en hendelse i samtalen, ikke arbeid som hører hjemme i det festede panelet.

uten stegfri samtale

description — sendes til modellen

Meld fra at du ikke kan gjøre det saksbehandler ba om, fordi det bryter en ufravikelig regel. Bruk dette i stedet for å forklare avslaget i løpende tekst: da blir grensa synlig som et kort, og saksbehandler får noe hun faktisk kan gjøre i stedet. Å melde en grense er riktig oppførsel, ikke en feil.

inputSchema · 6 felt

FeltTypeBeskrivelse
regelpåkrevdenumHvilken av de ufravikelige reglene som slår inn. Én regel per kort — treffer flere, velg den som ligger nærmest det saksbehandler faktisk ba om.ingen_konklusjon · ingen_oppdiktede_fakta · ingen_hardere_tolkning · ingen_diagnose · ingen_ressursbegrunnelse · ingen_personkarakteristikk · saksbehandler_eier_vurderingen · blokkerende_krav_mangler · ett_om_gangen
bedt_ompåkrevdstringDet saksbehandler ba om, gjengitt kort og nøytralt med hennes egne ord. Ikke moraliser, og ikke omformuler det til noe verre enn hun sa.
hvorforpåkrevdstringÉn til to setninger om hvorfor du ikke kan gjøre det. Vis til regelen eller kilden, ikke til deg selv: ikke «jeg har ikke lov til», men «konklusjonen er din alene».
naermestepåkrevdobjekt[]Det nærmeste du faktisk kan gjøre. Alltid minst ett — en grense uten vei videre er en blindvei, og da går saksbehandler rundt deg i stedet.
etikettpåkrevdstringKort knappetekst på saksbehandlers språk. F.eks. "Vis meg hva kildene faktisk sier"
meldingpåkrevdstringMeldinga som sendes som saksbehandlers neste tur hvis hun trykker. Skriv den i hennes stemme, ikke i din.

skriv_brev

Tegner brevutkastet med kopierbar tekst. Endrer ingen tilstand, og sender ingenting — samhandlingsdelen er ikke bygget. Eneste verktøyet hvis produkt er ment for noen utenfor PPT, og derfor det eneste som melder fra om egne [fylles ut]-felt.

uten stegfri samtaleartefakt: brev

description — sendes til modellen

Skriv et brev fra PPT ut av saken — til kontaktlærer, skole eller andre som sitter på opplysninger vi mangler. Bruk dette hver gang saksbehandler ber om et brev, en henvendelse eller en forespørsel om supplerende opplysninger. Brevet skal kunne besvares kort og uten nytt kartleggingsarbeid. Skriv klarspråk: korte setninger, aktiv form, du-form til mottakeren, ingen fagbegreper uten forklaring, ingen unnskyldende innledning. Aldri konklusjon om vanskens art, aldri diagnose, aldri forslag til tiltak, og aldri opplysninger som ikke står i saksdokumentene.

inputSchema · 22 felt

FeltTypeBeskrivelse
formaalpåkrevdstringÉn linje til saksbehandler om hva brevet skal utrette. Dette står som korttittel og er ikke en del av brevteksten.
motpartpåkrevdstringHvem vi samhandler med, i ett ord, slik saksbehandler ville sagt det: "Lærer", "Skole", "Foresatte", "BUP". Dette blir merket på dokumentet når brevet arkiveres i saksmappa — ikke en hilsen, og ikke navnet på personen.
datopåkrevdstringBrevdato. Kjenner du den ikke, skriv nøyaktig "[fylles ut]" — ikke gjett.
mottakerpåkrevdstringMottakeren med rolle og sted, slik det står i saken. F.eks. "Marit Hovden, kontaktlærer 4A, Lindeberg skole"
emnepåkrevdstringEmnefeltet. Én linje som sier hva brevet gjelder, uten saksnummer du ikke har.
innledningpåkrevdstringTo til fire setninger: hvem vi er, hva saken gjelder, og hva vi ber om. Saklig og kollegialt. Er mangelen vanlig eller malens skyld, si det — brevet skal ikke lese som kritikk av mottakeren. Ikke unnskyld deg.
kjentpåkrevdobjekt[]Det vi allerede vet fra saksdokumentene, med kilde og dato på hvert punkt. Tom liste hvis saken ikke sier noe om temaet — da skal du ikke finne på punkter for å fylle den.
punktpåkrevdstringÉn setning om noe vi allerede vet, så mottakeren slipper å gjenta det.
filpåkrevdstringFilnavnet det står i, nøyaktig slik det står i fil="…" på <dokument>.
dokumentpåkrevdstringDokumentnavnet slik mottakeren kjenner det. F.eks. "Pedagogisk rapport"
datopåkrevdstringDokumentets dato, slik den står i saken.
sporsmalpåkrevdstring[]Spørsmålene, i den rekkefølgen de skal stå. Hvert spørsmål skal kunne besvares kort og uten nytt kartleggingsarbeid, og handle om observerbare situasjoner — ikke om mottakerens vurdering av eleven. Ett spørsmål per punkt.
praktiskpåkrevdobjektDet mottakeren trenger for å svare.
fristpåkrevdstringSvarfrist. Har du ikke grunnlag for en dato: "[fylles ut]".
kontaktpersonpåkrevdstringHvem mottakeren skal svare til — saksbehandleren i saken.
telefonpåkrevdstringTelefonnummer, eller "[fylles ut]".
opplysningpåkrevdstringSetningen som sier hva svaret brukes til, og at det gjøres kjent for foresatte. Mottakeren skal vite dette før hun skriver, ikke etterpå.
avsenderpåkrevdobjektAvsenderen, hentet fra <sak>. Ikke funnet på.
navnpåkrevdstring
stillingpåkrevdstring
enhetpåkrevdstringF.eks. "PPT, Bydel Alna"
apne_feltpåkrevdstring[]Hvert felt du lot stå som "[fylles ut]", med feltets navn. F.eks. ["dato", "svarfrist"]. Tom liste bare når brevet faktisk er komplett — kortet melder disse til saksbehandler, så en glemt oppføring er et hull hun ikke får se.

Oppslagsverktøy · 2

sok_kunnskapsbase

Returnerer hele kunnskapsbasen (~14 kB) til modellen. Eneste verktøyet som gir data tilbake, og derfor det eneste som kan fortsette turen.

uten stegfri samtale

description — sendes til modellen

Slå opp i PPTs ressursbibliotek: regelverk, kvalitetskriterier og dokumentasjonskrav. Bruk dette når saksbehandler spør om regelverk, prosedyre eller fagbegreper, og svar med henvisning til kilden.

inputSchema · 1 felt

FeltTypeBeskrivelse
sporsmalpåkrevdstringHva du leter etter, med saksbehandlers egne ord

vis_utdrag

Kontrollerer hvert sitat mot dokumentet det oppgis å komme fra, og tegner utdragskortet. Sitater som ikke finnes avvises med beskjed om å rette dem — det eneste verktøyet som kan si nei til modellen.

uten stegfri samtaleartefakt: utdrag

description — sendes til modellen

Legg fram ordrette utdrag fra saksdokumentene som svar på det saksbehandler spør om. Bruk dette hver gang du sier noe om hva som står i saken — påstander om saksmappa hører ikke hjemme i løpende tekst uten at utdraget står ved siden av. Sitatet kontrolleres mot dokumentet, så det må være kopiert tegn for tegn.

inputSchema · 6 felt

FeltTypeBeskrivelse
temapåkrevdstringKort overskrift for hva utdragene svarer på. F.eks. "Kartlegging som allerede er gjort"
utdragpåkrevdobjekt[]
filpåkrevdstringFilnavnet, nøyaktig slik det står i fil="…" på <dokument>. F.eks. "05_wisc.md"
sitatpåkrevdstringOrdrett utdrag fra dokumentet, kopiert tegn for tegn. Ikke parafrasert, ikke satt sammen av biter fra ulike steder.
hvorforpåkrevdstringÉn linje om hva dette utdraget viser, med dine egne ord
manglerstring[]Det du lette etter og IKKE fant dekning for. Én kort setning per punkt. Like viktig som det du fant.