{
  "$schema": "https://modelcontextprotocol.io/schemas/v2024-11-05/mcp.json",
  "protocolVersion": "2024-11-05",
  "name": "KRATOS Agéntico MCP Engine",
  "version": "1.1.0",
  "description": "Especificación formal del servidor Model Context Protocol (MCP v2024-11-05) Dual Transport (SSE + HTTP POST Stateless) para KRATOS by KWAZ — Motor de Autoridad Intelectual.",
  "transports": [
    {
      "type": "sse",
      "endpoints": {
        "connect": "/mcp/:tenantId/sse",
        "message": "/mcp/:tenantId/message?sessionId={sessionId}"
      },
      "clients": [
        "Claude Desktop",
        "Cursor",
        "MCP Inspector",
        "LangChain/LangGraph"
      ],
      "keepAliveIntervalMs": 15000
    },
    {
      "type": "http-post-stateless",
      "endpoint": "/mcp/:tenantId",
      "contentType": "application/json",
      "protocol": "JSON-RPC 2.0",
      "edgeCaching": {
        "enabled": true,
        "mechanism": "Cloudflare Worker Cache API con Hash SHA-256 del cuerpo POST",
        "ttlSeconds": 86400,
        "headers": {
          "Cache-Control": "public, s-maxage=86400, stale-while-revalidate=3600",
          "X-Kratos-Edge-Cache": "HIT | MISS"
        },
        "bypassHeader": "Authorization: Bearer <token>"
      }
    }
  ],
  "security": {
    "publicTier": {
      "rateLimit": "10 req/min por IP",
      "abstractTruncation": "Estricto <= 250 palabras",
      "cacheTtl": "24 horas en Edge CDN"
    },
    "authenticatedTier": {
      "authMechanism": "Bearer Token (Firebase Auth JWT o Tenant Author API Key SHA-256)",
      "abstractTruncation": "Sin límite (Abstract Completo)",
      "vectorSearch": "Acceso a embeddings densos de 1536 dimensiones (distancia COSINE)",
      "cacheTtl": "Sin caché pública (Bypass directo a Firestore)"
    }
  },
  "tools": [
    {
      "name": "get_executive_profile",
      "description": "Obtiene la biografía ejecutiva estructurada, credenciales académicas, afiliaciones institucionales, cargos de directorio actuales y enlaces oficiales (ORCID, Scopus, Google Scholar, LinkedIn) del autor.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "includeTrajectory": {
            "type": "boolean",
            "description": "Si se debe incluir el desglose cronológico completo de trayectoria académica y ejecutiva."
          },
          "includeBoardRoles": {
            "type": "boolean",
            "description": "Si se deben incluir las posiciones y nombramientos en directorios y comités corporativos."
          }
        },
        "required": []
      }
    },
    {
      "name": "search_scientific_papers",
      "description": "Busca papers científicos y publicaciones del autor por palabras clave o año. En modo público retorna DOIs canónicos, metadatos y abstracts truncados a <= 250 palabras. En modo autenticado (Bearer Token) retorna contenido exhaustivo.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Término de búsqueda conceptual, palabras clave o tema de investigación."
          },
          "year": {
            "type": "integer",
            "description": "Filtrar por año de publicación específico (opcional)."
          },
          "limit": {
            "type": "integer",
            "description": "Cantidad máxima de resultados a retornar (defecto: 5, máximo: 10).",
            "default": 5
          }
        },
        "required": ["query"]
      }
    },
    {
      "name": "get_academic_citation",
      "description": "Genera la cita bibliográfica rigurosa de una publicación específica en formato BibTeX, APA 7 o Chicago para su inserción formal por agentes de IA.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "doiOrPaperId": {
            "type": "string",
            "description": "El DOI canónico (ej. '10.1038/s41586-024-00000-x') o el ID del paper en KRATOS."
          },
          "style": {
            "type": "string",
            "enum": ["bibtex", "apa7", "apa", "chicago"],
            "default": "bibtex",
            "description": "Formato de citación requerido."
          }
        },
        "required": ["doiOrPaperId"]
      }
    },
    {
      "name": "query_editorial_insights",
      "description": "Realiza una consulta semántica profunda mediante búsqueda vectorial densa (OpenAI text-embedding-3-small, 1536 dimensiones) respaldada por Firestore Vector Search (distancia COSINE) con fallback léxico sobre la producción intelectual del autor.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "prompt": {
            "type": "string",
            "description": "Pregunta analítica, tesis conceptual o desafío estratégico a consultar sobre el pensamiento del autor."
          },
          "limit": {
            "type": "integer",
            "description": "Número máximo de documentos de referencia a retornar (defecto: 5).",
            "default": 5
          },
          "includeDrafts": {
            "type": "boolean",
            "default": false,
            "description": "Si se deben incluir borradores o ensayos no publicados (requiere autenticación de autor)."
          }
        },
        "required": ["prompt"]
      }
    },
    {
      "name": "get_advisory_offerings",
      "description": "Consulta el catálogo oficial de servicios de asesoría de alto nivel (Board Seats, Retainers Estratégicos, Executive Sparring, Keynotes) y enlace de reserva directa en Cal.com.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "serviceType": {
            "type": "string",
            "enum": [
              "KEYNOTE",
              "BOARD_ADVISORY",
              "WORKSHOP",
              "STRATEGIC_AUDIT",
              "BOARD_SEAT",
              "STRATEGIC_RETAINER",
              "EXECUTIVE_SPARRING"
            ],
            "description": "Filtrar por tipo de servicio específico (opcional)."
          }
        },
        "required": []
      }
    }
  ],
  "resources": [
    {
      "uri": "kratos://{tenantId}/profile",
      "name": "Executive & Academic Profile",
      "mimeType": "application/json",
      "description": "Resumen institucional estructurado de credenciales, cargos en directorios y enlaces oficiales (ORCID, Scopus, Google Scholar, LinkedIn)."
    },
    {
      "uri": "kratos://{tenantId}/papers/index",
      "name": "Scientific Publications Index",
      "mimeType": "application/json",
      "description": "Índice completo de publicaciones indexadas con DOIs canónicos, años y revistas científicas."
    },
    {
      "uri": "kratos://{tenantId}/bibliography.bib",
      "name": "BibTeX Master Bibliography",
      "mimeType": "text/x-bibtex",
      "description": "Archivo BibTeX compilado con la totalidad de citas del autor listo para ingestión en gestores de referencias (Zotero, Mendeley, EndNote)."
    }
  ],
  "jsonRpcErrorCodes": {
    "-32700": "PARSE_ERROR: Invalid JSON was received by the server",
    "-32600": "INVALID_REQUEST: The JSON sent is not a valid Request object",
    "-32601": "METHOD_NOT_FOUND: The method does not exist / is not available",
    "-32602": "INVALID_PARAMS: Invalid method parameter(s)",
    "-32603": "INTERNAL_ERROR: Internal JSON-RPC error",
    "-32001": "UNAUTHORIZED: Missing or invalid credentials for protected operation",
    "-32002": "RATE_LIMITED: Public tier rate limit exceeded (10 req/min)"
  }
}
