REST API · SDK · MCP
Fejlesztői dokumentáció
A JuriSafe magyar jogi AI nyilvános API-jának, SDK-inak és MCP-kiszolgálójának teljes leírása - másolható minták minden végponthoz.
Áttekintés #
A JuriSafe egy magyar jogi asszisztens: hatályos jogszabályok (Ptk., Btk., Mt., Áfa, GDPR, …) közötti hibrid (BM25 + dense) visszakeresés, jogszabályhely-pontos idézés, és tool-hívó ügynök, ami dokumentumot is generál (felszólítás, meghatalmazás, kereset stb.).
A nyilvános felület három formában érhető el:
- HTTP REST API - minden ami a böngészőben működik, az itt is. SSE chat-stream, CRUD végpontok beszélgetésekre / ügyfelekre / határidőkre / dokumentumokra.
- Hivatalos SDK-k - Python és JavaScript/TypeScript csomagok, zero-config kapcsolódás.
- MCP server - autonóm ügynökök (Claude Desktop, Cursor, custom orchestrator) közvetlenül beépíthetik a
JuriSafeeszközeit.
Stabil végpontok kezdődnek /api/ prefixxel. Minden válasz JSON; a chat text/event-stream (SSE).
Jogi lefedettség #
A korpusz három joghatóságot fed le. A GET /api/presets végpont és a chat felület Praxis menüje mutatja, melyik gyakorlati területre milyen jogszabály-csoportot ajánl a rendszer.
Magyar jog
33 alap törvényCivil, eljárási, büntetőjog, munkajog, adójog, közbeszerzés, adatvédelem, ingatlan, banki, versenyjog, fogyasztóvédelem, szellemi alkotások - NJT-ből ingestálva.
EU jog
14 jogszabályGDPR, Brüsszel Ia/IIb, Róma I/II, öröklési rendelet, európai insolvencia, HÉA-irányelv, Charter - EUR-Lex-ből.
Nemzetközi jog
16 instrumentumEJEE, Convention 108+, Budapesti egyezmény, UDHR, ICCPR, CRC, CISG, New York 1958, Római Statútum, Apostille - Európa Tanács, ENSZ és Hága.
Más államok joga jövőbeli
DE · AT · RO · SK · …A rendszer ISO országkód szerint képes további joghatóságokat is kezelni. Új jogrendszer iránti igény az üzemeltetőhöz nyújtható be.
Magyar jog részletes lista
Civil/kötelmi (Ptk., Ctv., Vht., Cstv.), eljárás (Pp., Be., Kp., Ákr.), büntetőjog (Btk., Szabs.), munkajog (Mt., Tbj.), adójog (Szja, Áfa, Tao, Art., Air.), közbeszerzés (Kbt.), adatvédelem (Info tv.), ingatlan (Inytv., Földforgalmi), banki (Hpt.), versenyjog (Tpvt.), fogyasztóvédelem (Fgytv.), szellemi alkotások (Szjt., Vt., Szt.).
EU jog részletes lista
GDPR (32016R0679), Brüsszel Ia (1215/2012), Brüsszel IIb (1111/2019), Róma I (593/2008), Róma II (864/2007), Öröklési rendelet (650/2012), Európai insolvencia (848/2015), HÉA-irányelv (2006/112), Fogyasztói jog irányelv (2011/83), Digitális tartalom irányelv (2019/770), Áruk adásvétele irányelv (2019/771), Üzleti titok irányelv (2016/943), Szabad mozgás irányelv (2004/38), Alapjogi Charta.
Nemzetközi jog részletes lista
16 fő instrumentum, amelyekre magyar gyakorlat rendszeresen hivatkozik:
- Európa Tanács: EJEE (ETS 5), Convention 108+ (ETS 108), Budapesti Egyezmény (ETS 185).
- ENSZ alapjogi: UDHR, ICCPR (PPJNE), ICESCR (GSZKJE), CRC (gyermekjogi), CEDAW, CRPD.
- ENSZ kereskedelmi: CISG (Bécsi Vételi Egyezmény), New York-i Egyezmény (1958), VCLT (Bécsi Egyezmény a szerződések jogáról).
- Nemzetközi büntető / humanitárius: Római Statútum (ICC), IV. Genfi Egyezmény.
- Nemzetközi magánjog (Hága): Apostille (HCCH 28), Gyermekelviteli Egyezmény.
Új joghatóság iránti igény
A rendszer támogatja további országkódok kezelését (pl. DE, AT, RO, SK). Egy új jogrendszer bekapcsolása a hivatalos forrás (állami közlöny / hatósági korpusz) elemzését igényli; ilyen igényt az üzemeltető fogad be. A nyelvi normalizáció jelenleg magyar-első - több nyelvre kiterjesztés a roadmapen.
Lekérdezés API-n keresztül
GET /api/presets # praxis-területek (csaladjog, vallalkozoi, …)
GET /api/statute?law=GDPR§ion=6 # joghatóság-független cite lookup
GET /api/search?q=fogyasztóvédelem # FTS keresés a felhasználó saját adataiban
Hitelesítés #
A JuriSafe két hitelesítési módot ismer:
1. Cookie session (böngészős használat)
A /api/auth/login végpont sikeres válasza beállítja a jurisafe_session cookie-t (httpOnly, SameSite=Lax). Ez az SPA + dokumentációs oldalak alapesete.
2. Személyes API kulcs
Kulcs igénylése: /settings oldalon a „API kulcsok" szekcióban. A kulcs formája jsafe_apikey_…. Használata:
Authorization: Bearer jsafe_apikey_xxxxxxxxxxxxxxxxxxxx
Az API kulccs hívott végpontok a felhasználó kvótájához számítódnak (lásd Rate limit).
Origin vagy Referer fejlécet kell tartalmaznia, ami a deployment hostjával egyezik. A Bearer-tokenes kérések ettől mentesülnek.
REST API #
Alap URL: https://api.jurisafeai.com (a https://app.jurisafeai.com hoszt ugyanezt szolgálja ki). Az alábbi a leggyakoribb végpontok kivonata; a teljes, mindig naprakész lista a beépített OpenAPI explorer-ben érhető el.
Chat (SSE)
curl -N -X POST https://api.jurisafeai.com/api/chat \
-H "Authorization: Bearer jsafe_apikey_..." \
-H "Content-Type: application/json" \
-d '{
"messages": [{"role":"user","content":"Mi a felmondási idő?"}],
"preset": "munkajog",
"conversation_id": "c-001"
}'
Válasz: text/event-stream. Az SSE-eseményeket data: {…}\n\n formátumban kapod; data: [DONE] zár.
Egy kérdés - egy válasz (programozott hozzáférés)
Nem-streamelt változat: egyetlen JSON-válaszban adja vissza a kész választ és a hivatkozásokat - ez a legegyszerűbb integrációs felület (ezt hívja az Office-bővítmény is). Pro+ funkció, és ugyanabból a csomag-keretből fogyaszt, mint a webalkalmazás.
curl -X POST https://api.jurisafeai.com/api/v1/ask \
-H "Authorization: Bearer jsafe_apikey_..." \
-H "Content-Type: application/json" \
-d '{
"question": "Mennyi a felmondási idő 5 év után?",
"preset": "munkajog",
"jurisdiction": "HU"
}'
Válasz: {"answer": "…", "citations": [{"short_ref": "Mt.", "locator": "69. §", …}]}.
Mezők: question (kötelező; input néven is elfogadott),
preset és jurisdiction opcionális.
Hibák: 401 hiányzó/érvénytelen kulcs, 402 a csomag nem tartalmaz API-hozzáférést (category: api_plan_required; a /api/plan megmondja, miért),
429 elfogyott a lekérdezési keret, 400 üres kérdés.
Statute lookup
Conversations
| Method | Path | Leírás |
|---|---|---|
| GET | /api/conversations | aktív beszélgetések, pinned-first |
| GET | /api/conversations/{id} | egy beszélgetés teljes payload-ja |
| PATCH | /api/conversations/{id}/title | {title} - sticky átnevezés |
| PATCH | /api/conversations/{id}/pin | {pinned: bool} |
| DELETE | /api/conversations/{id} | soft-delete (lomtár) |
| DELETE | /api/conversations/{id}?hard=true | végleges törlés |
| POST | /api/conversations/{id}/restore | lomtárból visszaállítás |
| GET | /api/conversations/trashed | törölt elemek |
| GET | /api/conversations/{id}/export.pdf | |
| GET | /api/conversations/{id}/export.docx | DOCX |
Deadlines + Clients + Templates
| Method | Path | Body |
|---|---|---|
| GET | /api/deadlines | - |
| POST | /api/deadlines | {due_date, label, conv_id?} |
| GET | /api/deadlines.ics | ICS naptár letöltés |
| GET | /api/clients | - |
| POST | /api/clients | {id, name} |
| GET | /api/templates | - |
Ügyek — egy ügy, időrendben
Ugyanazok a rekordok, összerakva: egy ügyfél beszélgetései, okiratai és határidői egyetlen idővonalon. Az okirat azon a beszélgetésen keresztül talál az ügyhöz, amelyikben készült. A __unfiled__ az ügyfélhez még nem rendelt anyag.
| Method | Path | Válasz |
|---|---|---|
| GET | /api/matters | ügyenként: {client_id, name, conversations, documents, deadlines, last_activity, next_deadline} |
| GET | /api/matters/{client_id}/timeline | {upcoming[], history[], counts} — upcoming a legközelebbi elöl, history a legfrissebb elöl |
const overview = await be.matters.list();
const kovacs = await be.matters.timeline("kovacs-vs-nagy");
kovacs.upcoming[0]; // { kind: "deadline", due_date: "2026-09-14", days_left: 7, … }
Az iroda közös memóriája
Az iroda állandó gyakorlata, amit minden tag minden beszélgetése megkap — a /api/memory személyes párja. Bármelyik tag hozzáadhat; más bejegyzését törölni, vagy az egészet kikapcsolni, csak tulajdonos/admin tud. Csapat nélküli fióknál minden végpont 404.
| Method | Path | Body / válasz |
|---|---|---|
| GET | /api/team/memory | {enabled, items[], role, can_manage, max_items} — minden bejegyzés by_email-lel |
| POST | /api/team/memory | {text} — bármelyik tag |
| DELETE | /api/team/memory/{id} | sajátot bárki, másét tulajdonos/admin |
| PATCH | /api/team/memory | {enabled} — tulajdonos/admin; kikapcsolva a bejegyzések megmaradnak |
await be.teamMemory.add("A felszólításaink 8 napos teljesítési határidőt adnak.");
// mostantól minden tag minden válaszában és okiratában számít
Auth
| Method | Path | Leírás |
|---|---|---|
| POST | /api/auth/register | {email, password} |
| POST | /api/auth/login | {email, password} - limit: 10/perc IP-nként |
| POST | /api/auth/logout | cookie törlés |
| GET | /api/auth/me | aktuális user + kvóta |
| GET | /api/auth/me/export | GDPR ZIP-export |
| DELETE | /api/auth/me | fiók törlés - {password, confirm:"TÖRLÉS"} |
| POST | /api/keys | új API kulcs |
Webhookok #
Ahelyett hogy lekérdeznéd: a JuriSafe szól. Regisztrálj egy https végpontot, válaszd ki az eseményeket, és minden küldemény aláírva érkezik.
Események
| Esemény | Mikor |
|---|---|
answer.completed | kész egy válasz (chat vagy /api/v1/ask): answer_id, source, conversation_id, a hivatkozott jogszabályhelyek, confidence |
document.generated | elkészült egy okirat: doc_id, title, formats, verdict |
document.ready | ugyanez, a korábbi néven |
deadline.approaching | 7/3/1/0 nappal a határidő előtt |
law.changed | megváltozott egy jogszabály, amire a fiók hivatkozott |
Végpontok kezelése
| Method | Path | Leírás |
|---|---|---|
| GET | /api/v1/webhooks | végpontok, események, újrapróbálási szabály |
| POST | /api/v1/webhooks | {url, events?} — a válasz egyszer tartalmazza a secret-et |
| GET | /api/v1/webhooks/{id} | egy végpont |
| PATCH | /api/v1/webhooks/{id} | {enabled?, url?, events?} — szüneteltetés, új cím, új események; a titok és a napló marad |
| DELETE | /api/v1/webhooks/{id} | - |
| POST | /api/v1/webhooks/{id}/test | most küld egy test eseményt, és megmondja, mit felelt a fogadó |
| GET | /api/v1/webhooks/{id}/deliveries | kézbesítési napló, legfrissebb elöl |
Létrehozni, új címre állítani és tesztelni Pro csomaggal lehet, mint minden programozott hívást; listázni, szüneteltetni és törölni mindig. Egy fiók csak a saját végpontjait látja. A korábbi /api/webhooks útvonal (ezt hívják az SDK-k) változatlanul működik.
curl -X POST https://api.jurisafeai.com/api/v1/webhooks \
-H "Authorization: Bearer jsafe_apikey_..." \
-H "Content-Type: application/json" \
-d '{"url": "https://praxis.example.com/jurisafe-hook",
"events": ["answer.completed", "document.generated"]}'
Aláírás és visszajátszás elleni védelem
Minden küldemény aláírt. Az aláírt szöveg "<t>.<body>", így az időbélyeg is védett, és egy elfogott küldemény később nem játszható vissza:
X-JuriSafe-Event: answer.completed
X-JuriSafe-Delivery: 5f3c9a1e0b7d4c22
X-JuriSafe-Attempt: 1
X-JuriSafe-Signature: t=1757260800,v1=<hex hmac-sha256>
{"id":"5f3c9a1e0b7d4c22","event":"answer.completed","created_at":"2026-09-14T09:00:00+00:00",
"data":{"answer_id":"b71e04d2c9a83f15","source":"api.v1.ask","conversation_id":null,
"answer_chars":312,"citations":[{"short_ref":"Mt.","locator":"69. § (1) bek."}],
"confidence":"high"}}
Ellenőrizd a nyers törzzsel (nem újraszerializált objektummal), és utasítsd el, ha t 5 percnél régebbi. Minden próbálkozás friss időbélyeggel, újra aláírva megy, a X-JuriSafe-Delivery azonosító viszont ugyanaz marad: a már feldolgozott küldeményt eldobhatod.
from jurisafe_sdk import JuriSafeClient, verify_webhook
be = JuriSafeClient("https://api.jurisafeai.com", api_key="jsafe_apikey_...")
hook = be.webhooks.create(
"https://praxis.example.com/jurisafe-hook",
["answer.completed", "document.generated"],
)
secret = hook["secret"] # csak most látszik: tárold el
def receive(raw_body: str, headers: dict) -> bool:
return verify_webhook(secret, raw_body, headers["X-JuriSafe-Signature"])
import { verifyWebhookSignature } from "./jurisafe_sdk";
const ok = await verifyWebhookSignature(secret, rawBody, req.headers.get("x-jurisafe-signature"));
if (!ok) return new Response("bad signature", { status: 400 });
Újrapróbálás és kézbesítési napló
Hálózati hiba, 5xx, 408, 425 és 429 esetén újrapróbáljuk, egyre hosszabb várakozással: 30 mp, 2 perc, 8 perc, 32 perc — összesen 5 próbálkozás. Minden más válasz végleges (a 4xx a fogadó elutasítása). Minden próbálkozás bekerül a végpont naplójába (az utolsó 50): státusz vagy hiba, időtartam, a következő próbálkozás ideje. Az API-n és a Fiók → Fejlesztőknek oldalon látod.
curl https://api.jurisafeai.com/api/v1/webhooks/5f3c9a1e/deliveries \
-H "Authorization: Bearer jsafe_apikey_..."
Csak nyilvános címek
Csak nyilvánosan feloldható https cím adható meg: a privát és loopback címek elutasítva (SSRF).
Az ellenőrzés minden próbálkozáskor újra lefut: a névfeloldás után minden címnek nyilvánosnak kell lennie, és a kapcsolat arra a címre megy, amelyet ellenőriztünk. Átirányítást legfeljebb háromszor követünk, és minden lépést ugyanígy ellenőrzünk.
Tesztkörnyezet (sandbox) #
Egy jsafe_sandbox_… kulccsal az integráció előfizetés nélkül megépíthető: a /api/v1 végpontok rögzített, valósághű demóválaszokat adnak, ugyanazokkal a mezőkkel, mint élesben.
- Nem hívja a modellt, és nem fogyaszt keretet. A kérés egyetlen végpontig sem jut el: a hitelesítés válaszol helyette.
- Egyértelműen jelölt. Minden válasz
"sandbox": truemezőt ésX-JuriSafe-Sandbox: 1fejlécet visz. - Saját, szűk korlát: kulcsonként 10 kérés percenként.
- Bármely csomagon igényelhető (fiókonként legfeljebb 3) a Fiók → Fejlesztőknek oldalon.
| Method | Path | Sandbox-válasz |
|---|---|---|
| POST | /api/v1/ask | rögzített válasz valódi jogszabályhelyekkel (felmondási idő, késedelmi kamat, GDPR, minden más) |
| GET | /api/v1/webhooks | egy demóvégpont a naplójával |
| POST | /api/v1/webhooks | ellenőrzi a kérést, de semmit nem tárol és semmit nem küld |
| GET | /api/v1/webhooks/{id} | egy demóvégpont a naplójával |
| PATCH | /api/v1/webhooks/{id} | - |
| DELETE | /api/v1/webhooks/{id} | - |
| POST | /api/v1/webhooks/{id}/test | aláírt mintaküldemény a demótitokkal, a saját ellenőrződ kipróbálásához |
| GET | /api/v1/webhooks/{id}/deliveries | demó kézbesítési napló (egy sikeres és egy újrapróbált küldemény) |
Minden más /api/v1 útvonal 404 (sandbox_unsupported), a /api/v1-en kívüliek 403 (sandbox_scope). A /api/v1/openapi.json és a /api/v1/postman.json sandbox kulccsal is olvasható.
curl -X POST https://api.jurisafeai.com/api/v1/ask \
-H "Authorization: Bearer $JURISAFE_SANDBOX_KEY" \
-H "Content-Type: application/json" \
-d '{"question": "Mennyi a felmondási idő 5 év után?"}'
import os
import httpx
r = httpx.post(
"https://api.jurisafeai.com/api/v1/ask",
headers={"Authorization": f"Bearer {os.environ['JURISAFE_SANDBOX_KEY']}"},
json={"question": "Mennyi a felmondási idő 5 év után?"},
)
assert r.headers["X-JuriSafe-Sandbox"] == "1"
print(r.json()["answer"])
OpenAPI + Postman #
A nyilvános felület gépileg olvasható leírása: csak az API-kulccsal hívható végpontok, belső és admin útvonalak nélkül. Kulcs nélkül is letölthető.
| Method | Path | Leírás |
|---|---|---|
| GET | /api/v1/openapi.json | OpenAPI 3.1 séma, erőforrásonként címkézve; a webhooks része a küldeményeket írja le |
| GET | /api/v1/postman.json | Postman-gyűjtemény (v2.1) ugyanabból a sémából: importáld, add meg az apiKey változót (éles vagy sandbox kulcs), és küldheted |
| GET | /api/v1 | kiindulópont: séma, SDK-k, műveletek |
curl -s https://api.jurisafeai.com/api/v1/openapi.json | jq '.paths | keys'
curl -s -o jurisafe.postman.json https://api.jurisafeai.com/api/v1/postman.json
A böngészőnek szóló útvonalakat is tartalmazó teljes lista a Swagger UI-ban látható; integrációhoz a fenti, verziózott sémát használd.
Python SDK #
Egyetlen fájl, csak a httpx könyvtárat igényli. Letölthető: jurisafe_sdk.py (későbbi verziókban PyPI csomag).
pip install httpx
# helyezd a jurisafe.py fájlt a projekted mellé, majd:
from jurisafe_sdk import JuriSafeClient
Egyszerű kérdés
from jurisafe_sdk import JuriSafeClient
be = JuriSafeClient("https://api.jurisafeai.com", api_key="jsafe_apikey_...")
answer = be.ask("Mi a Ptk. 6:155. § szerinti késedelmi kamat?")
print(answer)
Stream
for ev in be.chat_stream(
messages=[{"role": "user", "content": "Készíts fizetési felszólítást."}],
preset="vallalkozoi",
):
if ev["type"] in ("text", "final") and ev.get("text"):
print(ev["text"], end="", flush=True)
Erőforrás-helperek
convs = be.conversations.list()
pdf_bytes = be.conversations.export_pdf("c-001")
be.deadlines.create(due_date="2026-06-15", label="Fellebbezés")
ics = be.deadlines.ics()
be.clients.create(client_id="kovacs-bt", name="Kovács Bt.")
statute = be.statute(law="Ptk.", section="6:155. §")
JavaScript / TypeScript SDK #
Zero-dependency. Működik böngészőben, Node 18+, Deno, Bun és edge runtime-okban (Cloudflare Workers, Vercel Edge). Letölthető: jurisafe_sdk.ts (későbbi verziókban npm csomag).
Egyszerű kérdés
import { JuriSafeClient } from "./jurisafe_sdk";
const be = new JuriSafeClient("https://api.jurisafeai.com", {
apiKey: "jsafe_apikey_...",
});
const answer = await be.ask("Mi a felmondási idő munkáltatói felmondásnál?");
console.log(answer);
Stream
for await (const ev of be.chatStream({
messages: [{ role: "user", content: "Készíts felszólítást." }],
preset: "vallalkozoi",
})) {
if (ev.type === "text" || ev.type === "final") {
process.stdout.write(ev.text ?? "");
}
}
Erőforrás-helperek
const convs = await be.conversations.list();
const pdf = await be.conversations.exportPdf("c-001"); // ArrayBuffer
await be.deadlines.create("2026-06-15", "Fellebbezés");
const ics = await be.deadlines.ics(); // string
await be.clientFolders.create("kovacs-bt", "Kovács Bt.");
const statute = await be.statute("Ptk.", "6:155. §");
MCP server #
A Model Context Protocol kompatibilis kiszolgáló - autonóm ügynökök közvetlenül a JuriSafe eszközeit hívhatják.
Telepítés
pip install mcp httpx
Claude Desktop konfiguráció
~/Library/Application Support/Claude/claude_desktop_config.json (macOS):
{
"mcpServers": {
"be-jurisafe": {
"command": "python",
"args": ["/absolute/path/to/jurisafe_mcp_server.py"],
"env": {
"BE_BASE_URL": "https://api.jurisafeai.com",
"JURISAFE_API_KEY": "jsafe_apikey_..."
}
}
}
}
Elérhető tool-ok
| Tool | Paraméter | Leírás |
|---|---|---|
be_ask | question, preset? | egy lépéses kérdés-válasz |
be_find_statute | law, section | jogszabályhely lekérése |
be_search_corpus | query, limit? | kereszt-keresés (saját beszélgetések + iratok) |
be_list_presets | - | praxis-területek |
be_generate_document | instructions, preset? | jogi irat készítése (felszólítás, szerződés, beadvány…) |
be_list_documents | - | a felhasználó iratainak listája |
be_get_document | doc_id, fmt? | irat tartalmának letöltése (md/html/pdf/docx) |
be_storage_mode | mode? | tárolási mód olvasása/beállítása (central | blockchain) |
be_deadline | date, n_days, mode? | határidő számítása — naptári / munkanap / törvénykezési nap (a július 15 – augusztus 20 szünetet kihagyja); determinisztikus, nem a modell |
be_is_workday | date | munkanap-e egy ISO dátum Magyarországon |
be_interest | principal, date, n_days, rate_pct? | késedelmi kamat a tőkére |
be_list_deadlines | | a hívó nyilvántartott határidői |
be_create_deadline | due_date, label, conv_id? | határidő felvétele (a dátumot előbb a be_deadline számolja) |
be_list_conversations | | a hívó beszélgetései, legfrissebb elöl |
be_get_conversation | conv_id | egy beszélgetés a teljes előzménnyel |
be_list_templates | | elérhető okirat-sablonok |
be_get_template | key | egy sablon nyers markdown váza a kitöltendő mezőkkel |
be_save_document | doc_id, markdown | dokumentum felülírása; az előző szöveg verzióként megmarad |
be_memory | action, text?, item_id?, shared? | állandó tények: list / add / delete / share |
be_models | | modellszintek (Scriba / Praetor / Kúria) és gondolkodási szintek |
be_firm_memory | action, text?, item_id? | az iroda állandó gyakorlata: lista / hozzáadás / törlés / be-ki |
be_matters | client_id?, limit? | egy ügy időrendben (beszélgetések, okiratok, határidők) — vagy az összes ügy áttekintése |
be_webhooks | action, url?, events?, endpoint_id? | kimenő webhookok: lista / hozzáadás / törlés / szünet / teszt |
be_whoami | | fiók és csomag — megmondja, MIÉRT ad 402-t a többi eszköz |
A programozott hozzáférés a Pro csomagtól él: alacsonyabb csomagon minden eszköz 402-t ad, kivéve a be_whoami-t, amely megmondja, miért. A script letölthető: jurisafe_mcp_server.py.
Rate limit + kvóta #
Az alábbi alapértelmezett limitek és kvóták érvényesek a publikus deploymentre. Üzleti felhasználói csomag esetén az értékek emelhetők - egyeztetés az üzemeltetővel.
| Réteg | Alapérték | Megjegyzés |
|---|---|---|
| IP rate limit (chat) | 30 / perc | egy IP-címről percenként ennyi üzenet |
| IP rate limit (login) | 10 / perc | brute-force védelem |
| Bejelentkezési zár (account) | 5 hibás → 15 perc | sikeres bejelentkezés nullázza |
| Anonim üzenetkeret | 3 / nap | bejelentkezés nélküli próba |
| Regisztrált üzenetkeret | 10 / nap | ingyenes regisztrált csomag |
| Üzleti / dedikált csomag | egyedi | egyeztetés alapján |
| Body cap (/api/*) | 25 MB | kérésenként |
| Upload cap (per file) | 10 MB | fájlonként |
| Sandbox kulcs | 10 / perc | kulcsonként; nem hívja a modellt, nem fogy a keret |
Hibák + retry #
Minden hiba JSON, két stabil mezővel: detail (HU üzenet) és category (programozható kód).
| Kód | category | Mit jelent |
|---|---|---|
| 401 | - | nincs bejelentkezve / érvénytelen API kulcs |
| 402 | api_plan_required | API-kulccsal hívva, de a csomag nem tartalmaz API-hozzáférést (Pro alatt); ilyenkor csak a /api/health, a /api/plan és a /api/auth/me válaszol |
| 403 | csrf | cross-origin state-changing kérés |
| 413 | body_too_large | kérés mérete meghaladja a body cap-et |
| 429 | ip_rate_limit | IP rate limit lejárt; retry_after_s mező megadja |
| 403 | sandbox_scope | sandbox kulccsal a /api/v1-en kívüli útvonal |
| 429 | sandbox_rate_limit | elfogyott a sandbox kulcs percenkénti kerete |
SSE event type: error | rate_limit / upstream_unavailable / auth / timeout | provider-szintű hibák a chat-stream során |
GDPR + adat-export #
Felhasználói jogosultságok:
- Hozzáférés / hordozhatóság -
GET /api/auth/me/exportvisszaad egy ZIP-et a felhasználó beszélgetéseivel, dokumentumaival, ügyfeleivel, határidőivel. - Törléshez való jog -
DELETE /api/auth/mebody:{password, confirm: "TÖRLÉS"}. Rendszergazda jogosultságú fiókok ezen a végponton nem törölhetők - ilyen igényt az üzemeltetőhöz kell benyújtani. - Helyesbítés -
PATCH /api/conversations/{id}/title,PATCH /api/conversations/{id}/pin, lomtár + restore.