API d'IA i MCP

El mòdul d'IA és central (sempre està muntat). Les claus de proveïdor es segellen en repòs; les lectures les emmascaren.

Proveïdors

  • GET /admin/p/{ref}/ai/providers — llista amb api_key_hint emmascarat (ai:read).

  • POST /admin/p/{ref}/ai/providers{ name, kind, model?, base_url?, api_key?, capabilities?, is_default? } (ai:write).

  • GET /ai/providers/{id} retorna la clau sense emmascarar per al formulari d'edició; PATCH / DELETE /{id} com era d'esperar.

Proveïdor kind: openai, anthropic (claude), deepseek, mistral, qwen, zai — o qualsevol endpoint compatible amb OpenAI mitjançant base_url.

Traducció en línia

POST /admin/p/{ref}/ai/translate

Traducció BYOK (ai:read). Cos { provider_id?, from, to, text, field? }. Despatxa segons el tipus de proveïdor (Anthropic natiu /v1/messages, o el driver compatible amb OpenAI).

{ "data": { "translation": "…", "provider": "…", "model": "…" } }

MCP

Dona a qualsevol client MCP (Claude Desktop, Cursor, claude.ai) un endpoint a punt per a agents.

  • POST/GET/DELETE /admin/p/{ref}/ai/mcp/tokens — gestiona tokens MCP (POST retorna el text pla una sola vegada).

  • POST /mcp — l'endpoint JSON-RPC de MCP. Auth: Bearer <mcp-token>; el token resol l'àmbit del projecte a cada crida.

  • GET /.well-known/oauth-protected-resource, /.well-known/oauth-authorization-server i /oauth/{register,authorize,token} — descobriment + flux OAuth 2.1 (RFC 9728) perquè un client es pugui connectar sense un token precompartit.