De zeven MCP-tools

Vijf tools zijn read-only. Twee tools kunnen schrijven, maar uitsluitend additief: append_to_page voegt toe aan het einde van een bestaande pagina, create_page maakt een nieuwe pagina aan. Geen van beide kan bestaande inhoud overschrijven of verwijderen — er zijn geen update_page- of delete_page-tools.

search_notes

Doorzoekt paginatitels en een begrensde preview-scan van recente pagina's op trefwoorden.

query
tekst, 2–200 tekens
limit
1–10 resultaten, standaard 8

list_notebooks

Geeft je beschikbare OneNote-notitieblokken terug.

limit
max 50
skip
paginering

list_sections

Geeft de secties van een notitieblok terug, of van alle notitieblokken als er geen ID is opgegeven.

notebookId
optioneel
limit / skip
paginering

list_pages

Geeft de pagina's binnen één sectie terug.

sectionId
verplicht
limit / skip
paginering

get_page

Haalt de platte tekstinhoud van één pagina op, tot een ingesteld maximum.

pageId
verplicht
maxChars
1.000–20.000, standaard 12.000

Geeft contentTruncated: true terug zodra een pagina langer is dan maxChars, zodat je assistent weet dat er meer tekst bestaat dan getoond.

append_to_page Nieuw

Voegt HTML-inhoud toe aan het einde van een bestaande pagina. Overschrijft of verwijdert nooit bestaande inhoud.

pageId
verplicht
content
HTML, 1–20.000 tekens

create_page Nieuw

Maakt een nieuwe pagina aan in een sectie met een titel en HTML-inhoud. Maakt altijd een nieuwe pagina — twee keer aanroepen geeft twee pagina's.

sectionId
verplicht
title
1–255 tekens
content
HTML, 1–20.000 tekens

Hoe het zoeken werkt

Belangrijk om te weten voordat je een vraag stelt:

Wat NoteBuddy (nog) niet kan

Scopes: verplicht vs. optioneel

De MCP-server controleert bij elk verzoek maar één ding: staat access_as_user in de scp-claim van het token? Alle andere scopes die je bij het koppelen kunt opgeven, zijn optioneel en dienen een ander doel.

Scope Waarvoor Status
api://6d98c49c-b21c-461c-8ca1-66e23c043162/access_as_user De enige scope die NoteBuddy daadwerkelijk verifieert voordat een tool-aanroep wordt toegestaan. Verplicht
offline_access Geeft een refresh token, zodat de client niet telkens opnieuw hoeft in te loggen. De server controleert dit niet — puur voor het gemak van de gebruiker. Optioneel
openid / profile Alleen nodig voor ChatGPT's OIDC-koppeling ("authorization domain claiming" via e-mail). NoteBuddy zelf gebruikt deze claims niet. Optioneel

Downstream vraagt de server zelf, los van wat de client aanvraagt, altijd https://graph.microsoft.com/.default op via een on-behalf-of-uitwisseling — dat pakt automatisch de Graph-permissie Notes.ReadWrite die al op de app-registratie staat. Dit heeft geen invloed op welke scopes jouw client bij het inloggen moet aanvragen.

Let op: de mcp-remote-bridge voor Claude Desktop op de koppelpagina vraagt bewust alleen access_as_user aan — dat werkt, maar betekent geen refresh token en dus vaker opnieuw inloggen.

Was je al eerder org-breed geconsenteerd toen NoteBuddy nog Notes.Read gebruikte? Die toestemming dekt Notes.ReadWrite niet automatisch — een beheerder moet de organisatiebrede toestemmingslink opnieuw doorlopen.

Veelvoorkomende OAuth-fouten

NoteBuddy gebruikt een multitenant Entra-app met een on-behalf-of-uitwisseling naar Microsoft Graph. Dat maakt deze foutmeldingen het meest waarschijnlijk:

AADSTS50011 — redirect URI mismatch

De callback-URL die je client (ChatGPT, browser) gebruikt, staat niet exact geregistreerd bij de Entra app-registratie. Dit speelt met name bij de beheerderstoestemming-link: de redirect_uri (bijvoorbeeld https://jouw-domein/admin-consent-success) moet letterlijk onder App registrations → NoteBuddy → Authentication → Web → Redirect URIs staan, inclusief het schema (https) en zonder afwijkende trailing slash.

AADSTS65001 — toestemming vereist maar niet verleend

De gebruiker of tenant heeft nog geen consent gegeven voor NoteBuddy. Vraag een gebruiker het opnieuw te proberen en toestemming te accepteren, of laat een beheerder organisatiebrede toestemming geven zodat individuele consent niet meer nodig is.

"Gebruikers mogen geen apps van derden toestaan"

Sommige organisaties zetten gebruikersconsent standaard uit (Entra → Enterprise applications → Consent and permissions). In dat geval faalt de individuele login altijd, ongeacht wat de gebruiker doet — alleen een beheerder kan dit oplossen via de organisatiebrede toestemmingslink.

Token wordt geweigerd door de MCP-server

NoteBuddy valideert per tenant de JWT-handtekening, issuer en audience. Een token dat voor een andere audience (bijvoorbeeld rechtstreeks voor Microsoft Graph) is uitgegeven in plaats van voor de NoteBuddy-app-ID, wordt geweigerd. Controleer dat de client de juiste resource/scope gebruikt zoals beschreven op de koppelpagina.

"Cannot GET /authorize" op de NoteBuddy-URL zelf

Sommige MCP-clients (waaronder VS Code's ingebouwde HTTP-verbinding) proberen na het lezen van de discovery-metadata alsnog een /authorize-aanroep te doen op het eigen adres van de MCP-server in plaats van bij Microsoft Entra. Dit gebeurt wanneer de client Entra's OpenID Connect-discoverydocument niet correct kan vinden op het generieke OAuth-pad dat hij verwacht. NoteBuddy implementeert zelf geen autorisatieserver — er bestaat geen /authorize-route op de NoteBuddy-URL. Gebruik in dat geval de mcp-remote-bridge in plaats van de directe HTTP-verbinding, zoals beschreven bij VS Code op de koppelpagina.

Voor ontwikkelaars

Bouw je zelf een MCP-client tegen deze server? Het protected-resource metadata-document beschrijft machine-leesbaar welke autorisatieserver, resource-indicator en scopes NoteBuddy verwacht, volgens RFC 9728.

https://notebuddy-skills4it.bravecliff-748c4631.westeurope.azurecontainerapps.io/.well-known/oauth-protected-resource

De MCP-server zelf staat op /mcp en vereist een geldig bearer-token; een servicestatus-endpoint zonder authenticatie is beschikbaar op /health.