{
  "openapi": "3.0.1",
  "info": {
    "title": "SIS SEO Intelligence System — API Agéntica & WebMCP",
    "description": "Acceso programático a servicios de auditoría SEO técnica, evaluación WebMCP WRS, cálculo del Protocolo Posición Cero™ v1.4, analítica SOSTAC®, evaluación de preparación IA y citabilidad, y herramientas de contenido con Gemini.",
    "version": "1.4.1",
    "contact": {
      "name": "Jairo Amaya",
      "url": "https://jairoamaya.co",
      "email": "hola@jairoamaya.co"
    }
  },
  "servers": [
    {
      "url": "/",
      "description": "Servidor de Producción"
    }
  ],
  "paths": {
    "/mcp": {
      "get": {
        "operationId": "connectMCPServer",
        "summary": "Conectar al servidor MCP SSE nativo",
        "description": "Servidor MCP con transporte SSE para Claude Desktop, Cursor, Windsurf y agentes autónomos.",
        "parameters": [
          {
            "name": "Accept",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": ["text/event-stream"]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Stream SSE activo Event Model v1.1"
          }
        }
      },
      "post": {
        "operationId": "executeMCPMethod",
        "summary": "Ejecutar método JSON-RPC sobre servidor MCP",
        "description": "Endpoint JSON-RPC para initialize, tools/list, tools/call.",
        "responses": {
          "200": {
            "description": "Respuesta JSON-RPC 2.0"
          }
        }
      }
    },
    "/": {
      "get": {
        "operationId": "getWebMCPManifest",
        "summary": "Manifiesto WebMCP sintético",
        "parameters": [
          {
            "name": "format",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": ["mcp"]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Feed ligero en texto plano"
          }
        }
      }
    },
    "/api/webmcp/audit": {
      "get": {
        "operationId": "auditWebMCPReadiness",
        "summary": "Audita la preparación WebMCP WRS de un sitio web",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Resultado de auditoría WRS"
          }
        }
      }
    },
    "/api/posicion-cero/eval": {
      "get": {
        "operationId": "evalPosicionCero",
        "summary": "Calcula el score agéntico IPP x S x WRS",
        "parameters": [
          {
            "name": "target",
            "in": "query",
            "schema": {
              "type": "string",
              "default": "self"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Contrato agéntico Posición Cero™ v1.4"
          }
        }
      }
    },
    "/api/seo/full-audit": {
      "get": {
        "operationId": "fullSeoAudit",
        "summary": "Auditoría SEO técnica en tiempo real",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Análisis SEO técnico y archivos agénticos"
          }
        }
      }
    },
    "/api/seo/ai/evaluate-readiness": {
      "post": {
        "operationId": "evaluateIaReadiness",
        "summary": "Evalúa la preparación de un dominio para agentes de IA",
        "description": "Analiza permisos de crawlers en robots.txt, presencia de /llms.txt, marcado Schema.org y manifiestos WebMCP de un dominio. Devuelve score global, desglose por pilar y plan de acción.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "targetDomain": { "type": "string" }
                },
                "required": ["targetDomain"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Diagnóstico de preparación IA (campo 'source': 'ai' o 'heuristic_fallback')"
          }
        }
      }
    },
    "/api/seo/ai/evaluate-citability": {
      "post": {
        "operationId": "evaluateCitability",
        "summary": "Evalúa la citabilidad de un texto para modelos de IA",
        "description": "Analiza un texto sobre 8 criterios de citabilidad (estructura, datos, autoridad, E-E-A-T, etc.) y devuelve score, veredicto, previews de cómo lo citarían ChatGPT/Gemini y gaps priorizados.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "content": { "type": "string", "minLength": 50 }
                },
                "required": ["content"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Reporte de citabilidad (campo 'source': 'ai' o 'heuristic_fallback')"
          },
          "400": {
            "description": "Contenido ausente o menor a 50 caracteres"
          }
        }
      }
    }
  }
}
