Naar de inhoud

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-28

Protocolrevisies 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-server

Een 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.

ScopeGeeft recht op
qr:readQR-codes, mappen en sjablonen opsommen en lezen
qr:writeMaken, wijzigen, verleggen, publiceren, archiveren en verwijderen
exports:readGerenderde kaarten downloaden
analytics:readGeaggregeerde analytics en losse scans
bulk:writeBulkopdrachten aanmaken en lezen
webhooks:writeWebhook-abonnementen beheren
reviews:readLocaties, 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.