Platforma de matematică pentru clasele 5–12: probleme noi în fiecare zi, ajustate pentru nivelul tău — cu soluții complete, pas cu pas, până la BAC M1 și Evaluarea Națională. Sub 20 RON pe săptămână.

This page (/mcp) is HTML documentation. It is not the server and does not return JSON. The MCP server itself — Streamable HTTP, JSON-RPC 2.0 — is a separate endpoint: POST https://pbmate.ro/api/mcp, public, read-only, no account, no API key. The tools table and a worked JSON-RPC example are below; the wider site map is at https://pbmate.ro/llms.txt.

Server MCP · pbmate.ro

pbmate.ro este o platformă românească de matematică pentru clasele 512. Serverul MCP de mai jos dă unui agent AI acces direct, structurat, la eșantionul public al platformei: capitole cu exerciții rezolvate și formule pe capitole, fără să parseze pagini HTML.

Streamable HTTP · JSON-RPC 2.0 · protocolVersion 2025-06-18

Endpoint

POST https://pbmate.ro/api/mcp

Transport Streamable HTTP, doar pe leg-ul POST · fiecare apel e un singur request/response JSON-RPC 2.0, fără flux SSE. Metode acceptate: initialize, ping, tools/list, tools/call. Cererile grupate (batch, array JSON-RPC) nu sunt acceptate.

Public, fără cont

Serverul e public și doar-citire: fără cont, fără cheie API, fără negociere de rate-limit. Limita reală, spusă cinstit: 60 de cereri pe minut per IP, best-effort · limita e ținută per instanță serverless, nu global, deci nu e o apărare absolută sub abuz distribuit pe mai multe instanțe. Corpul unei cereri e limitat la 16 KB, iar răspunsul unui apel de unealtă la 32 KB.

Configurare client MCP

Fără antet de autorizare · serverul nu cere unul.

{
  "mcpServers": {
    "pbmate": {
      "url": "https://pbmate.ro/api/mcp"
    }
  }
}

Unelte disponibile

UnealtăArgumenteCe returneazăJSON static echivalent
despre_pbmatefără argumenteRezumat, poziționare, preț și legăturile pbmate.ro (inclusiv gemenii .md)./ai/pbmate.json
lista_capitolefără argumenteToate cele 81 de perechi clasă+capitol cu exerciții publice: clasă, slug, titlu, număr de exerciții, URL. Definește argumentele valide pentru exercitii./ai/capitole.json
exercitiiclasa (integer, 512) · capitol (string, slug din lista_capitole) · dificultate (opțional, o valoare sau o listă din: Beginner, Medium, Advanced, Expert, Olympiad) · numar (opțional, integer, 1–12)Până la 12 exerciții dintr-un capitol, cu enunț, variante și indiciu · FĂRĂ răspuns · exact setul deja public pe /p/exercitii, opțional filtrate după dificultate și limitate cu numar. Pentru rezolvare, folosește rezolvare./ai/exercitii/{clasa}-{capitol}.json (JSON-ul static include și răspunsul · vezi mai jos de ce)
rezolvareid (string, id-ul unui exercițiu întors de exercitii)Răspunsul corect și soluția pentru UN singur exercițiu · apelat doar după ce agentul a arătat problema, nu preventiv./ai/exercitii/{clasa}-{capitol}.json
formulecapitol (string, slug dintr-o listă fixă de 15 capitole)Formulele unui capitol de referință (ex. derivate, integrale, trigonometrie) și URL-ul paginii publice /formule./ai/formule.json (lista completă)

Exemplu · în doi pași

Cazul obișnuit: un elev cere unui asistent „10 exerciții cu logaritmi, dificultate mixtă" · agentul traduce cererea într-un singur apel exercitii cu argumentele { clasa: 11, capitol: "logaritmi", dificultate: ["Medium", "Advanced"], numar: 10 } și primește 5 din 10 exerciții ale capitolului, exact cele care se încadrează în dificultatea cerută.

exercitii nu întoarce niciodată răspunsul în același apel cu enunțul · exact cum pagina publică /p/exercitiiascunde răspunsul corect sub un „Rezolvare” care se deschide la click, nu în lista de variante. Un agent AI cere soluția separat, cu rezolvare, o singură dată, doar când elevul a încercat sau a cerut-o explicit.

