API de IA y MCP
El módulo de IA es central (siempre está montado). Las claves de proveedor se sellan en reposo; las lecturas las enmascaran.
Proveedores
GET /admin/p/{ref}/ai/providers— lista conapi_key_hintenmascarado (ai:read).POST /admin/p/{ref}/ai/providers—{ name, kind, model?, base_url?, api_key?, capabilities?, is_default? }(ai:write).GET /ai/providers/{id}devuelve la clave sin enmascarar para el formulario de edición;PATCH/DELETE /{id}como cabría esperar.
Proveedor kind: openai, anthropic (claude), deepseek, mistral, qwen, zai — o cualquier endpoint compatible con OpenAI mediante base_url.
Traducción en línea
POST /admin/p/{ref}/ai/translate
Traducción BYOK (ai:read). Cuerpo { provider_id?, from, to, text, field? }. Despacha según el tipo de proveedor (Anthropic nativo /v1/messages, o el driver compatible con OpenAI).
{ "data": { "translation": "…", "provider": "…", "model": "…" } }MCP
Da a cualquier cliente MCP (Claude Desktop, Cursor, claude.ai) un endpoint listo para agentes.
POST/GET/DELETE /admin/p/{ref}/ai/mcp/tokens— gestiona tokens MCP (POSTdevuelve el texto plano una sola vez).POST /mcp— el endpoint JSON-RPC de MCP. Auth:Bearer <mcp-token>; el token resuelve el ámbito del proyecto en cada llamada.GET /.well-known/oauth-protected-resource,/.well-known/oauth-authorization-servery/oauth/{register,authorize,token}— descubrimiento + flujo OAuth 2.1 (RFC 9728) para que un cliente pueda conectarse sin un token precompartido.