Hoppa till innehåll

MCP

Samma API, riktat till en assistent i stället för till ett scenario. En MCP-klient väljer vad den ska anropa medan den kör, utifrån verktygsbeskrivningarna — den når alltså exakt det som dess uppgifter når, och under varje verktyg ligger ett anrop mot det publika API:et.

En enda endpoint

Allt går till POST /v1/mcp. Det finns ingen session att öppna och ingen ström att hålla: GET och DELETE svarar 405, och varje meddelande är sin egen begäran.

POST https://api.mosaqo.app/v1/mcp
Authorization: Bearer $MOSAQO_KEY
MCP-Protocol-Version: 2026-07-28

Protokollrevisionerna 2025-03-26 till 2026-07-28 betjänas alla. En klient som börjar med initialize får handskakningen den väntar sig; en som anger sin version i varje begäran betjänas så.

Koppla med en API-nyckel

Den snabbaste vägen, och den rätta för ett verktyg du kör själv. Vilken nyckel som helst fungerar som bearer-token, och de verktyg som erbjuds skärs ned till den nyckelns scopes.

De flesta klienter tar ett block som detta:

{
  "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" }'

Koppla via OAuth

För en koppling i någon annans katalog, där personen aldrig hanterar en nyckel. Upptäckt följer RFC 9728 och RFC 8414, klienter registrerar sig själva med RFC 7591, och varje auktorisering använder PKCE med S256.

curl https://api.mosaqo.app/.well-known/oauth-protected-resource
curl https://api.mosaqo.app/.well-known/oauth-authorization-server

Ett oauktoriserat anrop talar själv om vart man ska gå och vad man ska be om:

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"

Den som godkänner är inloggad i Mosaqo, väljer vilken arbetsyta det gäller och kan bara göra det där hen är ägare eller administratör — samma gräns som avgör vem som får utfärda en API-nyckel. Kopplingen kan brytas efteråt under Bulk & API.

Vad en assistent kan

De scopes du redan känner till, oförändrade. Ett verktyg som uppgifterna inte tillåter finns inte i tools/list och går inte att anropa genom att namnge det — det levande svaret för varje koppling är alltså tools/list självt.

ScopeGer rätt till
qr:readLista och läsa QR-koder, mappar och mallar
qr:writeSkapa, ändra, styra om, publicera, arkivera och radera
exports:readLadda ner renderade kort
analytics:readAggregerad analys och enskilda skanningar
bulk:writeSkapa och läsa massjobb
webhooks:writeHantera webhook-prenumerationer
reviews:readPlatser, undersökningar och hur de går — aldrig svaren själva

Vad den aldrig når

Det folk skrev i en undersökning. reviews:read öppnar dina platser, dina undersökningar och hur de går: antalen, betygen, fördelningen per fråga. Meningarna en besökare skrev returneras här lika lite som någon annanstans dit uppgifter når — av samma skäl som feedback.*-händelserna bär ett betyg och aldrig orden.

Att radera en kod. REST-rutten ber om en inskriven bekräftelse eftersom att förstöra omdirigeringen bakom en tryckt kod inte går att ångra, och det är ingen bekräftelse en assistent ger åt någon annan. I stället erbjuds arkivering, och den går att ångra.

Skrivning är märkt som skrivning. Ett verktyg som ändrar något bär readOnlyHint: false, och arkivering bär destructiveHint: true — det är det som får en klient att stanna och fråga en människa innan den kör.