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 5–12. 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ă | Argumente | Ce returnează | JSON static echivalent |
|---|---|---|---|
despre_pbmate | fără argumente | Rezumat, poziționare, preț și legăturile pbmate.ro (inclusiv gemenii .md). | /ai/pbmate.json |
lista_capitole | fără argumente | Toate 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 |
exercitii | clasa (integer, 5–12) · 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) |
rezolvare | id (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 |
formule | capitol (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.