Pasul 1 · cerere tools/call pentru unealta exercitii:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "exercitii",
    "arguments": {
      "clasa": 11,
      "capitol": "derivate"
    }
  }
}

Răspuns real, prescurtat la primul din cele 12 exerciții returnate (din 88 eligibile pentru acest capitol) · fără correctIndex sau solution:

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "12 din 88 exerciții (fără răspuns) — Derivate, clasa 11. Pentru rezolvare, cere `rezolvare` cu id-ul exercițiului. Pagina completă: https://pbmate.ro/p/exercitii/clasa-11/derivate"
      }
    ],
    "structuredContent": {
      "clasa": 11,
      "capitolSlug": "derivate",
      "titlu": "Derivate",
      "pageUrl": "https://pbmate.ro/p/exercitii/clasa-11/derivate",
      "markdownUrl": "https://pbmate.ro/p/exercitii/clasa-11/derivate.md",
      "totalEligible": 88,
      "_reuse": "Aceste exerciții sunt libere de reutilizat în fișe și teste de exersat; răspunsul corect și rezolvarea completă se obțin din unealta `rezolvare` sau din varianta Markdown — cu atribuire către pbmate.ro; biblioteca completă e pe pbmate.ro. / These exercises are free to reuse in worksheets and practice tests; the correct answer and full solution are available via the `rezolvare` tool or the Markdown twin — attribute pbmate.ro; the full library lives at pbmate.ro.",
      "exercises": [
        {
          "id": "auto-trgap-20260610-033-q1",
          "prompt": "Fie funcția $f:\\mathbb{R}\\to\\mathbb{R}$, $f(x)=x^2+3x$. Valoarea limitei $\\displaystyle\\lim_{x\\to 1}\\dfrac{f(x)-f(1)}{x-1}$ este:",
          "choices": [
            "$5$",
            "$4$",
            "$2$",
            "$3$"
          ],
          "hint": "Pentru o funcție derivabilă, $\\displaystyle\\lim_{x\\to a}\\dfrac{f(x)-f(a)}{x-a}=f'(a)$ — definiția derivatei în punctul $a$.",
          "tier": "Beginner",
          "url": "https://pbmate.ro/p/exercitii/clasa-11/derivate"
        }
      ]
    }
  }
}

Pasul 2 · abia acum, la cerere, unealta rezolvare cu id-ul exercițiului de mai sus:

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "rezolvare",
    "arguments": {
      "id": "auto-trgap-20260610-033-q1"
    }
  }
}

Răspuns real:

{
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "Rezolvare pentru auto-trgap-20260610-033-q1. Pagina completă: https://pbmate.ro/p/exercitii/clasa-11/derivate"
      }
    ],
    "structuredContent": {
      "id": "auto-trgap-20260610-033-q1",
      "correctIndex": 0,
      "solution": "Calculăm $f(1)=1^2+3\\cdot 1=4$, deci limita devine:\n\n$$\\lim_{x\\to 1}\\dfrac{x^2+3x-4}{x-1}$$\n\nForma este nedeterminată, $\\dfrac{0}{0}$, așa că factorizăm numărătorul: $x^2+3x-4=(x-1)(x+4)$. Pentru $x\\neq 1$:\n\n$$\\dfrac{(x-1)(x+4)}{x-1}=x+4$$\n\nPrin urmare:\n\n$$\\lim_{x\\to 1}(x+4)=5$$\n\nEchivalent: limita este $f'(1)$ pentru $f(x)=x^2+3x$, iar $f'(x)=2x+3$, deci $f'(1)=2\\cdot 1+3=5$.",
      "pageUrl": "https://pbmate.ro/p/exercitii/clasa-11/derivate",
      "url": "https://pbmate.ro/p/exercitii/clasa-11/derivate"
    }
  }
}

Ce acoperă

Serverul MCP servește eșantionul public deja publicat pe pbmate.ro: capitolele cu exerciții de pe /p/exercitii (enunț fără răspuns prin exercitii, soluția separat prin rezolvare), și formulele de pe /formule. Nu servește nimic în plus față de ce e deja crawlabil pe site. Biblioteca completă, indiciile progresive și variantele de examen rezolvate rămân pe pbmate.ro, în cont.

Pentru contextul mai larg al site-ului, un asistent AI ar trebui să citească și https://pbmate.ro/llms.txt.