Fejlesztői dokumentáció
A be 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 be 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
beeszkö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 be 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 be_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 be_apikey_…. Használata:
Authorization: Bearer be_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.
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
- Ügynök hívja az endpoint-ot fizetési token nélkül.
- A szerver
HTTP 402-val válaszol, és aWWW-Authenticate: x402fejlé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-beai", 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
}
}
- Ü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?"}]}
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://<your-be-host>. 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://be.example.com/api/chat \
-H "Authorization: Bearer be_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.
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 | — |
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/auth/keys | új API kulcs |
Python SDK #
Egyetlen fájl, csak a httpx könyvtárat igényli. Az aktuális be_sdk.py az üzemeltetőtől beszerezhető (későbbi verziókban PyPI csomag).
pip install httpx
# helyezd a be_sdk.py fájlt a projekted mellé, majd:
from be_sdk import BeClient
Egyszerű kérdés
from be_sdk import BeClient
be = BeClient("https://be.example.com", api_key="be_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 be-sdk.ts fájl az üzemeltetőtől beszerezhető (későbbi verziókban npm csomag).
Egyszerű kérdés
import { BeClient } from "./be-sdk";
const be = new BeClient("https://be.example.com", {
apiKey: "be_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 be 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-beai": {
"command": "python",
"args": ["/absolute/path/to/be_mcp_server.py"],
"env": {
"BE_BASE_URL": "https://be.example.com",
"BE_API_KEY": "be_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-kereses |
be_list_presets | — | praxis-területek |
A be_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é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 |
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 | payment_required | x402 fizetés szükséges |
| 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 |
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.