Vissza az alkalmazáshoz

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.

63indexelt jogszabály
3joghatóság
3SDK / protokoll
SSEstreaming chat

Á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 JuriSafe eszközeit.

Stabil végpontok kezdődnek /api/ prefixxel. Minden válasz JSON; a chat text/event-stream (SSE).

OpenAPI explorer. Az automatikusan generált Swagger UI elérhető a /openapi-ui címen (ReDoc: /openapi-redoc; nyers séma: /openapi.json). Ez az oldal a kézzel írt, kontextusos referencia - a Swagger a gép-olvasható alternatíva.

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ény

Civil, 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ály

GDPR, 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 instrumentum

EJEE, 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&section=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 három 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).

3. x402 fizetési token (autonóm ügynököknek)

Ld. lent: x402 fizetés.

CSRF: A cookie-alapú állapotot módosító kéréseknek Origin vagy Referer fejlécet kell tartalmaznia, ami a deployment hostjával egyezik. A Bearer-tokenes kérések ettől mentesülnek.

x402 - fizetés ügynököknek stub #

A x402 mintát követjük autonóm ügynökök által történő pay-per-call elszámolásra. A funkció üzemeltetői beállítás kérdése - ha a deploymentnél aktív, az alábbi folyamat lép életbe.

Folyamat

  1. Ügynök hívja az endpoint-ot fizetési token nélkül.
  2. A szerver HTTP 402-val válaszol, és a WWW-Authenticate: x402 fejléc, valamint a JSON body közli az árat és a settlement endpoint-ot:
HTTP/1.1 402 Payment Required
WWW-Authenticate: x402 realm="be-jurisafe", price="120 HUF/1k_output_tokens", settlement="/api/x402/settle"
Content-Type: application/json

{
  "detail": "Fizetés szükséges (x402). Lásd: /docs#x402",
  "category": "payment_required",
  "x402": {
    "scheme": "x402",
    "price": { "currency": "HUF", "per_1k_output_tokens": 120 },
    "settlement_endpoint": "/api/x402/settle",
    "docs": "/docs#x402",
    "ttl_seconds": 600
  }
}
  1. Ügynök elvégzi az elszámolást, és újrahívja az endpoint-ot a kapott tokennel:
POST /api/chat
X-PAYMENT: x402_…<settlement-receipt>…
Content-Type: application/json

{"messages":[{"role":"user","content":"Mi a Ptk. 6:155. § szerinti késedelmi kamat?"}]}
A fizetési oldal jelenleg beta - a hivatkozott settlement endpoint visszaadja a hivatalos árképzést és a settlement-szolgáltató kapcsolati adatait. Éles ügynök-integráció előtt vegyék fel a kapcsolatot az üzemeltetővel.

Mely végpontok eshetnek a fizetési séma alá: /api/chat, /api/conversations*, /api/statute, /api/search. Bejelentkezett felhasználók (cookie) és személyes API-kulcsosok ettől mentesek - ők a saját kvótájuk alapján férnek hozzá.

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)

POST/api/chat
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)

POST/api/v1/ask

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, 403 a csomag nem tartalmaz API-hozzáférést, 429 elfogyott a lekérdezési keret, 400 üres kérdés.

Statute lookup

GET/api/statute?law=Ptk.&section=6:8.%20%C2%A7

Conversations

MethodPathLeírás
GET/api/conversationsaktí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=truevégleges törlés
POST/api/conversations/{id}/restorelomtárból visszaállítás
GET/api/conversations/trashedtörölt elemek
GET/api/conversations/{id}/export.pdfPDF
GET/api/conversations/{id}/export.docxDOCX

Deadlines + Clients + Templates

MethodPathBody
GET/api/deadlines-
POST/api/deadlines{due_date, label, conv_id?}
GET/api/deadlines.icsICS 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.

MethodPathVá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.

MethodPathBody / 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

Webhookok (kimenő értesítések)

Ahelyett hogy lekérdeznéd: a JuriSafe szól. Három esemény — document.ready (elkészült egy okirat, a bizalmi minősítésével), deadline.approaching (7/3/1/0 nappal a határidő előtt, a napi emlékeztető-feladatból), law.changed (megváltozott egy jogszabály, amire a fiók hivatkozott). A küldemény azonosítókat és metaadatot visz — az okirat szövegét, a választ és az ügyfél nevét soha; a tartalmat a hitelesített API-n kéred le, ha kell.

MethodPathBody
GET/api/webhooksvégpontok + az elérhető események
POST/api/webhooks{url, events?} — a válasz egyszer tartalmazza a secret-et
PATCH/api/webhooks/{id}{enabled} — szüneteltetés a titok elvesztése nélkül
DELETE/api/webhooks/{id}-
POST/api/webhooks/{id}/testmost küld egy test eseményt, és megmondja, mit felelt a fogadó

Csak nyilvánosan feloldható https cím adható meg: a privát és loopback címek elutasítva (SSRF).

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: document.ready
X-JuriSafe-Delivery: 5f3c…
X-JuriSafe-Signature: t=1757260800,v1=<hex hmac-sha256>

