Przejdź do treści

MCP

To samo API, adresowane do asystenta, a nie do scenariusza. Klient MCP wybiera, co wywołać, w trakcie działania — z opisów narzędzi — więc sięga dokładnie tam, gdzie sięgają jego poświadczenia, a pod każdym narzędziem leży wywołanie publicznego API.

Jeden endpoint

Wszystko idzie na POST /v1/mcp. Nie ma sesji do otwarcia ani strumienia do trzymania: GET i DELETE odpowiadają 405, a każda wiadomość to osobne żądanie.

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

Obsługiwane są wszystkie rewizje protokołu od 2025-03-26 do 2026-07-28. Klient zaczynający od initialize dostaje oczekiwany handshake; ten, który podaje wersję w każdym żądaniu, jest obsługiwany tak.

Podłączenie kluczem API

Najszybsza droga i właściwa dla narzędzia, które prowadzisz sam. Każdy klucz działa jako token bearer, a oferowane narzędzia są przycięte do zakresów tego klucza.

Większość klientów przyjmuje taki blok:

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

Podłączenie przez OAuth

Dla konektora w cudzym katalogu, gdzie człowiek nigdy nie dotyka klucza. Odkrywanie według RFC 9728 i RFC 8414, klienci rejestrują się sami przez RFC 7591, a każda autoryzacja używa PKCE z S256.

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

Nieautoryzowane wywołanie samo mówi, dokąd iść i o co prosić:

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"

Osoba zatwierdzająca jest zalogowana w Mosaqo, wybiera przestrzeń, której to dotyczy, i może to zrobić tylko tam, gdzie jest właścicielem lub administratorem — ta sama granica, która decyduje, kto wydaje klucz API. Odłączyć można później w Bulk & API.

Co asystent może

Zakresy, które już znasz, bez zmian. Narzędzie, na które poświadczenia nie pozwalają, nie trafia do tools/list i nie da się go wywołać nawet po nazwie — żywą odpowiedzią dla każdego połączenia jest więc samo tools/list.

ZakresPozwala na
qr:readListowanie i odczyt kodów QR, folderów i szablonów
qr:writeTworzenie, zmianę, przekierowanie, publikację, archiwizację i usuwanie
exports:readPobieranie wyrenderowanych kart
analytics:readZagregowaną analitykę i pojedyncze skanowania
bulk:writeTworzenie i odczyt zadań zbiorczych
webhooks:writeZarządzanie subskrypcjami webhooków
reviews:readMiejsca, ankiety i to, jak im idzie — nigdy same odpowiedzi

Czego nigdy nie dosięgnie

Tego, co ludzie napisali w ankiecie. reviews:read otwiera Twoje miejsca, ankiety i to, jak im idzie: liczby, oceny, rozkład odpowiedzi na każde pytanie. Zdania wpisane przez odwiedzającego nie są tu zwracane bardziej niż gdziekolwiek indziej, dokąd sięgają poświadczenia — z tego samego powodu, dla którego zdarzenia feedback.* niosą ocenę, a nigdy słowa.

Usunięcie kodu. Trasa REST wymaga wpisanego potwierdzenia, bo zniszczenia przekierowania za wydrukowanym kodem nie da się cofnąć, a takiego potwierdzenia asystent nie daje za kogoś. Zamiast tego jest archiwizacja, i ta się cofa.

Zapis jest oznaczony jako zapis. Narzędzie, które coś zmienia, niesie readOnlyHint: false, a archiwizacja destructiveHint: true — i to sprawia, że klient zatrzymuje się i pyta człowieka, zanim zadziała.