{
  "mcpVersion": "1.0.0",
  "serverInfo": {
    "name": "davidbuenov-static-mcp",
    "version": "1.3.0"
  },
  "transport": {
    "type": "streamable-http",
    "endpoint": "https://davidbuenov.com/mcp"
  },
  "capabilities": {
    "tools": {
      "listChanged": false
    },
    "resources": {
      "subscribe": false,
      "listChanged": false
    },
    "prompts": {
      "listChanged": false
    }
  },
  "_sync_note": "Este array 'tools' documenta los tools reales para descubrimiento estatico (sin necesidad de una llamada tools/list). Debe mantenerse a mano en sincronia con functions/hub-tools.js, functions/chat-tools.js y functions/index.js del repo de produccion (D:\\Programacion\\Web\\davidbuenov) cada vez que se anada o cambie un tool. Ultima sincronizacion: 2026-07-08 (Fase 6 de dbv-control-center: chat tools autenticados).",
  "tools": [
    {
      "name": "getProfileData",
      "description": "Obtiene todos los datos profesionales de David Bueno Vallejo (proyectos, blog, experiencia, publicaciones, habilidades) en JSON.",
      "inputSchema": { "type": "object", "properties": {} }
    },
    {
      "name": "getRecentPosts",
      "description": "Obtiene los artículos más recientes del blog.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": { "type": "number", "description": "Número máximo de artículos a recuperar (por defecto 5)." }
        }
      }
    },
    {
      "name": "getProjects",
      "description": "Obtiene la lista de proyectos de David Bueno Vallejo, opcionalmente filtrados por tecnología.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "tech": { "type": "string", "description": "Filtro de tecnología, ej: 'Unreal' o 'AI'." },
          "limit": { "type": "number", "description": "Número máximo de proyectos a recuperar (por defecto 10)." }
        }
      }
    },
    {
      "name": "getConferences",
      "description": "Obtiene la lista de conferencias y charlas impartidas por David.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": { "type": "number", "description": "Número máximo de conferencias a recuperar (por defecto 10)." }
        }
      }
    },
    {
      "name": "list_projects",
      "description": "Lista los proyectos del hub dbv-control-center, con filtros opcionales por status y priority.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "status": { "type": "string", "enum": ["active", "paused", "archived"] },
          "priority": { "type": "string", "enum": ["high", "medium", "low"] }
        }
      }
    },
    {
      "name": "get_project_context",
      "description": "Devuelve el contexto completo de un proyecto del hub: stack, skills, ultima tarea y decisiones.",
      "inputSchema": {
        "type": "object",
        "properties": { "repo": { "type": "string", "description": "repo_id, p.ej. \"ai-courses-catalog\"" } },
        "required": ["repo"]
      }
    },
    {
      "name": "get_pending_tasks",
      "description": "Cola priorizada de la ultima tarea (last_task) de los proyectos activos del hub.",
      "inputSchema": { "type": "object", "properties": {} }
    },
    {
      "name": "list_skills",
      "description": "Inventario completo de skills del hub, con descripcion y repo de origen.",
      "inputSchema": { "type": "object", "properties": {} }
    },
    {
      "name": "search_skills",
      "description": "Busca skills del hub cuyo nombre o descripcion coincidan con la consulta.",
      "inputSchema": {
        "type": "object",
        "properties": { "query": { "type": "string" } },
        "required": ["query"]
      }
    },
    {
      "name": "trigger_sync",
      "description": "Dispara el sync del hub (workflow_dispatch) para todos los repos o uno concreto. No escribe en Firestore directamente ni espera a que termine.",
      "inputSchema": {
        "type": "object",
        "properties": { "repo": { "type": "string", "description": "repo_id a sincronizar; vacio = todos" } }
      }
    },
    {
      "name": "get_sync_status",
      "description": "Estado completo del ultimo sync del hub: si hay uno en curso, resultado, repos procesados y avisos.",
      "inputSchema": { "type": "object", "properties": {} }
    },
    {
      "name": "list_chat_sessions",
      "description": "Lista las sesiones del chatbot Victoria ordenadas por ultima actividad descendente, con paginacion por cursor (requiere cabecera Authorization: Bearer <token>; sin token responde JSON-RPC -32001)",
      "x-auth": "bearer",
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": { "type": "number", "description": "sesiones por pagina, 1-100 (por defecto 20)" },
          "start_after": { "type": "string", "description": "cursor de paginacion: el next_cursor (ISO 8601) devuelto por la pagina anterior" }
        }
      }
    },
    {
      "name": "get_chat_session",
      "description": "Devuelve los mensajes de una sesion del chatbot Victoria en orden cronologico (requiere cabecera Authorization: Bearer <token>; sin token responde JSON-RPC -32001)",
      "x-auth": "bearer",
      "inputSchema": {
        "type": "object",
        "properties": {
          "session_id": { "type": "string", "description": "id del documento de la sesion, p.ej. \"session_1752862647287-1ueiqqg\"" },
          "limit": { "type": "number", "description": "mensajes maximos, 1-500 (por defecto 200)" }
        },
        "required": ["session_id"]
      }
    }
  ]
}