{"id":"5f3c…","event":"document.ready","created_at":"2026-09-07T09:00:00+00:00",
 "data":{"doc_id":"felszolitas-2026-09-07","title":"Fizetési felszólítás",
         "doc_type":"felszolitas","formats":["docx","html","md","pdf"],
         "confidence":"high","verdict":"ok"}}

Ellenőrzés a fogadó oldalon (a nyers törzzsel, nem újraszerializált objektummal), Pythonban és TypeScriptben ugyanaz:

from jurisafe_sdk import JuriSafeClient
JuriSafeClient.webhooks.verify(secret, raw_body, request.headers["X-JuriSafe-Signature"])

import { verifyWebhookSignature } from "./jurisafe-sdk";
await verifyWebhookSignature(secret, rawBody, req.headers.get("x-jurisafe-signature"));

A 2xx-en kívüli válasz és a hálózati hiba a végponton látszik (last_status, last_error, utolsó 10 kézbesítés); az 5xx és a hálózati hiba egyszer újrapróbálva.

Auth

MethodPathLeírás
POST/api/auth/register{email, password}
POST/api/auth/login{email, password} - limit: 10/perc IP-nként
POST/api/auth/logoutcookie törlés
GET/api/auth/meaktuális user + kvóta
GET/api/auth/me/exportGDPR ZIP-export
DELETE/api/auth/mefiók törlés - {password, confirm:"TÖRLÉS"}
POST/api/auth/keysúj API kulcs

Python SDK #

Egyetlen fájl, csak a httpx könyvtárat igényli. Az aktuális jurisafe.py az üzemeltetőtől beszerezhető (későbbi verziókban PyPI csomag).

pip install httpx
# helyezd a jurisafe.py fájlt a projekted mellé, majd:
from jurisafe import JuriSafeClient

Egyszerű kérdés

from jurisafe import JuriSafeClient

client = 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). A jurisafe-sdk.ts fájl az üzemeltetőtől beszerezhető (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

ToolParaméterLeírás
be_askquestion, preset?egy lépéses kérdés-válasz
be_find_statutelaw, sectionjogszabályhely lekérése
be_search_corpusquery, limit?kereszt-keresés (saját beszélgetések + iratok)
be_list_presets-praxis-területek
be_generate_documentinstructions, 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_documentdoc_id, fmt?irat tartalmának letöltése (md/html/pdf/docx)
be_storage_modemode?tárolási mód olvasása/beállítása (central | blockchain)
be_deadlinedate, 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_workdaydatemunkanap-e egy ISO dátum Magyarországon
be_interestprincipal, date, n_days, rate_pct?késedelmi kamat a tőkére
be_list_deadlinesa hívó nyilvántartott határidői
be_create_deadlinedue_date, label, conv_id?határidő felvétele (a dátumot előbb a be_deadline számolja)
be_list_conversationsa hívó beszélgetései, legfrissebb elöl
be_get_conversationconv_idegy beszélgetés a teljes előzménnyel
be_list_templateselérhető okirat-sablonok
be_get_templatekeyegy sablon nyers markdown váza a kitöltendő mezőkkel
be_save_documentdoc_id, markdowndokumentum felülírása; az előző szöveg verzióként megmarad
be_memoryaction, text?, item_id?, shared?állandó tények: list / add / delete / share
be_modelsmodellszintek (Scriba / Praetor / Kúria) és gondolkodási szintek
be_firm_memoryaction, text?, item_id?az iroda állandó gyakorlata: lista / hozzáadás / törlés / be-ki
be_mattersclient_id?, limit?egy ügy időrendben (beszélgetések, okiratok, határidők) — vagy az összes ügy áttekintése
be_webhooksaction, url?, events?, endpoint_id?kimenő webhookok: lista / hozzáadás / törlés / szünet / teszt
be_whoamifió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 jurisafe_mcp_server.py script az üzemeltetőtől beszerezhető.

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étegAlapértékMegjegyzés
IP rate limit (chat)30 / percegy IP-címről percenként ennyi üzenet
IP rate limit (login)10 / percbrute-force védelem
Bejelentkezési zár (account)5 hibás → 15 percsikeres bejelentkezés nullázza
Anonim üzenetkeret3 / napbejelentkezés nélküli próba
Regisztrált üzenetkeret10 / napingyenes regisztrált csomag
Üzleti / dedikált csomagegyediegyeztetés alapján
Body cap (/api/*)25 MBkérésenként
Upload cap (per file)10 MBfájlonként

Hibák + retry #

Minden hiba JSON, két stabil mezővel: detail (HU üzenet) és category (programozható kód).

KódcategoryMit jelent
401-nincs bejelentkezve / érvénytelen API kulcs
402payment_requiredx402 fizetés szükséges
403csrfcross-origin state-changing kérés
413body_too_largekérés mérete meghaladja a body cap-et
429ip_rate_limitIP rate limit lejárt; retry_after_s mező megadja
SSE event type: errorrate_limit / upstream_unavailable / auth / timeoutprovider-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/export visszaad egy ZIP-et a felhasználó beszélgetéseivel, dokumentumaival, ügyfeleivel, határidőivel.
  • Törléshez való jog - DELETE /api/auth/me body: {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.