MCP
Signerat MCP-endpoint för AI-agenter.
Hela SSWC-boken 2010 är tillgänglig som ett MCP-verktygsset. Varje svar på ett tools/call är signerat med Ed25519 så att en agent kan bevisa att texten kommer härifrån och inte har manipulerats.
Endpoint
https://sswcboken.se/api/mcp
Server card (inkl. publik nyckel): /.well-known/mcp.json
Verktyg
- server_info
- Metadata: dataset, counts, licensposition, signeringsalgoritm.
- search_texter
- Hybridsökning (semantisk + svensk fulltext) över alla 181 bidrag.
- get_text
- En text ordagrant (body verbatim från 2010) via slug eller nr.
- list_texter
- Paginerad lista över texter.
- get_forfattare
- Författardossier (då/nu) plus deras texter.
- list_drommar
- Drömscoreboard: 181 verdicts (slog_in / muterade / dog / oppen).
- list_teman
- 9 tematiska kluster med counts primär/sekundär.
- get_tema
- Ett tema och alla dess texter (primära först).
Resources: sswc://text/{nr} och sswc://forfattare/{slug} (resources/list + resources/read, signerade som tools/call).
Exempelanrop
curl -s https://sswcboken.se/api/mcp \
-H 'content-type: application/json' \
-H 'accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}'curl -s https://sswcboken.se/api/mcp \
-H 'content-type: application/json' \
-H 'accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'curl -s https://sswcboken.se/api/mcp \
-H 'content-type: application/json' \
-H 'accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":3,"method":"tools/call",
"params":{"name":"search_texter","arguments":{"q":"demokrati","limit":5}}}'curl -s https://sswcboken.se/api/mcp \
-H 'content-type: application/json' \
-H 'accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":4,"method":"tools/call",
"params":{"name":"get_tema","arguments":{"slug":"demokrati-makt"}}}'Publik nyckel
Ed25519, kid ln2Y6OsJnhuUnXiH. Hämtas från /.well-known/mcp.json.
{
"kty": "OKP",
"crv": "Ed25519",
"x": "_XTbAAUHZSw9umaO-adqh11fn2hkts8EKOQ9-eFAiyA",
"kid": "ln2Y6OsJnhuUnXiH",
"alg": "EdDSA",
"use": "sig"
}Så verifierar du en signatur
Signaturen är en JWS i compact-form (header.payload.signature) där payload är canonicalized JSON (sorterade nycklar) av result.structuredContent. Alla tools/call-svar bär även ett content_hash (sha256) för snabb integritetscheck.
# 1. Hämta publik nyckel
curl -s https://sswcboken.se/.well-known/mcp.json | jq .jwks
# 2. Anropa ett verktyg och plocka ut signaturen
RESP=$(curl -s https://sswcboken.se/api/mcp -H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"server_info","arguments":{}}}')
echo "$RESP" | jq -r .result.signature.jws
# 3. Verifiera JWS-signaturen mot publik nyckel (t.ex. med jose):
# node -e "..." eller python -m jwcrypto eller jose-cliRättigheter: Per-författare upphovsrätt 2010. INTE Creative Commons. Återpublicerad i delningens anda. Invändningar tas emot på joakim@jardenberg.com och rättas inom 24 timmar.