MCP
Dezelfde API, gericht aan een assistent in plaats van aan een scenario. Een MCP-client kiest tijdens het draaien wat hij aanroept, op basis van de toolbeschrijvingen — hij bereikt dus precies wat de onderliggende inloggegevens bereiken, en onder elke tool ligt een aanroep van de publieke API.
Eén endpoint
Alles gaat naar POST /v1/mcp. Er is geen sessie te openen en geen stroom vast te houden: GET en DELETE antwoorden 405, en elk bericht is zijn eigen verzoek.
POST https://api.mosaqo.app/v1/mcp
Authorization: Bearer $MOSAQO_KEY
MCP-Protocol-Version: 2026-07-28Protocolrevisies 2025-03-26 tot en met 2026-07-28 worden allemaal bediend. Een client die met initialize begint krijgt de verwachte handdruk; een die zijn versie bij elk verzoek noemt wordt zo bediend.
Koppelen met een API-sleutel
De snelste weg, en de juiste voor een tool die u zelf draait. Elke sleutel werkt als bearer-token, en de aangeboden tools worden beperkt tot de scopes van die sleutel.
De meeste clients nemen een blok als dit:
{
"mcpServers": {
"mosaqo": {
"type": "http",
"url": "https://api.mosaqo.app/v1/mcp",
"headers": { "Authorization": "Bearer $MOSAQO_KEY" }
}
}
}curl -X POST https://api.mosaqo.app/v1/mcp \
-H "Authorization: Bearer $MOSAQO_KEY" \
-H "Content-Type: application/json" \
-H "MCP-Protocol-Version: 2026-07-28" \
-H "Mcp-Method: tools/list" \
-d '{ "jsonrpc": "2.0", "id": 1, "method": "tools/list" }'Koppelen via OAuth
Voor een connector in andermans directory, waar de persoon nooit een sleutel aanraakt. Discovery volgt RFC 9728 en RFC 8414, clients registreren zichzelf met RFC 7591, en elke autorisatie gebruikt PKCE met S256.
curl https://api.mosaqo.app/.well-known/oauth-protected-resource
curl https://api.mosaqo.app/.well-known/oauth-authorization-serverEen niet-geautoriseerde aanroep zegt zelf waar te gaan en wat te vragen:
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer realm="Mosaqo MCP",
resource_metadata="https://api.mosaqo.app/.well-known/oauth-protected-resource",
scope="qr:read analytics:read reviews:read exports:read"Wie goedkeurt is aangemeld bij Mosaqo, kiest de werkruimte waarop het slaat, en kan dat alleen waar hij eigenaar of beheerder is — dezelfde grens die bepaalt wie een API-sleutel mag uitgeven. Ontkoppelen kan daarna onder Bulk & API.
Wat een assistent kan
De scopes die u al kent, ongewijzigd. Een tool die de inloggegevens niet toestaan staat niet in tools/list en is ook door hem te noemen niet aan te roepen — het levende antwoord voor elke verbinding is dus tools/list zelf.
| Scope | Geeft recht op |
|---|---|
qr:read | QR-codes, mappen en sjablonen opsommen en lezen |
qr:write | Maken, wijzigen, verleggen, publiceren, archiveren en verwijderen |
exports:read | Gerenderde kaarten downloaden |
analytics:read | Geaggregeerde analytics en losse scans |
bulk:write | Bulkopdrachten aanmaken en lezen |
webhooks:write | Webhook-abonnementen beheren |
reviews:read | Locaties, enquêtes en hoe ze lopen — nooit de antwoorden zelf |
Wat hij nooit bereikt
Wat mensen in een enquête schreven. reviews:read opent uw locaties, uw enquêtes en hun verloop: de aantallen, de scores, de spreiding per vraag. De zinnen die een bezoeker typte worden hier evenmin teruggegeven als ergens anders waar inloggegevens reiken — om dezelfde reden dat de feedback.*-events een score dragen en nooit de woorden.
Een code verwijderen. De REST-route vraagt om een getypte bevestiging omdat het vernietigen van de doorverwijzing achter een gedrukte code niet terug te draaien is, en dat is geen bevestiging die een assistent namens iemand geeft. In plaats daarvan is er archiveren, en dat draait terug.
Schrijven is als schrijven gemarkeerd. Een tool die iets wijzigt draagt readOnlyHint: false, en archiveren draagt destructiveHint: true — dat is wat een client doet stoppen en een persoon laat vragen voordat hij handelt.